From 249ca62ab6dd3be14e6dfbc38065e1e6d72c2b7e Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 15 Nov 2024 15:52:16 +0000 Subject: [PATCH 1/6] zksync wrappers --- .../scripts/native_solc_zksolc_compile_ccip | 235 ++++++++++++++++ contracts/src/v0.8/ccip/test/WETH9.sol | 2 +- core/gethwrappers/abigen.go | 266 +++++++++++++++++- core/gethwrappers/ccip/go_gen_zk.go | 22 ++ core/gethwrappers/generation/generate/wrap.go | 3 +- 5 files changed, 523 insertions(+), 5 deletions(-) create mode 100755 contracts/scripts/native_solc_zksolc_compile_ccip create mode 100644 core/gethwrappers/ccip/go_gen_zk.go diff --git a/contracts/scripts/native_solc_zksolc_compile_ccip b/contracts/scripts/native_solc_zksolc_compile_ccip new file mode 100755 index 0000000000..c85f238b06 --- /dev/null +++ b/contracts/scripts/native_solc_zksolc_compile_ccip @@ -0,0 +1,235 @@ +#!/usr/bin/env bash + +set -e + +echo " ┌──────────────────────────────────────────────┐" +echo " │ Compiling CCIP contracts... │" +echo " └──────────────────────────────────────────────┘" + +SOLC_VERSION="0.8.24" +OPTIMIZE_RUNS=26000 +OPTIMIZE_RUNS_OFFRAMP=18000 +OPTIMIZE_RUNS_ONRAMP=4100 +OPTIMIZE_RUNS_MULTI_OFFRAMP=800 + + +SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +python3 -m pip install --require-hashes -r "$SCRIPTPATH"/requirements.txt +solc-select install $SOLC_VERSION +solc-select use $SOLC_VERSION +export SOLC_VERSION=$SOLC_VERSION + +ROOT="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; cd ../../ && pwd -P )" + +compileContract () { + local contract + contract=$(basename "$1" ".sol") + + local optimize_runs=$OPTIMIZE_RUNS + + case $1 in + "ccip/offRamp/EVM2EVMOffRamp.sol") + echo "OffRamp uses $OPTIMIZE_RUNS_OFFRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_OFFRAMP + ;; + "ccip/offRamp/OffRamp.sol") + echo "MultiOffRamp uses $OPTIMIZE_RUNS_MULTI_OFFRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_MULTI_OFFRAMP + ;; + "ccip/onRamp/EVM2EVMOnRamp.sol") + echo "OnRamp uses $OPTIMIZE_RUNS_ONRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_ONRAMP + ;; + "ccip/test/helpers/CCIPReaderTester.sol") + echo "CCIPReaderTester uses 1 optimizer runs for reduced contract size." + optimize_runs=1 + ;; + esac + + solc --overwrite --optimize --optimize-runs $optimize_runs --metadata-hash none \ + -o "$ROOT"/contracts/solc/v$SOLC_VERSION/"$contract" \ + --abi --bin --allow-paths "$ROOT"/contracts/src/v0.8 \ + --bin-runtime --hashes --metadata --metadata-literal --combined-json abi,hashes,metadata,srcmap,srcmap-runtime \ + --evm-version paris \ + "$ROOT"/contracts/src/v0.8/"$1" +} + +compileContractZK () { + local contract + contract=$(basename "$1" ".sol") + + local optimize_runs=$OPTIMIZE_RUNS + + case $1 in + "ccip/offRamp/EVM2EVMOffRamp.sol") + echo "OffRamp uses $OPTIMIZE_RUNS_OFFRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_OFFRAMP + ;; + "ccip/offRamp/OffRamp.sol") + echo "MultiOffRamp uses $OPTIMIZE_RUNS_MULTI_OFFRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_MULTI_OFFRAMP + ;; + "ccip/onRamp/EVM2EVMOnRamp.sol") + echo "OnRamp uses $OPTIMIZE_RUNS_ONRAMP optimizer runs." + optimize_runs=$OPTIMIZE_RUNS_ONRAMP + ;; + "ccip/test/helpers/CCIPReaderTester.sol") + echo "CCIPReaderTester uses 1 optimizer runs for reduced contract size." + optimize_runs=1 + ;; + esac + + zksolc --overwrite -O3 \ + -o "$ROOT"/contracts/zksolc/v$SOLC_VERSION/"$contract" \ + --bin --allow-paths "$ROOT"/contracts/src/v0.8 \ + --metadata --metadata-literal \ + "$ROOT"/contracts/src/v0.8/"$1" +} + + + + +# Solc produces and overwrites intermediary contracts. +# Contracts should be ordered in reverse-import-complexity-order to minimize overwrite risks. +compileContract ccip/offRamp/EVM2EVMOffRamp.sol +compileContract ccip/offRamp/OffRamp.sol +compileContract ccip/rmn/RMNRemote.sol +compileContract ccip/applications/PingPongDemo.sol +compileContract ccip/applications/SelfFundedPingPong.sol +compileContract ccip/applications/EtherSenderReceiver.sol +compileContract ccip/onRamp/OnRamp.sol +compileContract ccip/onRamp/EVM2EVMOnRamp.sol +compileContract ccip/CommitStore.sol +compileContract ccip/MultiAggregateRateLimiter.sol +compileContract ccip/Router.sol +compileContract ccip/FeeQuoter.sol +compileContract ccip/RMN.sol +compileContract ccip/ARMProxy.sol +compileContract ccip/tokenAdminRegistry/TokenAdminRegistry.sol +compileContract ccip/tokenAdminRegistry/RegistryModuleOwnerCustom.sol +compileContract ccip/capability/CCIPHome.sol +compileContract ccip/NonceManager.sol +compileContract shared/token/ERC677/BurnMintERC677.sol +compileContract ccip/PriceRegistry.sol + + +# Pools +compileContract ccip/pools/LockReleaseTokenPool.sol +compileContract ccip/pools/BurnMintTokenPool.sol +compileContract ccip/pools/BurnFromMintTokenPool.sol +compileContract ccip/pools/BurnWithFromMintTokenPool.sol +compileContract ccip/pools/LockReleaseTokenPoolAndProxy.sol +compileContract ccip/pools/BurnMintTokenPoolAndProxy.sol +compileContract ccip/pools/BurnWithFromMintTokenPoolAndProxy.sol +compileContract ccip/pools/BurnWithFromMintRebasingTokenPool.sol +compileContract ccip/pools/TokenPool.sol + + +# Test helpers +compileContract ccip/test/helpers/BurnMintERC677Helper.sol +compileContract ccip/test/helpers/CommitStoreHelper.sol +compileContract ccip/test/helpers/MessageHasher.sol +compileContract ccip/test/helpers/CCIPReaderTester.sol +compileContract ccip/test/helpers/ReportCodec.sol +compileContract ccip/test/helpers/receivers/MaybeRevertMessageReceiver.sol +compileContract ccip/test/helpers/MultiOCR3Helper.sol +compileContract ccip/test/mocks/MockE2EUSDCTokenMessenger.sol +compileContract ccip/test/mocks/MockE2EUSDCTransmitter.sol +compileContract ccip/test/WETH9.sol + + +# Encoding Utils +compileContract ccip/interfaces/encodingutils/ICCIPEncodingUtils.sol + +# Customer contracts +compileContract ccip/pools/USDC/USDCTokenPool.sol + +compileContract tests/MockV3Aggregator.sol + + + + +compileContractZK ccip/offRamp/EVM2EVMOffRamp.sol +compileContractZK ccip/offRamp/OffRamp.sol +compileContractZK ccip/rmn/RMNRemote.sol +compileContractZK ccip/applications/PingPongDemo.sol +compileContractZK ccip/applications/SelfFundedPingPong.sol +compileContractZK ccip/applications/EtherSenderReceiver.sol +compileContractZK ccip/onRamp/OnRamp.sol +compileContractZK ccip/onRamp/EVM2EVMOnRamp.sol +compileContractZK ccip/CommitStore.sol +compileContractZK ccip/MultiAggregateRateLimiter.sol +compileContractZK ccip/Router.sol +compileContractZK ccip/FeeQuoter.sol +compileContractZK ccip/RMN.sol +compileContractZK ccip/ARMProxy.sol +compileContractZK ccip/tokenAdminRegistry/TokenAdminRegistry.sol +compileContractZK ccip/tokenAdminRegistry/RegistryModuleOwnerCustom.sol +compileContractZK ccip/capability/CCIPHome.sol +compileContractZK ccip/NonceManager.sol +compileContractZK shared/token/ERC677/BurnMintERC677.sol +compileContractZK ccip/PriceRegistry.sol + + +# Pools +compileContractZK ccip/pools/LockReleaseTokenPool.sol +compileContractZK ccip/pools/BurnMintTokenPool.sol +compileContractZK ccip/pools/BurnFromMintTokenPool.sol +compileContractZK ccip/pools/BurnWithFromMintTokenPool.sol +compileContractZK ccip/pools/LockReleaseTokenPoolAndProxy.sol +compileContractZK ccip/pools/BurnMintTokenPoolAndProxy.sol +compileContractZK ccip/pools/BurnWithFromMintTokenPoolAndProxy.sol +compileContractZK ccip/pools/BurnWithFromMintRebasingTokenPool.sol +compileContractZK ccip/pools/TokenPool.sol + + +# Test helpers +compileContractZK ccip/test/helpers/BurnMintERC677Helper.sol +compileContractZK ccip/test/helpers/CommitStoreHelper.sol +compileContractZK ccip/test/helpers/MessageHasher.sol +compileContractZK ccip/test/helpers/CCIPReaderTester.sol +compileContractZK ccip/test/helpers/ReportCodec.sol +compileContractZK ccip/test/helpers/receivers/MaybeRevertMessageReceiver.sol +compileContractZK ccip/test/helpers/MultiOCR3Helper.sol +compileContractZK ccip/test/mocks/MockE2EUSDCTokenMessenger.sol +compileContractZK ccip/test/mocks/MockE2EUSDCTransmitter.sol +# this breaks with paybale error +compileContractZK ccip/test/WETH9.sol + + +# Encoding Utils +compileContractZK ccip/interfaces/encodingutils/ICCIPEncodingUtils.sol + +# Customer contracts +compileContractZK ccip/pools/USDC/USDCTokenPool.sol + +compileContractZK tests/MockV3Aggregator.sol + + +SOLC_VERSION="0.8.19" +solc-select install $SOLC_VERSION +solc-select use $SOLC_VERSION +export SOLC_VERSION=$SOLC_VERSION + +compileContractShared () { + local contract + contract=$(basename "$1" ".sol") + + solc --overwrite --optimize --optimize-runs $OPTIMIZE_RUNS --metadata-hash none \ + -o "$ROOT"/contracts/solc/v$SOLC_VERSION/"$contract" \ + --abi --bin --allow-paths "$ROOT"/contracts/src/v0.8\ + "$ROOT"/contracts/src/v0.8/"$1" +} + +compileContractSharedZK () { + local contract + contract=$(basename "$1" ".sol") + + zksolc --overwrite -O3 \ + -o "$ROOT"/contracts/zksolc/v$SOLC_VERSION/"$contract" \ + --bin --allow-paths "$ROOT"/contracts/src/v0.8 \ + "$ROOT"/contracts/src/v0.8/"$1" +} + +compileContractShared shared/token/ERC677/LinkToken.sol +compileContractSharedZK shared/token/ERC677/LinkToken.sol \ No newline at end of file diff --git a/contracts/src/v0.8/ccip/test/WETH9.sol b/contracts/src/v0.8/ccip/test/WETH9.sol index fbc19ee2c4..db6cd096d5 100644 --- a/contracts/src/v0.8/ccip/test/WETH9.sol +++ b/contracts/src/v0.8/ccip/test/WETH9.sol @@ -46,7 +46,7 @@ contract WETH9 { function withdraw(uint256 wad) external { require(balanceOf[msg.sender] >= wad); balanceOf[msg.sender] -= wad; - payable(msg.sender).transfer(wad); + payable(msg.sender).call{value: wad}(""); emit Withdrawal(msg.sender, wad); } diff --git a/core/gethwrappers/abigen.go b/core/gethwrappers/abigen.go index af085f30d9..b237a4028b 100644 --- a/core/gethwrappers/abigen.go +++ b/core/gethwrappers/abigen.go @@ -28,9 +28,88 @@ const headerComment = `// Code generated - DO NOT EDIT. // AbigenArgs is the arguments to the abigen executable. E.g., Bin is the -bin // arg. type AbigenArgs struct { - Bin, ABI, Out, Type, Pkg string + Bin, ABI, Out, Type, Pkg, ZkBinPath string } +var zkDeployCode = (` +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + // Create the transaction + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} +// this should generated.CustomTransaction +func DeployZkSync%s(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *%s, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(%sZkBin) + fmt.Println("deploying") + %sAbi, err := %sMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := %sAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + // this should generated.ConvertToTransaction + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := %sMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &%s{address: address, abi: *parsed, %sCaller: %sCaller{contract: contractBind}, %sTransactor: %sTransactor{contract: contractBind}, %sFilterer: %sFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} +`) + // Abigen calls Abigen with the given arguments // // It might seem like a shame, to shell out to another golang program like @@ -71,10 +150,17 @@ func Abigen(a AbigenArgs) { Exit("failure while building "+a.Pkg+" wrapper, stderr: "+buildResponse.String(), err) } - ImproveAbigenOutput(a.Out, a.ABI) + zkbytes, err := os.ReadFile(a.ZkBinPath) + if err != nil { + fmt.Println("Error reading file:", err) + return + } + zkHexString := string(zkbytes) + + ImproveAbigenOutput(a.Out, a.ABI, zkHexString) } -func ImproveAbigenOutput(path string, abiPath string) { +func ImproveAbigenOutput(path string, abiPath string, zkHexString string) { abiBytes, err := os.ReadFile(abiPath) if err != nil { Exit("Error while improving abigen output", err) @@ -97,9 +183,20 @@ func ImproveAbigenOutput(path string, abiPath string) { } contractName := getContractName(fileNode) fileNode = addContractStructFields(contractName, fileNode) + + // zksync + fileNode = addZKSyncImports(fset, fileNode) + fileNode = addZKSyncBin(fileNode, contractName, zkHexString) + fileNode = addZKSyncLogic(contractName, fset, fileNode) + fileNode = replaceAnonymousStructs(contractName, fileNode) bs = generateCode(fset, fileNode) bs = writeAdditionalMethods(contractName, logNames, abi, bs) + + // zksync + zkSyncDeployFunction := strings.ReplaceAll(zkDeployCode, "%s", contractName) + bs = append(bs, []byte(fmt.Sprintf("%s\n", zkSyncDeployFunction))...) + err = os.WriteFile(path, bs, 0600) if err != nil { Exit("Error while writing improved abigen source", err) @@ -311,6 +408,169 @@ func addContractStructFieldsToDeployMethod(contractName string, fileNode *ast.Fi }, nil).(*ast.File) } +func updateReturnStatements(funcDecl *ast.FuncDecl, params []ast.Expr) { + // Use ast.Inspect to traverse the entire function body + ast.Inspect(funcDecl.Body, func(n ast.Node) bool { + if returnStmt, ok := n.(*ast.ReturnStmt); ok { + fmt.Println("Found return statement") + if len(returnStmt.Results) > 0 { + if callExpr, ok := returnStmt.Results[0].(*ast.CallExpr); ok { + // Update the arguments of the DeployZkSync function call + fmt.Println("Updating DeployZkSync function call arguments") + callExpr.Args = params + } + } + } + return true + }) +} + +// Add the fields to the returned struct in the 'Deploy' method. +func addZKSyncLogic(contractName string, fset *token.FileSet, fileNode *ast.File) *ast.File { + return astutil.Apply(fileNode, func(cursor *astutil.Cursor) bool { + x, is := cursor.Node().(*ast.FuncDecl) + if !is { + return true + } else if x.Name.Name != "Deploy"+contractName { + return false + } + + // Extract the parameters from the existing function x + var params []ast.Expr + for _, param := range x.Type.Params.List { + for _, name := range param.Names { + params = append(params, ast.NewIdent(name.Name)) + } + } + + newCode := fmt.Sprintf(` + package main + func tempFunc() { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + // this is not sustainable, but it's a quick fix for now + case 324, 280, 300: + return DeployZkSync%s(auth, backend) + } + } + `, contractName) + // Parse the new code snippet as a temporary function to get the statements + tempNode, err := parser.ParseFile(fset, "", newCode, parser.ParseComments) + if err != nil { + panic(err) + } + + for _, decl := range tempNode.Decls { + if funcDecl, ok := decl.(*ast.FuncDecl); ok && funcDecl.Name.Name == "tempFunc" { + fmt.Println("Found function:", funcDecl.Name.Name) + // Update return statements + updateReturnStatements(funcDecl, params) + } + } + + // Extract the body of the temporary function as statements + var newStatements []ast.Stmt + for _, decl := range tempNode.Decls { + if funcDecl, ok := decl.(*ast.FuncDecl); ok && funcDecl.Name.Name == "tempFunc" { + + newStatements = funcDecl.Body.List + break + } + } + x.Body.List = append(newStatements, x.Body.List...) + + // zksync + // x.Type.Results.List[1].Type = &ast.StarExpr{ + // X: &ast.SelectorExpr{ + // X: &ast.Ident{Name: "generated"}, + // Sel: &ast.Ident{Name: "CustomTransaction"}, + // }, + // } + x.Type.Results.List[1].Type = &ast.StarExpr{ + X: &ast.Ident{Name: "CustomTransaction"}, + } + + for _, stmt := range x.Body.List { + returnStmt, is := stmt.(*ast.ReturnStmt) + if !is { + continue + } + if len(returnStmt.Results) < 3 { + continue + } + + // zksync + // convert tx to &CustomTransaction{Transaction: tx, customHash: tx.Hash()} + txExpr, ok := returnStmt.Results[1].(*ast.Ident) + if !ok { + return true + } + if txExpr.Name != "tx" { + return true + } + txField := &ast.KeyValueExpr{ + Key: ast.NewIdent("Transaction"), + Value: ast.NewIdent("tx"), + } + hashField := &ast.KeyValueExpr{ + Key: ast.NewIdent("CustomHash"), + Value: &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: ast.NewIdent("tx"), + Sel: ast.NewIdent("Hash"), + }, + }, + } + newRet := &ast.CompositeLit{ + Type: &ast.Ident{Name: "CustomTransaction"}, + Elts: []ast.Expr{txField, hashField}, + } + pointerRet := &ast.UnaryExpr{Op: token.AND, X: newRet} + returnStmt.Results[1] = pointerRet + } + + return false + }, nil).(*ast.File) +} + +func addZKSyncImports(fset *token.FileSet, fileNode *ast.File) *ast.File { + astutil.AddImport(fset, fileNode, "github.com/ethereum/go-ethereum/ethclient") + astutil.AddImport(fset, fileNode, "context") + astutil.AddNamedImport(fset, fileNode, "zkSyncClient", "github.com/zksync-sdk/zksync2-go/clients") + astutil.AddNamedImport(fset, fileNode, "zkSyncAccounts", "github.com/zksync-sdk/zksync2-go/accounts") + astutil.AddNamedImport(fset, fileNode, "zktypes", "github.com/zksync-sdk/zksync2-go/types") + return fileNode +} + +func addZKSyncBin(fileNode *ast.File, contractName string, zkHexString string) *ast.File { + // zksync + newVarSpec := &ast.ValueSpec{ + Names: []*ast.Ident{ast.NewIdent(fmt.Sprintf("%sZkBin", contractName))}, + Type: ast.NewIdent("string"), + Values: []ast.Expr{ + &ast.BasicLit{ + Kind: token.STRING, + Value: fmt.Sprintf("(\"0x%s\")", zkHexString), + }, + }, + } + newVarDecl := &ast.GenDecl{ + Tok: token.VAR, + Specs: []ast.Spec{newVarSpec}, + } + + // Insert the new variable declaration at the top of the file (before existing functions) + fileNode.Decls = append(fileNode.Decls, newVarDecl) + return fileNode +} + func getLogNames(fileNode *ast.File) []string { var logNames []string astutil.Apply(fileNode, func(cursor *astutil.Cursor) bool { diff --git a/core/gethwrappers/ccip/go_gen_zk.go b/core/gethwrappers/ccip/go_gen_zk.go new file mode 100644 index 0000000000..fccadd089d --- /dev/null +++ b/core/gethwrappers/ccip/go_gen_zk.go @@ -0,0 +1,22 @@ +package ccip + +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.abi ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.bin RMNProxyContract rmn_proxy_contract ../../../contracts/zksolc/v0.8.24/ARMProxy/ARMProxy.sol/ARMProxy.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/RMN/RMN.abi ../../../contracts/solc/v0.8.24/RMN/RMN.bin RMNContract rmn_contract ../../../contracts/zksolc/v0.8.24/RMN/RMN.sol/RMN.zbin + +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.abi ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.bin TokenAdminRegistry token_admin_registry ../../../contracts/zksolc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.sol/TokenAdminRegistry.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.abi ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.bin RegistryModuleOwnerCustom registry_module_owner_custom ../../../contracts/zksolc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.sol/RegistryModuleOwnerCustom.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.bin FeeQuoter fee_quoter ../../../contracts/zksolc/v0.8.24/FeeQuoter/FeeQuoter.sol/FeeQuoter.zbin + +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.bin EVM2EVMOnRamp evm_2_evm_onramp ../../../contracts/zksolc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.sol/EVM2EVMOnRamp.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.bin EVM2EVMOffRamp evm_2_evm_offramp ../../../contracts/zksolc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.sol/EVM2EVMOffRamp.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.abi ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.bin CommitStore commit_store ../../../contracts/zksolc/v0.8.24/CommitStore/CommitStore.sol/CommitStore.zbin + +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin Router router ../../../contracts/zksolc/v0.8.24/Router/Router.sol/Router.zbin +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin PriceRegistry price_registry_1_2_0 ../../../contracts/zksolc/v0.8.24/PriceRegistry/PriceRegistry.sol/PriceRegistry.zbin + +// go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.abi ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.bin LockReleaseTokenPool lock_release_token_pool ../../../contracts/zksolc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.sol/LockReleaseTokenPool.zbin + +//go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.19/LinkToken/LinkToken.abi ../../../contracts/solc/v0.8.19/LinkToken/LinkToken.bin LinkToken link_token ../../../contracts/zksolc/v0.8.19/LinkToken/LinkToken.sol/LinkToken.zbin +//go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/WETH9/WETH9.abi ../../../contracts/solc/v0.8.24/WETH9/WETH9.bin WETH9 weth9 ../../../contracts/zksolc/v0.8.24/WETH9/WETH9.sol/WETH9.zbin + +//go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin SelfFundedPingPong self_funded_ping_pong ../../../contracts/zksolc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.sol/SelfFundedPingPong.zbin diff --git a/core/gethwrappers/generation/generate/wrap.go b/core/gethwrappers/generation/generate/wrap.go index 967e703d39..ddb0ef0526 100644 --- a/core/gethwrappers/generation/generate/wrap.go +++ b/core/gethwrappers/generation/generate/wrap.go @@ -15,6 +15,7 @@ func main() { binPath := os.Args[2] className := os.Args[3] pkgName := os.Args[4] + zkBinPath := os.Args[5] fmt.Println("Generating", pkgName, "contract wrapper") cwd, err := os.Getwd() // gethwrappers directory @@ -28,7 +29,7 @@ func main() { outPath := filepath.Join(outDir, pkgName+".go") gethwrappers2.Abigen(gethwrappers2.AbigenArgs{ - Bin: binPath, ABI: abiPath, Out: outPath, Type: className, Pkg: pkgName, + Bin: binPath, ABI: abiPath, Out: outPath, Type: className, Pkg: pkgName, ZkBinPath: zkBinPath, }) // Build succeeded, so update the versions db with the new contract data From 5e3277e36e66cf30b0e0a20611c3e2c2a339515e Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Sun, 24 Nov 2024 21:30:38 +0000 Subject: [PATCH 2/6] adding wrappers --- contracts/src/v0.8/ccip/PriceRegistry.sol | 264 ++ .../generated/commit_store/commit_store.go | 101 +- .../evm_2_evm_offramp/evm_2_evm_offramp.go | 101 +- .../evm_2_evm_onramp/evm_2_evm_onramp.go | 101 +- .../ccip/generated/fee_quoter/fee_quoter.go | 101 +- .../ccip/generated/link_token/link_token.go | 2165 +++++++++++++++++ .../lock_release_token_pool.go | 101 +- .../registry_module_owner_custom.go | 101 +- .../generated/rmn_contract/rmn_contract.go | 101 +- .../rmn_proxy_contract/rmn_proxy_contract.go | 101 +- .../ccip/generated/router/router.go | 101 +- .../self_funded_ping_pong.go | 101 +- .../token_admin_registry.go | 101 +- .../ccip/generated/weth9/weth9.go | 101 +- ...rapper-dependency-versions-do-not-edit.txt | 3 + 15 files changed, 3620 insertions(+), 24 deletions(-) create mode 100644 contracts/src/v0.8/ccip/PriceRegistry.sol create mode 100644 core/gethwrappers/ccip/generated/link_token/link_token.go diff --git a/contracts/src/v0.8/ccip/PriceRegistry.sol b/contracts/src/v0.8/ccip/PriceRegistry.sol new file mode 100644 index 0000000000..0c88515319 --- /dev/null +++ b/contracts/src/v0.8/ccip/PriceRegistry.sol @@ -0,0 +1,264 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.24; + +import {ITypeAndVersion} from "../shared/interfaces/ITypeAndVersion.sol"; +import {IPriceRegistry} from "./interfaces/IPriceRegistry.sol"; + +import {OwnerIsCreator} from "./../shared/access/OwnerIsCreator.sol"; +import {Internal} from "./libraries/Internal.sol"; +import {USDPriceWith18Decimals} from "./libraries/USDPriceWith18Decimals.sol"; + +import {EnumerableSet} from "../vendor/openzeppelin-solidity/v4.8.3/contracts/utils/structs/EnumerableSet.sol"; + +/// @notice The PriceRegistry contract responsibility is to store the current gas price in USD for a given destination chain, +/// and the price of a token in USD allowing the owner or priceUpdater to update this value. +contract PriceRegistry is IPriceRegistry, OwnerIsCreator, ITypeAndVersion { + using EnumerableSet for EnumerableSet.AddressSet; + using USDPriceWith18Decimals for uint224; + + error TokenNotSupported(address token); + error ChainNotSupported(uint64 chain); + error OnlyCallableByUpdaterOrOwner(); + error StaleGasPrice(uint64 destChainSelector, uint256 threshold, uint256 timePassed); + error StaleTokenPrice(address token, uint256 threshold, uint256 timePassed); + error InvalidStalenessThreshold(); + + event PriceUpdaterSet(address indexed priceUpdater); + event PriceUpdaterRemoved(address indexed priceUpdater); + event FeeTokenAdded(address indexed feeToken); + event FeeTokenRemoved(address indexed feeToken); + event UsdPerUnitGasUpdated(uint64 indexed destChain, uint256 value, uint256 timestamp); + event UsdPerTokenUpdated(address indexed token, uint256 value, uint256 timestamp); + + // solhint-disable-next-line chainlink-solidity/all-caps-constant-storage-variables + string public constant override typeAndVersion = "PriceRegistry 1.2.0"; + + /// @dev The gas price per unit of gas for a given destination chain, in USD with 18 decimals. + /// Multiple gas prices can be encoded into the same value. Each price takes {Internal.GAS_PRICE_BITS} bits. + /// For example, if Optimism is the destination chain, gas price can include L1 base fee and L2 gas price. + /// Logic to parse the price components is chain-specific, and should live in OnRamp. + /// @dev Price of 1e18 is 1 USD. Examples: + /// Very Expensive: 1 unit of gas costs 1 USD -> 1e18 + /// Expensive: 1 unit of gas costs 0.1 USD -> 1e17 + /// Cheap: 1 unit of gas costs 0.000001 USD -> 1e12 + mapping(uint64 destChainSelector => Internal.TimestampedPackedUint224 price) + private s_usdPerUnitGasByDestChainSelector; + + /// @dev The price, in USD with 18 decimals, per 1e18 of the smallest token denomination. + /// @dev Price of 1e18 represents 1 USD per 1e18 token amount. + /// 1 USDC = 1.00 USD per full token, each full token is 1e6 units -> 1 * 1e18 * 1e18 / 1e6 = 1e30 + /// 1 ETH = 2,000 USD per full token, each full token is 1e18 units -> 2000 * 1e18 * 1e18 / 1e18 = 2_000e18 + /// 1 LINK = 5.00 USD per full token, each full token is 1e18 units -> 5 * 1e18 * 1e18 / 1e18 = 5e18 + mapping(address token => Internal.TimestampedPackedUint224 price) private s_usdPerToken; + + // Price updaters are allowed to update the prices. + EnumerableSet.AddressSet private s_priceUpdaters; + // Subset of tokens which prices tracked by this registry which are fee tokens. + EnumerableSet.AddressSet private s_feeTokens; + // The amount of time a price can be stale before it is considered invalid. + uint32 private immutable i_stalenessThreshold; + + constructor(address[] memory priceUpdaters, address[] memory feeTokens, uint32 stalenessThreshold) { + _applyPriceUpdatersUpdates(priceUpdaters, new address[](0)); + _applyFeeTokensUpdates(feeTokens, new address[](0)); + if (stalenessThreshold == 0) revert InvalidStalenessThreshold(); + i_stalenessThreshold = stalenessThreshold; + } + + // ================================================================ + // │ Price calculations │ + // ================================================================ + + // @inheritdoc IPriceRegistry + function getTokenPrice(address token) public view override returns (Internal.TimestampedPackedUint224 memory) { + return s_usdPerToken[token]; + } + + // @inheritdoc IPriceRegistry + function getValidatedTokenPrice(address token) external view override returns (uint224) { + return _getValidatedTokenPrice(token); + } + + // @inheritdoc IPriceRegistry + function getTokenPrices( + address[] calldata tokens + ) external view override returns (Internal.TimestampedPackedUint224[] memory) { + uint256 length = tokens.length; + Internal.TimestampedPackedUint224[] memory tokenPrices = new Internal.TimestampedPackedUint224[](length); + for (uint256 i = 0; i < length; ++i) { + tokenPrices[i] = getTokenPrice(tokens[i]); + } + return tokenPrices; + } + + /// @notice Get the staleness threshold. + /// @return stalenessThreshold The staleness threshold. + function getStalenessThreshold() external view returns (uint128) { + return i_stalenessThreshold; + } + + // @inheritdoc IPriceRegistry + function getDestinationChainGasPrice( + uint64 destChainSelector + ) external view override returns (Internal.TimestampedPackedUint224 memory) { + return s_usdPerUnitGasByDestChainSelector[destChainSelector]; + } + + function getTokenAndGasPrices( + address token, + uint64 destChainSelector + ) external view override returns (uint224 tokenPrice, uint224 gasPriceValue) { + Internal.TimestampedPackedUint224 memory gasPrice = s_usdPerUnitGasByDestChainSelector[destChainSelector]; + // We do allow a gas price of 0, but no stale or unset gas prices + if (gasPrice.timestamp == 0) revert ChainNotSupported(destChainSelector); + uint256 timePassed = block.timestamp - gasPrice.timestamp; + if (timePassed > i_stalenessThreshold) revert StaleGasPrice(destChainSelector, i_stalenessThreshold, timePassed); + + return (_getValidatedTokenPrice(token), gasPrice.value); + } + + /// @inheritdoc IPriceRegistry + /// @dev this function assumes that no more than 1e59 dollars are sent as payment. + /// If more is sent, the multiplication of feeTokenAmount and feeTokenValue will overflow. + /// Since there isn't even close to 1e59 dollars in the world economy this is safe. + function convertTokenAmount( + address fromToken, + uint256 fromTokenAmount, + address toToken + ) external view override returns (uint256) { + /// Example: + /// fromTokenAmount: 1e18 // 1 ETH + /// ETH: 2_000e18 + /// LINK: 5e18 + /// return: 1e18 * 2_000e18 / 5e18 = 400e18 (400 LINK) + return (fromTokenAmount * _getValidatedTokenPrice(fromToken)) / _getValidatedTokenPrice(toToken); + } + + /// @notice Gets the token price for a given token and revert if the token is either + /// not supported or the price is stale. + /// @param token The address of the token to get the price for + /// @return the token price + function _getValidatedTokenPrice(address token) internal view returns (uint224) { + Internal.TimestampedPackedUint224 memory tokenPrice = s_usdPerToken[token]; + if (tokenPrice.timestamp == 0 || tokenPrice.value == 0) revert TokenNotSupported(token); + uint256 timePassed = block.timestamp - tokenPrice.timestamp; + if (timePassed > i_stalenessThreshold) revert StaleTokenPrice(token, i_stalenessThreshold, timePassed); + return tokenPrice.value; + } + + // ================================================================ + // │ Fee tokens │ + // ================================================================ + + /// @notice Get the list of fee tokens. + /// @return The tokens set as fee tokens. + function getFeeTokens() external view returns (address[] memory) { + return s_feeTokens.values(); + } + + /// @notice Add and remove tokens from feeTokens set. + /// @param feeTokensToAdd The addresses of the tokens which are now considered fee tokens + /// and can be used to calculate fees. + /// @param feeTokensToRemove The addresses of the tokens which are no longer considered feeTokens. + function applyFeeTokensUpdates( + address[] memory feeTokensToAdd, + address[] memory feeTokensToRemove + ) external onlyOwner { + _applyFeeTokensUpdates(feeTokensToAdd, feeTokensToRemove); + } + + /// @notice Add and remove tokens from feeTokens set. + /// @param feeTokensToAdd The addresses of the tokens which are now considered fee tokens + /// and can be used to calculate fees. + /// @param feeTokensToRemove The addresses of the tokens which are no longer considered feeTokens. + function _applyFeeTokensUpdates(address[] memory feeTokensToAdd, address[] memory feeTokensToRemove) private { + for (uint256 i = 0; i < feeTokensToAdd.length; ++i) { + if (s_feeTokens.add(feeTokensToAdd[i])) { + emit FeeTokenAdded(feeTokensToAdd[i]); + } + } + for (uint256 i = 0; i < feeTokensToRemove.length; ++i) { + if (s_feeTokens.remove(feeTokensToRemove[i])) { + emit FeeTokenRemoved(feeTokensToRemove[i]); + } + } + } + + // ================================================================ + // │ Price updates │ + // ================================================================ + + // @inheritdoc IPriceRegistry + function updatePrices(Internal.PriceUpdates calldata priceUpdates) external override requireUpdaterOrOwner { + uint256 tokenUpdatesLength = priceUpdates.tokenPriceUpdates.length; + + for (uint256 i = 0; i < tokenUpdatesLength; ++i) { + Internal.TokenPriceUpdate memory update = priceUpdates.tokenPriceUpdates[i]; + s_usdPerToken[update.sourceToken] = Internal.TimestampedPackedUint224({ + value: update.usdPerToken, + timestamp: uint32(block.timestamp) + }); + emit UsdPerTokenUpdated(update.sourceToken, update.usdPerToken, block.timestamp); + } + + uint256 gasUpdatesLength = priceUpdates.gasPriceUpdates.length; + + for (uint256 i = 0; i < gasUpdatesLength; ++i) { + Internal.GasPriceUpdate memory update = priceUpdates.gasPriceUpdates[i]; + s_usdPerUnitGasByDestChainSelector[update.destChainSelector] = Internal.TimestampedPackedUint224({ + value: update.usdPerUnitGas, + timestamp: uint32(block.timestamp) + }); + emit UsdPerUnitGasUpdated(update.destChainSelector, update.usdPerUnitGas, block.timestamp); + } + } + + // ================================================================ + // │ Access │ + // ================================================================ + + /// @notice Get the list of price updaters. + /// @return The price updaters. + function getPriceUpdaters() external view returns (address[] memory) { + return s_priceUpdaters.values(); + } + + /// @notice Adds new priceUpdaters and remove existing ones. + /// @param priceUpdatersToAdd The addresses of the priceUpdaters that are now allowed + /// to send fee updates. + /// @param priceUpdatersToRemove The addresses of the priceUpdaters that are no longer allowed + /// to send fee updates. + function applyPriceUpdatersUpdates( + address[] memory priceUpdatersToAdd, + address[] memory priceUpdatersToRemove + ) external onlyOwner { + _applyPriceUpdatersUpdates(priceUpdatersToAdd, priceUpdatersToRemove); + } + + /// @notice Adds new priceUpdaters and remove existing ones. + /// @param priceUpdatersToAdd The addresses of the priceUpdaters that are now allowed + /// to send fee updates. + /// @param priceUpdatersToRemove The addresses of the priceUpdaters that are no longer allowed + /// to send fee updates. + function _applyPriceUpdatersUpdates( + address[] memory priceUpdatersToAdd, + address[] memory priceUpdatersToRemove + ) private { + for (uint256 i = 0; i < priceUpdatersToAdd.length; ++i) { + if (s_priceUpdaters.add(priceUpdatersToAdd[i])) { + emit PriceUpdaterSet(priceUpdatersToAdd[i]); + } + } + for (uint256 i = 0; i < priceUpdatersToRemove.length; ++i) { + if (s_priceUpdaters.remove(priceUpdatersToRemove[i])) { + emit PriceUpdaterRemoved(priceUpdatersToRemove[i]); + } + } + } + + /// @notice Require that the caller is the owner or a fee updater. + modifier requireUpdaterOrOwner() { + if (msg.sender != owner() && !s_priceUpdaters.contains(msg.sender)) revert OnlyCallableByUpdaterOrOwner(); + _; + } +} \ No newline at end of file diff --git a/core/gethwrappers/ccip/generated/commit_store/commit_store.go b/core/gethwrappers/ccip/generated/commit_store/commit_store.go index b0082a3f0b..8e92870f17 100644 --- a/core/gethwrappers/ccip/generated/commit_store/commit_store.go +++ b/core/gethwrappers/ccip/generated/commit_store/commit_store.go @@ -4,6 +4,7 @@ package commit_store import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -76,7 +81,21 @@ var CommitStoreABI = CommitStoreMetaData.ABI var CommitStoreBin = CommitStoreMetaData.Bin -func DeployCommitStore(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig CommitStoreStaticConfig) (common.Address, *types.Transaction, *CommitStore, error) { +func DeployCommitStore(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig CommitStoreStaticConfig) (common.Address, *CustomTransaction, *CommitStore, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncCommitStore(auth, backend, staticConfig) + } + parsed, err := CommitStoreMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -89,7 +108,7 @@ func DeployCommitStore(auth *bind.TransactOpts, backend bind.ContractBackend, st if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &CommitStore{address: address, abi: *parsed, CommitStoreCaller: CommitStoreCaller{contract: contract}, CommitStoreTransactor: CommitStoreTransactor{contract: contract}, CommitStoreFilterer: CommitStoreFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &CommitStore{address: address, abi: *parsed, CommitStoreCaller: CommitStoreCaller{contract: contract}, CommitStoreTransactor: CommitStoreTransactor{contract: contract}, CommitStoreFilterer: CommitStoreFilterer{contract: contract}}, nil } type CommitStore struct { @@ -1979,6 +1998,8 @@ func (_CommitStore *CommitStoreFilterer) ParseUnpaused(log types.Log) (*CommitSt return event, nil } +var CommitStoreZkBin string = ("0x0003000000000002001800000000000200000060031002700002000000010355000003e60030019d000003e6033001970000000100200190000000310000c13d0000008002000039000000400020043f000000040030008c000000510000413d000000000401043b000000e004400270000003f40040009c0000005c0000a13d000003f50040009c0000006f0000213d000003fd0040009c000000fe0000213d000004010040009c000003fc0000613d000004020040009c000002700000613d000004030040009c000000510000c13d0000000001000416000000000001004b000000510000c13d000000000100041a000003eb021001970000000001000411000000000021004b000004f60000c13d0000000902000039000000000302041a000004480330019700000449033001c7000000000032041b000000800010043f0000000001000414000003e60010009c000003e601008041000000c0011002100000044a011001c70000800d0200003900000001030000390000044b04000041000004590000013d0000000002000416000000000002004b000000510000c13d0000001f02300039000003e7022001970000014002200039000000400020043f0000001f0430018f000003e8053001980000014002500039000000420000613d0000014006000039000000000701034f000000007807043c0000000006860436000000000026004b0000003e0000c13d000000000004004b0000004f0000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000800030008c000000530000813d000000000100001900000f9500010430000000400300043d000003e90030009c000000a80000a13d0000045f01000041000000000010043f0000004101000039000000040010043f000004590100004100000f9500010430000004040040009c000000d30000a13d000004050040009c0000013c0000213d000004090040009c000004860000613d0000040a0040009c000004440000613d0000040b0040009c000000510000c13d0000000001000416000000000001004b000000510000c13d0000000901000039000000000101041a000003ea01100197000000800010043f000004470100004100000f940001042e000003f60040009c000001240000213d000003fa0040009c000004180000613d000003fb0040009c0000027f0000613d000003fc0040009c000000510000c13d0000000001000416000000000001004b000000510000c13d0000041f01000041000000800010043f0000041501000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b00000080011002100000042001100197000000840010043f0000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000201043b0000000001000414000003eb02200197000000040020008c0000054c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000005700000013d0000008001300039000000400010043f000001400100043d000003ea0010009c000000510000213d0000000001130436001000000001001d000001600100043d000003ea0010009c000000510000213d00000010020000290000000000120435000001800100043d000003eb0010009c000000510000213d0000004002300039000f00000002001d0000000000120435000001a00100043d000003eb0010009c000000510000213d000000600230003900000000001204350000000001000411000000000001004b0000050a0000c13d000000400100043d0000004402100039000003f1030000410000000000320435000000240210003900000018030000390000000000320435000003f2020000410000000000210435000000040210003900000020030000390000000000320435000003e60010009c000003e6010080410000004001100210000003f3011001c700000f95000104300000040c0040009c0000014f0000a13d0000040d0040009c0000025c0000613d0000040e0040009c0000015d0000613d0000040f0040009c000000510000c13d000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000004230010009c000000510000213d000000000200041a000003eb022001970000000003000411000000000023004b000004f60000c13d0000042302100197000000400110021000000456011001970000000903000039000000000403041a0000042b05400197000000000115019f000000000013041b00000040014002700000042301100197000000800010043f000000a00020043f0000000001000414000003e60010009c000003e601008041000000c00110021000000445011001c70000800d0200003900000001030000390000045704000041000004590000013d000003fe0040009c000004210000613d000003ff0040009c000002f30000613d000004000040009c000000510000c13d000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000003ea0010009c000000510000213d000000000200041a000003eb022001970000000003000411000000000023004b000004f60000c13d000003ea011001970000000902000039000000000302041a0000043004300197000000000414019f000000000042041b000003ea02300197000000800020043f000000a00010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000445011001c70000800d0200003900000001030000390000044604000041000004590000013d000003f70040009c000004290000613d000003f80040009c000003040000613d000003f90040009c000000510000c13d000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b0f930eba0000040f000000000001004b0000000001000039000000010100c039000000400200043d0000000000120435000003e60020009c000003e602008041000000400120021000000412011001c700000f940001042e000004060040009c000004eb0000613d000004070040009c0000045e0000613d000004080040009c000000510000c13d0000000001000416000000000001004b000000510000c13d000000800000043f000000c001000039000000400010043f0000000801000039000000000101041a000003eb01100197000000a00010043f000000c00010043f0000044e0100004100000f940001042e000004100040009c000003be0000613d000004110040009c000000510000c13d0000000001000416000000000001004b000000510000c13d0000000901000039000000000101041a00000040011002700000042301100197000000800010043f000004470100004100000f940001042e000000c40030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d0000000404200039000000000441034f000000000504043b000003ea0050009c000000560000213d00000005045002100000003f064000390000042706600197000003e90060009c000000560000213d0000008006600039000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000510000213d000000000005004b000001860000613d0000008005000039000000000621034f000000000606043b000003eb0060009c000000510000213d000000200550003900000000006504350000002002200039000000000042004b0000017d0000413d0000002402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000000500001900000429050080410000042904400197000000000004004b00000000060000190000042906004041000004290040009c000000000605c019000000000006004b000000510000c13d0000000404200039000000000441034f000000000404043b000003ea0040009c000000560000213d00000005054002100000003f065000390000042706600197000000400700043d0000000006670019001000000007001d000000000076004b00000000070000390000000107004039000003ea0060009c000000560000213d0000000100700190000000560000c13d000000400060043f00000010060000290000000006460436000f00000006001d00000024022000390000000005250019000000000035004b000000510000213d000000000004004b000001bc0000613d0000001004000029000000000621034f000000000606043b000003eb0060009c000000510000213d000000200440003900000000006404350000002002200039000000000052004b000001b30000413d0000004402100370000000000202043b000e00000002001d000000ff0020008c000000510000213d0000006402100370000000000402043b000003ea0040009c000000510000213d0000002302400039000000000032004b000000000500001900000429050080410000042902200197000000000002004b00000000060000190000042906004041000004290020009c000000000605c019000000000006004b000000510000c13d0000000405400039000000000251034f000000000202043b000003ea0020009c000000560000213d0000001f062000390000046a066001970000003f066000390000046a06600197000000400700043d0000000006670019000d00000007001d000000000076004b00000000070000390000000107004039000003ea0060009c000000560000213d0000000100700190000000560000c13d0000002404400039000000400060043f0000000d060000290000000006260436000c00000006001d0000000004420019000000000034004b000000510000213d0000002004500039000000000541034f0000046a062001980000001f0720018f0000000c04600029000001f80000613d000000000805034f0000000c09000029000000008a08043c0000000009a90436000000000049004b000001f40000c13d000000000007004b000002050000613d000000000565034f0000000306700210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f00000000005404350000000c0220002900000000000204350000008402100370000000000202043b000b00000002001d000003ea0020009c000000510000213d000000a402100370000000000402043b000003ea0040009c000000510000213d0000002302400039000000000032004b000000000500001900000429050080410000042902200197000000000002004b00000000060000190000042906004041000004290020009c000000000605c019000000000006004b000000510000c13d0000000405400039000000000251034f000000000202043b000003ea0020009c000000560000213d0000001f062000390000046a066001970000003f066000390000046a06600197000000400700043d0000000006670019000800000007001d000000000076004b00000000070000390000000107004039000003ea0060009c000000560000213d0000000100700190000000560000c13d0000002404400039000000400060043f00000008060000290000000006260436000700000006001d0000000004420019000000000034004b000000510000213d0000002003500039000000000331034f0000046a042001980000001f0520018f0000000701400029000002430000613d000000000603034f0000000707000029000000006806043c0000000007870436000000000017004b0000023f0000c13d000000000005004b000002500000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000007012000290000000000010435000000800100043d000000200010008c000008990000413d000000400100043d00000458020000410000000000210435000000040210003900000001030000390000000000320435000008a00000013d0000000001000416000000000001004b000000510000c13d000000c001000039000000400010043f0000001101000039000000800010043f0000046701000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e0020000390f930e9a0000040f000000c00110008a000003e60010009c000003e601008041000000600110021000000468011001c700000f940001042e0000000001000416000000000001004b000000510000c13d0000000201000039000000000101041a0000000402000039000000000202041a000003e603200197000000800030043f0000002002200270000003e602200197000000a00020043f000000c00010043f000004440100004100000f940001042e000000e40030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000006402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d000f00040020003d0000000f04100360000000000404043b001000000004001d000003ea0040009c000000510000213d0000002402200039000d00000002001d000e00100020002d0000000e0030006b000000510000213d0000008402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d0000000404200039000000000441034f000000000404043b000c00000004001d000003ea0040009c000000510000213d00000024042000390000000c020000290000000502200210000b00000004001d000a00000002001d0000000002420019000000000032004b000000510000213d000000a402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d0000000404200039000000000441034f000000000404043b000900000004001d000003ea0040009c000000510000213d000800240020003d000000090200002900000005022002100000000802200029000000000032004b000000510000213d0000000902000039000000000202041a0000042200200198000005ca0000c13d0000002401100370000000000101043b000700000001001d0000041f01000041000000800010043f0000041501000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b00000080011002100000042001100197000000840010043f0000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000201043b0000000001000414000003eb02200197000000040020008c0000061c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000006400000013d000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000000000010043f0000000a01000039000000200010043f000000400200003900000000010000190f930f560000040f000000000101041a000000800010043f000004470100004100000f940001042e000000240030008c000000510000413d0000000004000416000000000004004b000000510000c13d0000000404100370000000000404043b000003ea0040009c000000510000213d0000002305400039000000000035004b000000510000813d0000000405400039000000000151034f000000000101043b000d00000001001d000003ea0010009c000000510000213d000c00240040003d0000000d0100002900000005011002100000000c01100029000000000031004b000000510000213d000000000100041a000003eb011001970000000003000411000000000013004b000004f60000c13d0000000d0000006b0000045c0000613d001000000000001d0000032a0000013d00000010030000290000000103300039001000000003001d0000000d0030006c0000045c0000813d000000100100002900000005011002100000000c011000290000000201100367000000000301043b000004130020009c000000560000213d0000004001200039000000400010043f0000002001200039000e00000003001d000000000031043500000000030004100000000000320435000000400400043d000004140300004100000000003404350000000002020433000003eb02200197000000040340003900000000002304350000000001010433000f00000004001d000000240240003900000000001204350000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000201043b0000000001000414000003eb02200197000000040020008c0000035d0000c13d0000000103000031000000200030008c000000200400003900000000040340190000000f0a000029000003860000013d0000000f03000029000003e60030009c000003e6030080410000004003300210000003e60010009c000003e601008041000000c001100210000000000131019f00000417011001c70f930f8e0000040f0000000f0a0000290000006003100270000003e603300197000000200030008c00000020040000390000000004034019000000200640019000000000056a0019000003760000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b000003720000c13d0000001f07400190000003830000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0000000100200190000005ce0000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000390000000101004039000003ea0020009c0000000e04000029000000560000213d0000000100100190000000560000c13d000000400020043f000000200030008c000000510000413d00000000010a0433000000000001004b0000000003000039000000010300c039000000000031004b000000510000c13d000000000001004b000003250000c13d000000000040043f0000000a01000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000e030000290000000100200190000000510000613d000000000101043b000000000001041b000000400100043d0000000000310435000003e60010009c000003e60100804100000040011002100000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f00000419011001c70000800d0200003900000001030000390000041a040000410f930f890000040f0000000100200190000000510000613d000000400200043d000003250000013d0000000001000416000000000001004b000000510000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f0000018001000039000000400010043f0000000001000412001800000001001d001700400000003d000080050100003900000044030000390000000004000415000000180440008a000000050440021000000415020000410f930f6b0000040f000003ea01100197000001000010043f0000000001000412001600000001001d001500600000003d0000000004000415000000160440008a00000005044002100000800501000039000004150200004100000044030000390f930f6b0000040f000003ea01100197000001200010043f0000000001000412001400000001001d001300800000003d0000000004000415000000140440008a00000005044002100000800501000039000004150200004100000044030000390f930f6b0000040f000003eb01100197000001400010043f0000000001000412001200000001001d001100a00000003d0000000004000415000000120440008a00000005044002100000800501000039000004150200004100000044030000390f930f6b0000040f000003eb01100197000001600010043f000001000100003900000180020000390f930e770000040f000004690100004100000f940001042e0000000001000416000000000001004b000000510000c13d0000000101000039000000000201041a000003eb032001970000000006000411000000000036004b000005000000c13d000000000300041a000003ec04300197000000000464019f000000000040041b000003ec02200197000000000021041b0000000001000414000003eb05300197000003e60010009c000003e601008041000000c0011002100000041b011001c70000800d0200003900000003030000390000044d040000410f930f890000040f0000000100200190000000510000613d0000045c0000013d0000000001000416000000000001004b000000510000c13d0000000101000039000000800010043f000000a00000043f000000c00000043f000004440100004100000f940001042e0000000001000416000000000001004b000000510000c13d000000000100041a000003eb01100197000000800010043f000004470100004100000f940001042e000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000003eb0010009c000000510000213d000000000200041a000003eb022001970000000005000411000000000025004b000004f60000c13d000003eb06100197000000000056004b0000053b0000c13d000003f201000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f0000041d01000041000000c40010043f0000041e0100004100000f95000104300000000001000416000000000001004b000000510000c13d000000000100041a000003eb021001970000000001000411000000000021004b000004f60000c13d0000000902000039000000000302041a0000044803300197000000000032041b000000800010043f0000000001000414000003e60010009c000003e601008041000000c0011002100000044a011001c70000800d02000039000000010300003900000450040000410f930f890000040f0000000100200190000000510000613d000000000100001900000f940001042e0000000001000416000000000001004b000000510000c13d0000000702000039000000000102041a000000800010043f000000000020043f0000002002000039000000000001004b000004740000613d000000a0040000390000044f0200004100000000030000190000000005040019000000000402041a000003eb04400197000000000445043600000001022000390000000103300039000000000013004b0000046b0000413d000000600250008a00000080010000390f930e880000040f000000400200043d001000000002001d0000002001000039000000000212043600000080010000390f930eac0000040f00000010020000290000000001210049000003e60010009c000003e6010080410000006001100210000003e60020009c000003e6020080410000004002200210000000000121019f00000f940001042e000000640030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d0000000404200039000000000441034f000000000804043b000003ea0080009c000000510000213d0000002406200039000000050a80021000000000076a0019000000000037004b000000510000213d0000002402100370000000000202043b000003ea0020009c000000510000213d0000002304200039000000000034004b000000510000813d0000000404200039000000000441034f000000000504043b000003ea0050009c000000510000213d000000240220003900000005095002100000000004290019000000000034004b000000510000213d000000090b000039000000000b0b041a0000042200b00198000005ca0000c13d000000440b100370000000000b0b043b00090000000b001d0000003f0aa00039000004270aa00197000003e900a0009c000000560000213d000000800aa0003900070000000a001d0000004000a0043f000000800080043f000000000008004b000004c80000613d0000008008000039000000000a61034f000000000a0a043b00000020088000390000000000a804350000002006600039000000000076004b000004bf0000413d000000400600043d000700000006001d0000003f0690003900000427066001970000000706600029000000070060006c00000000070000390000000107004039000003ea0060009c000000560000213d0000000100700190000000560000c13d000000400060043f00000007060000290000000006560436000600000006001d000000000005004b000500000000001d000004e40000613d0000000705000029000000000621034f000000000606043b000000200550003900000000006504350000002002200039000000000042004b000004da0000413d00000007020000290000000002020433000500000002001d000000800200043d000b00000002001d000000000002004b000005da0000c13d000000400100043d0000045402000041000005350000013d0000000001000416000000000001004b000000510000c13d0000000901000039000000000101041a00000422001001980000000001000039000000010100c039000000800010043f000004470100004100000f940001042e000003f201000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000045501000041000000c40010043f0000041e0100004100000f9500010430000003f201000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000044c01000041000000c40010043f0000041e0100004100000f9500010430000d00000002001d000e00000003001d000000000200041a000003ec02200197000000000112019f000000000010041b000000800000043f000003ed0100004100000000001004430000000001000414000003e60010009c000003e601008041000000c001100210000003ee011001c70000800b020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000000a00010043f0000000902000039000000000302041a000003ef0330019700000001033001bf000000000032041b0000000f040000290000000002040433000003eb00200198000005330000613d0000000e020000290000000002020433000003ea02200198000005330000613d00000010030000290000000003030433000003ea00300198000005330000613d0000000d030000290000000003030433000003eb00300198000005a70000c13d000000400100043d00000466020000410000000000210435000003e60010009c000003e601008041000000400110021000000425011001c700000f95000104300000000101000039000000000201041a000003ec02200197000000000262019f000000000021041b0000000001000414000003e60010009c000003e601008041000000c0011002100000041b011001c70000800d0200003900000003030000390000041c040000410f930f890000040f0000000100200190000000510000613d0000045c0000013d000003e60010009c000003e601008041000000c00110021000000421011001c70f930f8e0000040f0000006003100270000003e603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005600000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000055c0000c13d000000000006004b0000056d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000005890000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000510000413d000000800200043d000000000002004b0000000003000039000000010300c039000000000032004b000000510000c13d000000000002004b0000000002000019000005840000c13d0000000902000039000000000202041a000004220020019800000000020000390000000102006039000000010220018f0000000000210435000000400110021000000412011001c700000f940001042e0000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005900000c13d000000000005004b000005a10000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003e60020009c000003e6020080410000004002200210000000000112019f00000f9500010430000000c00020043f00000010030000290000000003030433000003ea03300197000000e00030043f0000000004040433000003eb04400197000001000040043f0000000d050000290000000005050433000003eb05500197000001200050043f000000800600043d0000014000000443000001600060044300000020060000390000018000600443000001a0001004430000004001000039000001c000100443000001e000200443000000600100003900000200001004430000022000300443000000800100003900000240001004430000026000400443000000a0010000390000028000100443000002a000500443000001000060044300000006010000390000012000100443000003f00100004100000f940001042e0000045101000041000000800010043f000004520100004100000f95000104300000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005d50000c13d000005940000013d0000000b02000029000001010020008c000005e70000213d0000000502000029000001020020008c000005e70000813d0000000b040000290000000502400029000400000002001d000000010220008a000800000002001d000001000020008c000005ea0000a13d000000400100043d0000045302000041000005350000013d000000080000006b0000077b0000c13d000000a002000039000000400100043d000004130010009c000000560000213d00000000030204330000004002100039000000400020043f0000002002100039000f00000003001d0000000000320435000000000300041000000000003104350000041403000041000000400400043d00000000003404350000000001010433000003eb01100197000000040340003900000000001304350000000001020433001000000004001d000000240240003900000000001204350000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000201043b0000000001000414000003eb02200197000000040020008c0000083c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000008650000013d000003e60010009c000003e601008041000000c00110021000000421011001c70f930f8e0000040f0000006003100270000003e603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000006300000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000062c0000c13d000000000006004b0000063d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000082a0000613d0000001f01400039000000600210018f00000080012001bf000600000001001d000000400010043f000000200030008c000000510000413d000000800100043d000000000001004b0000000003000039000000010300c039000000000031004b000000510000c13d000000000001004b000008360000c13d0000001001000029000000200010008c000000510000413d0000000f01000029001000200010003d00000002030003670000001001300360000000000101043b000003ea0010009c000000510000213d0000000d041000290000000e01400069000004260010009c000000510000213d000000800010008c000000510000413d000000000643034f000000e005200039000000400050043f000000000606043b000003ea0060009c000000510000213d00000000064600190000000e07600069000004260070009c000000510000213d000000400070008c000000510000413d000000000863034f0000012007200039000000400070043f000000000808043b000003ea0080009c000000510000213d00000000086800190000001f098000390000000e0090006c000000510000813d000000000983034f000000000a09043b000003ea00a0009c000000560000213d0000000509a002100000003f0990003900000427099001970000000009790019000003ea0090009c000000560000213d000000400090043f0000000000a7043500000020088000390000000609a0021000000000098900190000000e0090006c000000510000213d00000000000a004b00000ad60000c13d00000000007504350000002007600039000000000773034f000000000707043b000003ea0070009c000000510000213d00000000076700190000001f067000390000000e09000029000000000096004b0000000008000019000004290800804100000429066001970000042909900197000000000a96013f000000000096004b000000000600001900000429060040410000042900a0009c000000000608c019000000000006004b000000510000c13d000000000673034f000000000806043b000003ea0080009c000000560000213d00000005068002100000003f066000390000042709600197000000400600043d0000000009960019000000000069004b000000000a000039000000010a004039000003ea0090009c000000560000213d0000000100a00190000000560000c13d000000400090043f00000000008604350000002007700039000000060880021000000000087800190000000e0080006c000000510000213d000000000087004b000006d20000813d00000000090600190000000e0a7000690000042600a0009c000000510000213d0000004000a0008c000000510000413d000000400a00043d0000041300a0009c000000560000213d000000400ba000390000004000b0043f000000000b73034f000000000b0b043b000003ea00b0009c000000510000213d000000000bba0436000000200c700039000000000cc3034f000000000c0c043b0000042800c0009c000000510000213d00000020099000390000000000cb04350000000000a904350000004007700039000000000087004b000006b80000413d00000100072001bf000000000067043500000006060000290000000000560435000000200110008a000004260010009c000000510000213d000000400010008c000000510000413d000000400100043d000004130010009c000000560000213d0000004005100039000000400050043f0000002004400039000000000543034f000000000505043b000003ea0050009c000000510000213d00000000055104360000002004400039000000000643034f000000000606043b000003ea0060009c000000510000213d0000000000650435000000a005200039000400000005001d00000000001504350000002004400039000000000343034f000000000303043b000000c002200039000500000002001d000000000032043500000006020000290000000002020433000300000002001d0000000042020434000e00000004001d0000000002020433000000000002004b000007020000c13d0000000e0200002900000000020204330000000002020433000000000002004b00000bc50000613d000000070200002900000423022001970000000904000039000000000404041a00000040054002700000042305500197000000000025004b00000bc00000813d00000040012002100000042b02400197000000000112019f0000000902000039000000000012041b0000000801000039000000000101041a0000042c020000410000000000200443000003eb01100197000200000001001d00000004001004430000000001000414000003e60010009c000003e601008041000000c0011002100000042d011001c700008002020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000000000001004b000000510000613d000000400500043d0000042e01000041000000000015043500000004015000390000002002000039000000000021043500000003010000290000000003010433000000240150003900000040020000390000000000210435000000640250003900000000040304330000000000420435000700000005001d0000008402500039000000000004004b000007410000613d0000000005000019000000200330003900000000060304330000000076060434000003eb06600197000000000662043600000000070704330000042807700197000000000076043500000040022000390000000105500039000000000045004b000007350000413d00000000011200490000000e03000029000000000303043300000007040000290000004404400039000000000014043500000000040304330000000001420436000000000004004b000007580000613d0000000002000019000000200330003900000000050304330000000065050434000003ea05500197000000000551043600000000060604330000042806600197000000000065043500000040011000390000000102200039000000000042004b0000074c0000413d00000000020004140000000203000029000000040030008c0000076f0000613d00000007030000290000000001310049000003e60010009c000003e6010080410000006001100210000003e60030009c000003e6030080410000004003300210000000000131019f000003e60020009c000003e602008041000000c002200210000000000121019f00000002020000290f930f890000040f0000006003100270000103e60030019d000000010020019000000bda0000613d0000000701000029000003ea0010009c000000560000213d0000000701000029000000400010043f00000005010000290000000003010433000000000003004b00000c880000613d0000000401000029000000000101043300000bc50000013d000000080200002900000005022002100000003f042000390000042704400197000000400500043d0000000004450019000d00000005001d000000000054004b00000000050000390000000105004039000003ea0040009c000000560000213d0000000100500190000000560000c13d000000400040043f0000000d0400002900000008050000290000000004540436000c00000004001d0000001f0420018f000000000002004b000007980000613d000000000131034f0000000c030000290000000002230019000000001501043c0000000003530436000000000023004b000007940000c13d000000000004004b0000000009000019000a00000000001d00000000080000190000000007000019000000010190020f000000ff0090008c0000000001002019000000090210017f000000000012004b000007ac0000c13d0000000b0080006c000007b50000813d000000800100043d000000000081004b00000e4a0000a13d00000005018002100000000108800039000000a002000039000007bc0000013d000000070100002900000000010104330000000a0010006c00000e4a0000a13d0000000a020000290000000501200210000a00010020003d0000000602000029000007bc0000013d0000000d010000290000000001010433000000000071004b00000e4a0000a13d000000050270021000000001077000390000000c01000029000000000112001900000000010104330000000b0080006c000007c70000813d000000800200043d000000000082004b00000e4a0000a13d00000005028002100000000108800039000000a003000039000007ce0000013d0000000d020000290000000002020433000000000072004b00000e4a0000a13d000000050370021000000001077000390000000c02000029000000000097004b000005e70000213d00000000022300190000000004020433000000400200043d00000020032000390000000105000039000000000053043500000060052000390000004006200039000000000041004b001000000007001d000f00000008001d000e00000009001d000007ef0000813d0000000000160435000000000045043500000060010000390000000000120435000003e90020009c000000560000213d0000008001200039000000400010043f000003e60030009c000003e60300804100000040013002100000000002020433000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000008000000013d0000000000460435000000000015043500000060010000390000000000120435000003e90020009c000000560000213d0000008001200039000000400010043f000003e60030009c000003e60300804100000040013002100000000002020433000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d00000010070000290000000f080000290000000d0200002900000000020204330000000e09000029000000000092004b00000e4a0000a13d00000005029002100000000c02200029000000000101043b00000000001204350000000109900039000000080090006c0000079d0000413d0000000401000029000000020110008a000000000017004b000005e70000c13d0000000b0080006c000005e70000c13d0000000a02000029000000050020006c000005e70000c13d0000000d010000290000000001010433000000000071004b00000e4a0000a13d00000005017002100000000c02100029000000400100043d000004130010009c000000560000213d000005f00000013d0000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008310000c13d000005940000013d000004240100004100000006020000290000000000120435000000400120021000000425011001c700000f95000104300000001003000029000003e60030009c000003e6030080410000004003300210000003e60010009c000003e601008041000000c001100210000000000131019f00000417011001c70f930f8e0000040f0000006003100270000003e603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001005700029000008550000613d000000000801034f0000001009000029000000008a08043c0000000009a90436000000000059004b000008510000c13d000000000006004b000008620000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000088d0000613d0000001f01400039000000600110018f0000001002100029000000000012004b00000000010000390000000101004039000003ea0020009c000000560000213d0000000100100190000000560000c13d000000400020043f000000200030008c000000510000413d00000010010000290000000001010433000000000001004b0000000003000039000000010300c039000000000031004b000000510000c13d000000000001004b0000000001000019000001360000613d0000000f01000029000000000010043f0000000a01000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000400200043d000000000101043b000000000101041a000001360000013d0000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008940000c13d000005940000013d0000000e0000006b000008a50000c13d000000400100043d0000045802000041000000000021043500000004021000390000000000020435000003e60010009c000003e601008041000000400110021000000459011001c700000f950001043000000010020000290000000002020433000000000021004b00000ac30000c13d0000000e0200002900000003022000c9000000000021004b00000ac90000a13d000000000100041a000003eb011001970000000002000411000000000012004b00000acf0000c13d0000000d010000290000000001010433000004260010009c000000510000213d000000200010008c000000510000413d000000400100043d000a00000001001d0000045a0010009c000000560000213d0000000a010000290000002001100039000000400010043f0000000c010000290000000002010433000003eb0020009c000000510000213d000003eb012001980000000a030000290000000000230435000005330000613d0000000802000039000000000302041a000003ec03300197000000000113019f000000000012041b0000000901000039000000000201041a0000042b02200197000000000021041b000000400100043d000600000001001d000003e90010009c000000560000213d00000006010000290000008001100039000000400010043f0000041501000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000003ea0110019700000006020000290000000001120436000500000001001d0000041501000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000003ea011001970000000502000029000000000012043500000415010000410000000000100443000000000100041200000004001004430000008001000039000900000001001d00000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d00000006020000290000004002200039000000000101043b000003eb01100197000400000002001d00000000001204350000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000003eb011001970000000603000029000000600230003900000000001204350000000001030433000003ea01100197000000400300043d000000000113043600000005040000290000000004040433000003ea04400197000000000041043500000004010000290000000001010433000003eb01100197000000400430003900000000001404350000000001020433000003eb01100197000000600230003900000000001204350000000a010000290000000001010433000003eb0110019700000080023000390000000000120435000003e60030009c000003e60300804100000040013002100000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000045b011001c70000800d0200003900000001030000390000045c040000410f930f890000040f0000000100200190000000510000613d0000000601000039000000000101041a000600000001001d000000000001004b00000af10000c13d000000800100043d000100000001001d000000000001004b000000000100001900000b240000c13d0000000603000039000000000203041a000000000013041b000000000021004b000009640000813d0000045d0220009a0000045d0310009a000000000023004b000009640000813d000000000003041b0000000103300039000000000023004b000009600000413d0000000602000039000000000020043f000000000001004b000009730000613d000000000200001900000009030000290000002003300039000900000003001d0000000003030433000003eb033001970000045d0420009a000000000034041b0000000102200039000000000012004b000009690000413d00000010010000290000000001010433000003ea0010009c000000560000213d0000000702000039000000000402041a000000000012041b000000000041004b000009840000813d000004390310009a000004390440009a000000000043004b000009840000813d000000000003041b0000000103300039000000000043004b000009800000413d000000000020043f000000000001004b000009910000613d0000000002000019000000100300002900000020033000390000000004030433000003eb04400197000004390520009a000000000045041b0000000102200039000000000012004b000009890000413d0000000301000039000000000201041a0000045e02200197000000010300002900000008033002100000ff000330018f000000000223019f0000000e03000029000f00ff003001930000000f022001af000000000021041b0000000401000039000000000101041a000a00000001001d000003e601100197000900000001001d000003e60010009c00000e500000613d000000400100043d000e00000001001d000003ed0100004100000000001004430000000001000414000003e60010009c000003e601008041000000c001100210000003ee011001c70000800b020000390f930f8e0000040f000000010020019000000cef0000613d000000000201043b0000000e04000029000000800140003900000120030000390000000000310435000000400140003900000000030004100000000000310435000000090100002900000001031000390000006001400039000900000003001d0000000000310435000000200140003900000000002104350000014002400039000000800300043d00000000003204350000016002400039000000000003004b000009ce0000613d0000008004000039000000000500001900000020044000390000000006040433000003eb0660019700000000026204360000000105500039000000000035004b000009c70000413d0000000e040000290000000003420049000000200330008a000000a0044000390000000000340435000000100300002900000000030304330000000002320436000000000003004b000009e10000613d0000000004000019000000100500002900000020055000390000000006050433000003eb0660019700000000026204360000000104400039000000000034004b000009da0000413d0000000e05000029000000c0035000390000000f0400002900000000004304350000000003520049000000200330008a000000e00450003900000000003404350000000d0300002900000000030304330000000002320436000000000003004b000009f60000613d000000000400001900000000052400190000000c06400029000000000606043300000000006504350000002004400039000000000034004b000009ef0000413d000000000423001900000000000404350000001f033000390000046a0330019700000000022300190000000e050000290000000003520049000000200330008a000001200450003900000000003404350000000b03000029000003ea043001970000010003500039000b00000004001d0000000000430435000000080300002900000000030304330000000004320436000000000003004b00000a120000613d000000000500001900000000064500190000000707500029000000000707043300000000007604350000002005500039000000000035004b00000a0b0000413d000000000443001900000000000404350000001f033000390000046a033001970000000e050000290000000003530049000000000223001900000000002504350000003f022000390000046a032001970000000002530019000000000032004b00000000030000390000000103004039000003ea0020009c000000560000213d0000000100300190000000560000c13d000000400020043f000003e60010009c000003e60100804100000040011002100000000e020000290000000002020433000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000004610110019700000462021001c70000000201000039000e00000002001d000000000021041b000004630100004100000000001004430000000001000414000003e60010009c000003e601008041000000c001100210000003ee011001c70000800b020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000000200110021000000464011001970000000a030000290000043002300197000000000112019f0000000904000029000000000141019f0000000402000039000000000012041b000000400100043d00000060021000390000012005000039000000000052043500000020021000390000000e05000029000000000052043500000040021000390000000000420435000000000234019f0000002002200270000003e60220019700000000002104350000012002100039000000800300043d00000000003204350000014002100039000000000003004b00000a6f0000613d0000008004000039000000000500001900000020044000390000000006040433000003eb0660019700000000026204360000000105500039000000000035004b00000a680000413d000000000312004900000080041000390000000000340435000000100300002900000000030304330000000002320436000000000003004b00000a810000613d000000000400001900000010050000290000002005500039001000000005001d0000000005050433000003eb0550019700000000025204360000000104400039000000000034004b00000a780000413d0000000003120049000000c0041000390000000000340435000000a0031000390000000f0400002900000000004304350000000d0300002900000000030304330000000002320436000000000003004b00000a940000613d000000000400001900000000052400190000000c06400029000000000606043300000000006504350000002004400039000000000034004b00000a8d0000413d00000000042300190000000000040435000000e0041000390000000b0500002900000000005404350000001f033000390000046a033001970000000002230019000000000312004900000100041000390000000000340435000000080300002900000000030304330000000002320436000000000003004b00000aac0000613d000000000400001900000000052400190000000706400029000000000606043300000000006504350000002004400039000000000034004b00000aa50000413d000000000423001900000000000404350000001f033000390000046a0330019700000000021200490000000002320019000003e60020009c000003e6020080410000006002200210000003e60010009c000003e6010080410000004001100210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c70000800d0200003900000001030000390000046504000041000004590000013d000000400100043d00000458020000410000000000210435000000040210003900000004030000390000025a0000013d000000400100043d00000458020000410000000000210435000000040210003900000002030000390000025a0000013d000000400100043d00000044021000390000045503000041000000000032043500000024021000390000001603000039000000c80000013d000001400a2000390000000e0b8000690000042600b0009c000000510000213d0000004000b0008c000000510000413d000000400b00043d0000041300b0009c000000560000213d000000400cb000390000004000c0043f000000000c83034f000000000c0c043b000003eb00c0009c000000510000213d000000000ccb0436000000200d800039000000000dd3034f000000000d0d043b0000042800d0009c000000510000213d0000000000dc0435000000000aba04360000004008800039000000000098004b00000ad70000413d000006880000013d000a00000000001d0000000601000039000000000101041a0000000a0010006b00000e4a0000813d0000000a010000290000045d0110009a000000000101041a000003eb01100197000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000000000001041b0000000701000039000000000101041a0000000a0010006c00000e4a0000a13d0000000a01000029000004390110009a000000000101041a000003eb01100197000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000000000001041b0000000a020000290000000102200039000a00000002001d000000060020006c00000af20000413d000009520000013d000a00000000001d000000800100043d0000000a0010006c00000e4a0000a13d0000000a010000290000000501100210000400000001001d000000a0011000390000000001010433000003eb01100197000600000001001d000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000000000101041a0000000801100270000000ff0110018f000000020010008c00000d320000213d000000000001004b00000be70000c13d000000060000006b00000bed0000613d000000400100043d000500000001001d000004130010009c000000560000213d00000005020000290000004001200039000000400010043f00000020032000390000000101000039000300000003001d00000000001304350000000a01000029000000ff0110018f000200000001001d00000000001204350000000601000029000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d00000003020000290000000002020433000000020020008c00000d320000213d00000008022002100000ff000220018f00000005030000290000000003030433000000ff0330018f000000000223019f000000000101043b000000000301041a0000045e03300197000000000232019f000000000021041b000000100100002900000000010104330000000a0010006c00000e4a0000a13d00000004020000290000000f012000290000000001010433000003eb01100197000600000001001d000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000000000101041a0000000801100270000000ff0110018f000000020010008c00000d320000213d000000000001004b00000be70000c13d000000060000006b00000bed0000613d000000400100043d000500000001001d000004130010009c000000560000213d00000005020000290000004001200039000000400010043f000000020100002900000000021204360000000201000039000400000002001d00000000001204350000000601000029000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d00000004020000290000000002020433000000020020008c00000d320000213d00000008022002100000ff000220018f00000005030000290000000003030433000000ff0330018f000000000223019f000000000101043b000000000301041a0000045e03300197000000000232019f000000000021041b0000000a020000290000000102200039000a00000002001d000000010020006c00000b250000413d000000800100043d000003ea0010009c000000560000213d000009570000013d000000000003004b00000bc50000c13d000000400100043d0000042a02000041000005350000013d0000000002010433000003ea022001970000000904000039000000000404041a000e00000004001d000003ea04400197000000000024004b00000bd20000c13d00000020041000390000000004040433000003ea04400197000000000042004b00000bf00000a13d000000400300043d001000000003001d0000044302000041000000000023043500000004023000390f930f4e0000040f000000100100002900000e600000013d000003e6033001970000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000be20000c13d000005940000013d000000400100043d00000458020000410000000000210435000000040210003900000003030000390000025a0000013d000000400100043d0000046002000041000005350000013d000000000003004b00000bf50000c13d000000400100043d0000044202000041000005350000013d000000000030043f0000000a01000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000000000101041a000000000001004b00000cf00000c13d0000000401000029000000000101043300000020011000390000000001010433000003ea02100197000003ea0020009c00000e500000613d0000000e0200002900000430022001970000000101100039000003ea01100197000000000121019f0000000902000039000000000012041b00000005010000290000000001010433000000000010043f0000000a01000039000000200010043f000004310100004100000000001004430000000001000414000003e60010009c000003e601008041000000c001100210000003ee011001c70000800b020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000e00000001001d0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b0000000e02000029000000000021041b0000002002000039000000400100043d00000000022104360000000603000029000000000303043300000080040000390000000000420435000000a002100039000000400400003900000000350304340000000000420435000000e004100039000000000605043300000000006404350000010004100039000000000006004b00000c4f0000613d0000000007000019000000200550003900000000080504330000000098080434000003eb08800197000000000884043600000000090904330000042809900197000000000098043500000040044000390000000107700039000000000067004b00000c430000413d00000000022400490000000003030433000000c005100039000000000025043500000000050304330000000002540436000000000005004b00000c640000613d0000000004000019000000200330003900000000060304330000000076060434000003ea06600197000000000662043600000000070704330000042807700197000000000076043500000040022000390000000104400039000000000054004b00000c580000413d000000040300002900000000030304330000000043030434000003ea03300197000000400510003900000000003504350000000003040433000003ea033001970000006004100039000000000034043500000005030000290000000003030433000000800410003900000000003404350000000002120049000003e60020009c000003e6020080410000006002200210000003e60010009c000003e6010080410000004001100210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c70000800d02000039000000010300003900000432040000410f930f890000040f0000000100200190000000510000613d000000400100043d000700000001001d0000000701000029000004330010009c000000560000213d00000007040000290000006001400039000000400010043f0000000201000039000000000101041a00000000051404360000000302000039000000000202041a000000ff0320018f000600000005001d000000000035043500000040034000390000000802200270000000ff0220018f000700000003001d000000000023043500000004020000390000000202200367000000000202043b000000000021004b00000cf30000c13d0000041501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d000000000101043b000e00000001001d000003ed0100004100000000001004430000000001000414000003e60010009c000003e601008041000000c001100210000003ee011001c70000800b020000390f930f8e0000040f000000010020019000000cef0000613d000000400200043d000000000101043b0000000e0010006b00000cff0000c13d00000002010003670000000403100370000000000303043b00000000033204360000002401100370000000000101043b0000000801100270000003e6011001970000000000130435000003e60020009c000003e60200804100000040012002100000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f00000418011001c70000800d02000039000000010300003900000436040000410f930f890000040f0000000100200190000000510000613d000004150100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000cef0000613d00000006020000290000000002020433000000ff0220018f000000000101043b000000000001004b00000d0b0000c13d000000ff0020008c00000d120000c13d00000e500000013d000000000001042f000000400100043d0000042f02000041000005350000013d000000400300043d000000240430003900000000002404350000043402000041000000000023043500000004023000390000000000120435000003e60030009c000003e603008041000000400130021000000417011001c700000f9500010430000000240320003900000000001304350000043501000041000000000012043500000004012000390000000e030000290000000000310435000003e60020009c000003e602008041000000400120021000000417011001c700000f950001043000000007010000290000000001010433000000ff0110018f0000000001120019000000ff0010008c00000e500000213d000000010210027000000001012000390000000c0010006b00000d380000c13d00000009020000290000000c0020006b00000d3b0000c13d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000400200043d000004130020009c000000560000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f00000000021204360000000803300270000000ff0330018f000000020030008c00000d3e0000a13d0000045f01000041000000000010043f0000002101000039000000040010043f000004590100004100000f9500010430000000400100043d0000043702000041000005350000013d000000400100043d0000043802000041000005350000013d000000000032043500000e560000c13d0000000702000039000000000302041a000000000013004b00000e4a0000a13d000000000020043f000004390110009a000000000101041a000003eb011001970000000002000411000000000012004b00000e560000c13d00000002030003670000000f01300360000000000101043b0000046b0010009c00000e500000213d00000144041000390000000a024000290000000c0000006b00000d560000613d000000000042004b00000e500000413d0000000a0020002a00000e500000413d0000000a052000290000000002000031000000000052004b00000e590000c13d000003ea0010009c000000560000213d0000001f021000390000046a022001970000003f022000390000046a04200197000000400200043d0000000004420019000000000024004b00000000070000390000000107004039000003ea0040009c000000560000213d0000000100700190000000560000c13d000000400040043f00000000041204360000000d07100029000000000057004b000000510000213d00000010053003600000046a061001980000001f0710018f000000000364001900000d7b0000613d000000000805034f0000000009040019000000008a08043c0000000009a90436000000000039004b00000d770000c13d000000000007004b00000d880000613d000000000565034f0000000306700210000000000703043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000053043500000000011400190000000000010435000003e60040009c000003e60400804100000040014002100000000002020433000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000201043b000000400300043d00000020013000390000000000210435001000a00030003d000f00000003001d000000400230003900000004030000390000000203300367000000003403043c0000000002420436000000100020006c00000da50000c13d00000080020000390000000f0300002900000000002304350000043c0030009c000000560000213d0000001002000029000000400020043f000003e60010009c000003e60100804100000040011002100000000f020000290000000002020433000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000000101043b000e00000001001d0000000f010000290000043d0010009c000000560000213d0000000f010000290000048001100039000000400010043f0000001003000029000003e00130003900000000020000310000000202200367000000002402043c0000000003430436000000000013004b00000dcf0000c13d0000000c0000006b0000045c0000613d000f00000000001d0000000f010000290000001f0010008c00000e4a0000213d0000000f0100002900000003011002100000000202000367000000c403200370000000000303043b00000000011301cf0000043e0010009c00000e500000213d0000000f0300002900000005033002100000000b043000290000000803300029000000000332034f000000000242034f000000000202043b000000000303043b000000400400043d0000006005400039000000000035043500000040034000390000000000230435000000f8011002700000001b01100039000000200240003900000000001204350000000e010000290000000000140435000000000000043f000003e60040009c000003e60400804100000040014002100000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000043f011001c700000001020000390f930f8e0000040f0000006003100270000003e603300197000000200030008c00000020050000390000000005034019000000200450019000000e0d0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000e090000c13d0000001f0550019000000e1a0000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f000000010020019000000e650000613d000000000100043d000003eb01100197000000000010043f0000000501000039000000200010043f0000000001000414000003e60010009c000003e601008041000000c00110021000000418011001c700008010020000390f930f8e0000040f0000000100200190000000510000613d000000400200043d000004130020009c000000560000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f00000000021204360000000803300270000000ff0330018f000000020030008c00000d320000213d0000000000320435000000010030008c00000e710000c13d0000001e0010008c00000e4a0000213d000000050110021000000010011000290000000002010433000000000002004b00000e740000c13d000000010200003900000000002104350000000f020000290000000102200039000f00000002001d0000000c0020006c00000dd60000413d0000045c0000013d0000045f01000041000000000010043f0000003201000039000000040010043f000004590100004100000f95000104300000045f01000041000000000010043f0000001101000039000000040010043f000004590100004100000f9500010430000000400100043d0000043a02000041000005350000013d000000400100043d000000240310003900000000002304350000043b02000041000000000021043500000004021000390000000000520435000003e60010009c000003e601008041000000400110021000000417011001c700000f95000104300000001f0530018f000003e806300198000000400200043d0000000004620019000005940000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e6c0000c13d000005940000013d000000400100043d0000044002000041000005350000013d000000400100043d0000044102000041000005350000013d0000000043010434000003ea0330019700000000033204360000000004040433000003ea04400197000000000043043500000040031000390000000003030433000003eb0330019700000040042000390000000000340435000000600220003900000060011000390000000001010433000003eb011001970000000000120435000000000001042d0000001f022000390000046a022001970000000001120019000000000021004b00000000020000390000000102004039000003ea0010009c00000e940000213d000000010020019000000e940000c13d000000400010043f000000000001042d0000045f01000041000000000010043f0000004101000039000000040010043f000004590100004100000f950001043000000000430104340000000001320436000000000003004b00000ea60000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b00000e9f0000413d000000000231001900000000000204350000001f023000390000046a022001970000000001210019000000000001042d000000000301001900000000040104330000000001420436000000000004004b00000eb90000613d000000000200001900000020033000390000000005030433000003eb0550019700000000015104360000000102200039000000000042004b00000eb20000413d000000000001042d0001000000000002000000400200043d0000046c0020009c00000f270000813d0000004003200039000000400030043f00000020032000390000000000130435000000000100041000000000001204350000041401000041000000400400043d00000000001404350000000001020433000003eb01100197000000040240003900000000001204350000000001030433000100000004001d000000240240003900000000001204350000041501000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000003e60010009c000003e601008041000000c00110021000000416011001c700008005020000390f930f8e0000040f000000010020019000000f2f0000613d000000000201043b0000000001000414000003eb02200197000000040020008c00000ee90000c13d0000000103000031000000200030008c00000020040000390000000004034019000000010b00002900000f130000013d0000000103000029000003e60030009c000003e6030080410000004003300210000003e60010009c000003e601008041000000c001100210000000000131019f00000417011001c70f930f8e0000040f000000010b0000290000006003100270000003e603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000f030000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000eff0000c13d000000000006004b00000f100000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000f300000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000003ea0010009c00000f270000213d000000010020019000000f270000c13d000000400010043f0000001f0030008c00000f2d0000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00000f2d0000c13d000000000001042d0000045f01000041000000000010043f0000004101000039000000040010043f000004590100004100000f9500010430000000000100001900000f9500010430000000000001042f0000001f0530018f000003e806300198000000400200043d000000000462001900000f3b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f370000c13d000000000005004b00000f480000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003e60020009c000003e6020080410000004002200210000000000112019f00000f95000104300000000031010434000003ea0110019700000000011204360000000002030433000003ea022001970000000000210435000000000001042d000000000001042f000003e60010009c000003e6010080410000004001100210000003e60020009c000003e6020080410000006002200210000000000112019f0000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000041b011001c700008010020000390f930f8e0000040f000000010020019000000f690000613d000000000101043b000000000001042d000000000100001900000f950001043000000000050100190000000000200443000000050030008c00000f790000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00000f710000413d000003e60030009c000003e60300804100000060013002100000000002000414000003e60020009c000003e602008041000000c002200210000000000112019f0000046d011001c700000000020500190f930f8e0000040f000000010020019000000f880000613d000000000101043b000000000001042d000000000001042f00000f8c002104210000000102000039000000000001042d0000000002000019000000000001042d00000f91002104230000000102000039000000000001042d0000000002000019000000000001042d00000f930000043200000f940001042e00000f95000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000ffffffffffffffffffffffffffffffffffff00ffffffffff000000000000000000000002000000000000000000000000000001c000000100000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000079ba509600000000000000000000000000000000000000000000000000000000afcb95d600000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f47a869000000000000000000000000000000000000000000000000000000000ff888fb100000000000000000000000000000000000000000000000000000000afcb95d700000000000000000000000000000000000000000000000000000000b1dc65a400000000000000000000000000000000000000000000000000000000e89d039f000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000a7206cd600000000000000000000000000000000000000000000000000000000ad7a22f80000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000081ff7048000000000000000000000000000000000000000000000000000000008456cb590000000000000000000000000000000000000000000000000000000032048874000000000000000000000000000000000000000000000000000000005c975aba000000000000000000000000000000000000000000000000000000005c975abb00000000000000000000000000000000000000000000000000000000666cab8d000000000000000000000000000000000000000000000000000000007437ff9f0000000000000000000000000000000000000000000000000000000032048875000000000000000000000000000000000000000000000000000000003f4ba83a000000000000000000000000000000000000000000000000000000004120fccd00000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000001ef381740000000000000000000000000000000000000000000000000000000029b980e40000000000000000000000000000000000000000000000000000000006285c690000000000000000000000000000000000000000000000000000000010c374ed0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf4d61677100000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000202f1139a3e334b6056064c0e9b19fd07e44a88d8f6e5ded571b24cf8c371f120200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c6600000000000000000000000000000000000000000000000000000000640000008000000000000000002cbc26bb000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffff53ad11d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000f803a2ca00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000003937306f00000000000000000000000000000000000000000000000000000000a0bce24f00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132291698c01aa71f912280535d88a00d2c59fb63530a3f5d0098560468acb9ebf5000000000000000000000000000000000000000000000000ffffffffffffff9f93df584c000000000000000000000000000000000000000000000000000000000f01ce8500000000000000000000000000000000000000000000000000000000b04e63db38c49950639fa09d29872f21f5d49d614f3a969d8adf3d4b52e41a6271253a2500000000000000000000000000000000000000000000000000000000a75d88af00000000000000000000000000000000000000000000000000000000599336d74a1247d50642b66dd6abeaa5484f6bd96b415b31bb99e26578c93978da0f08e8000000000000000000000000000000000000000000000000000000008e1192e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000fffffffffffffb7fe4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000080000000000000000000000000ca31867a00000000000000000000000000000000000000000000000000000000f67bc7c400000000000000000000000000000000000000000000000000000000504570e300000000000000000000000000000000000000000000000000000000bb1ae18d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000008000000000000000000200000000000000000000000000000000000040000000800000000000000000ea59e8027e41fda1525220008cf2416797405065eb21b0ebd417bfc6d361b8de0000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000000000000000000000000000000000000100000000000000000000000000020000000000000000000000000000000000002000000080000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2584d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000020000000c00000000000000000a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aaeced32bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000009bde3390000000000000000000000000000000000000000000000000000000011a6b264000000000000000000000000000000000000000000000000000000004f6e6c792063616c6c61626c65206279206f776e65720000000000000000000000000000000000000000000000000000000000ffffffffff0000000000000000f0d557bfce33e354b41885eb9264448726cfe51f486ffa69809d2bf565456444367f56a2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf02000000000000000000000000000000000000a0000000000000000000000000c9d7123efd4203e60b0f0a4b1dbc4800fc97ce63679f71c3a27279b24a7ddec309addddcec1d7ba6ad726df49aeea3e93fb0c1037d551236841a60c0c883f2c1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00004e487b7100000000000000000000000000000000000000000000000000000000d6c62c9b000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000100000000000000000000000000000000000000000000000000000000000042cbb15ccdc3cad6266b0e7a08c0454b23bf29dc2df74b6f3c209e9336465bd1000000000000000000000000000000000000000000000000ffffffff000000001591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e053f8be2be00000000000000000000000000000000000000000000000000000000436f6d6d697453746f726520312e352e300000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000080000001800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebb000000000000000000000000000000000000000000000000ffffffffffffffc002000002000000000000000000000000000000000000000000000000000000001453cac1820952196169d351d1c2d7250a60852f932e7c3ead8ef0218efcfb41") + type LatestConfigDetails struct { ConfigCount uint32 BlockNumber uint32 @@ -2068,6 +2089,82 @@ func (_CommitStore *CommitStore) Address() common.Address { return _CommitStore.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncCommitStore(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *CommitStore, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(CommitStoreZkBin) + fmt.Println("deploying") + CommitStoreAbi, err := CommitStoreMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := CommitStoreAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := CommitStoreMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &CommitStore{address: address, abi: *parsed, CommitStoreCaller: CommitStoreCaller{contract: contractBind}, CommitStoreTransactor: CommitStoreTransactor{contract: contractBind}, CommitStoreFilterer: CommitStoreFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type CommitStoreInterface interface { GetDynamicConfig(opts *bind.CallOpts) (CommitStoreDynamicConfig, error) diff --git a/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go b/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go index d1bfc5b47a..465e05ddb6 100644 --- a/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go +++ b/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go @@ -4,6 +4,7 @@ package evm_2_evm_offramp import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -117,7 +122,21 @@ var EVM2EVMOffRampABI = EVM2EVMOffRampMetaData.ABI var EVM2EVMOffRampBin = EVM2EVMOffRampMetaData.Bin -func DeployEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig EVM2EVMOffRampStaticConfig, rateLimiterConfig RateLimiterConfig) (common.Address, *types.Transaction, *EVM2EVMOffRamp, error) { +func DeployEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig EVM2EVMOffRampStaticConfig, rateLimiterConfig RateLimiterConfig) (common.Address, *CustomTransaction, *EVM2EVMOffRamp, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncEVM2EVMOffRamp(auth, backend, staticConfig, rateLimiterConfig) + } + parsed, err := EVM2EVMOffRampMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -130,7 +149,7 @@ func DeployEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBackend, if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &EVM2EVMOffRamp{address: address, abi: *parsed, EVM2EVMOffRampCaller: EVM2EVMOffRampCaller{contract: contract}, EVM2EVMOffRampTransactor: EVM2EVMOffRampTransactor{contract: contract}, EVM2EVMOffRampFilterer: EVM2EVMOffRampFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &EVM2EVMOffRamp{address: address, abi: *parsed, EVM2EVMOffRampCaller: EVM2EVMOffRampCaller{contract: contract}, EVM2EVMOffRampTransactor: EVM2EVMOffRampTransactor{contract: contract}, EVM2EVMOffRampFilterer: EVM2EVMOffRampFilterer{contract: contract}}, nil } type EVM2EVMOffRamp struct { @@ -2541,6 +2560,8 @@ func (_EVM2EVMOffRamp *EVM2EVMOffRampFilterer) ParseTransmitted(log types.Log) ( return event, nil } +var EVM2EVMOffRampZkBin string = ("0x0004000000000002003400000000000200000060031002700000092b0030019d0000092b03300197000300000031035500020000000103550000000100200190000000d70000c13d0000008002000039000000400020043f000000040030008c000000f80000413d000000000201043b000000e002200270000009430020009c000001030000a13d000009440020009c000001a10000a13d000009450020009c000001cf0000213d000009490020009c000003d30000613d0000094a0020009c000005590000613d0000094b0020009c000000f80000c13d000000640030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000402100370000000000202043b002000000002001d000009300020009c000000f80000213d000000200230006a000009680020009c000000f80000213d000001a40020008c000000f80000413d0000002402100370000000000202043b001f00000002001d000009300020009c000000f80000213d0000001f020000290000002302200039000000000032004b000000f80000813d0000001f020000290000000402200039000000000221034f000000000202043b001e00000002001d000009300020009c000000f80000213d0000001f02000029001d00240020003d0000001e0200002900000005022002100000001d02200029000000000032004b000000f80000213d0000004402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b000000f80000813d0000000404200039000000000441034f000000000504043b000009300050009c000000fd0000213d00000005045002100000003f064000390000095f06600197000009600060009c000000fd0000213d0000008006600039000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000f80000213d000000000005004b000000650000613d0000008003000039000000000521034f000000000505043b0000092b0050009c000000f80000213d000000200330003900000000005304350000002002200039000000000042004b0000005c0000413d0000000001000415001000000001001d000000400100043d001a00000001001d00000000010004100000000002000411000000000012004b00000aa30000c13d0000001a010000290000096a0010009c000000fd0000213d000000200200002900000004052000390000001a030000290000002001300039000000400010043f0000000000030435000201440020003d00000002010003670000000202100360000000000202043b0000000004000031000300000005001d00000000035400490000001f0730008a0000096b087001970000096b03200197000000000583013f000000000083004b00000000030000190000096b03004041000000000072004b00000000060000190000096b060080410000096b0050009c000000000306c019000000000003004b000000f80000c13d0000000302200029000000000321034f000000000303043b000900000003001d000009300030009c000000f80000213d00000009030000290000000606300210000000000564004900000020032000390000096b095001970000096b0a300197000000000b9a013f00000000009a004b00000000090000190000096b09004041000000000053004b00000000050000190000096b050020410000096b00b0009c000000000905c019000000000009004b000000f80000c13d000000090000006b00000c5d0000c13d0000000202000029001f0020002000920000001f02100360000000000202043b0000096b032001970000096b05700197000000000653013f000000000053004b00000000030000190000096b03004041000000000072004b00000000050000190000096b050080410000096b0060009c000000000305c019000000000003004b000000f80000c13d0000000303200029000000000231034f000000000202043b000009300020009c000000f80000213d00000000042400490000002003300039000000000043004b00000000050000190000096b050020410000096b044001970000096b03300197000000000643013f000000000043004b00000000030000190000096b030040410000096b0060009c000000000305c019000000000003004b000000f80000c13d000000000002004b0000147a0000c13d0000001f02000029000000a00220008a000000000221034f0000000003000415000000230330008a001e000500300218000000000202043b000000000002004b002300000000003d002300010000603d0000147e0000c13d000014970000013d000001a004000039000000400040043f0000000002000416000000000002004b000000f80000c13d0000001f023000390000092c02200197000001a002200039000000400020043f0000001f0530018f0000092d06300198000001a002600039000000e90000613d000000000701034f000000007807043c0000000004840436000000000024004b000000e50000c13d000000000005004b000000f60000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000001400030008c000000fa0000813d0000000001000019000024aa00010430000000400300043d0000092e0030009c000001450000a13d000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa00010430000009520020009c000001ae0000213d000009590020009c000002240000a13d0000095a0020009c000003a80000613d0000095b0020009c000004260000613d0000095c0020009c000000f80000c13d0000000001000416000000000001004b000000f80000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f0000000301000039000000000101041a0000093202100197001f00000002001d000001200020043f00000080021002700000092b02200197002000000002001d000001400020043f00000987001001980000000001000039000000010100c039000001600010043f0000000401000039000000000101041a0000093202100197001e00000002001d000001800020043f0000008001100270000001a00010043f0000026001000039000000400010043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f0000093501000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000101043b0000002005000029000000000351004b000007940000813d000009a401000041000000000010043f0000001101000039000000040010043f0000097201000041000024aa00010430000000e001300039000000400010043f000001a00100043d0000092f0010009c000000f80000213d0000000001130436002000000001001d000001c00100043d000009300010009c000000f80000213d00000020020000290000000000120435000001e00100043d000009300010009c000000f80000213d0000004002300039001f00000002001d0000000000120435000002000100043d0000092f0010009c000000f80000213d0000006002300039001e00000002001d0000000000120435000002200100043d0000092f0010009c000000f80000213d0000008002300039001d00000002001d0000000000120435000002400100043d0000092f0010009c000000f80000213d000000a002300039001c00000002001d0000000000120435000002600100043d0000092f0010009c000000f80000213d000000c002300039001b00000002001d0000000000120435000000400100043d000009310010009c000000fd0000213d0000006002100039000000400020043f000002800400043d000000000004004b0000000002000039000000010200c039001a00000004001d000000000024004b000000f80000c13d0000001a020000290000000002210436000002a00400043d001900000004001d000009320040009c000000f80000213d00000019040000290000000000420435000002c00200043d001800000002001d000009320020009c000000f80000213d001600000003001d000000400110003900000018020000290000000000210435000000400100043d001700000001001d0000000001000411000000000001004b00000a4c0000c13d0000001703000029000000440130003900000940020000410000000000210435000000240130003900000018020000390000000000210435000009410100004100000000001304350000000401300039000000200200003900000000002104350000092b0030009c0000092b03008041000000400130021000000942011001c7000024aa000104300000094c0020009c000001ef0000a13d0000094d0020009c000002800000613d0000094e0020009c000003440000613d0000094f0020009c000000f80000c13d0000000001000416000000000001004b000000f80000c13d000000000100041a000006f60000013d000009530020009c000002540000a13d000009540020009c000003bc0000613d000009550020009c000005260000613d000009560020009c000000f80000c13d0000000001000416000000000001004b000000f80000c13d0000000101000039000000000201041a0000092f032001970000000006000411000000000036004b0000077d0000c13d000000000300041a0000093304300197000000000464019f000000000040041b0000093302200197000000000021041b00000000010004140000092f053001970000092b0010009c0000092b01008041000000c001100210000009ab011001c70000800d020000390000000303000039000009af04000041000007db0000013d000009460020009c000003dc0000613d000009470020009c000005f80000613d000009480020009c000000f80000c13d000000240030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000401100370000000000601043b0000092f0060009c000000f80000213d000000000100041a0000092f011001970000000005000411000000000015004b000007bd0000c13d000000000056004b000007ce0000c13d0000094101000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f000009ad01000041000000c40010043f000009aa01000041000024aa00010430000009500020009c000004170000613d000009510020009c000000f80000c13d000000240030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000401100370000000000101043b002000000001001d0000092f0010009c000000f80000213d0000002001000029000000000010043f0000000f01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000101041a0000093002100198000007c70000c13d0000097001000041000000000010044300000000010004120000000400100443000000c001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000400500043d000000000101043b0000092f02100198000008280000c13d00000000010500190000000002000019000007c80000013d0000095d0020009c000006590000613d0000095e0020009c000000f80000c13d000000240030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000401100370000000000101043b002000000001001d000009300010009c000000f80000213d00000020010000290000000701100270000000000010043f0000001001000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d00000020030000290000000102300210000000000101043b000000000101041a0000007f033001900000024a0000613d000000ff0420018f00000000033400d9000000020030008c0000013f0000c13d000000fe0220018f000000000121022f000000030110018f000000400200043d00000000001204350000092b0020009c0000092b020080410000004001200210000009a8011001c7000024a90001042e000009570020009c000006f10000613d000009580020009c000000f80000c13d0000000001000416000000000001004b000000f80000c13d0000000902000039000000000102041a000000800010043f000000000020043f0000002002000039000000000001004b0000026e0000613d000000a004000039000009b40200004100000000030000190000000005040019000000000402041a0000092f04400197000000000445043600000001022000390000000103300039000000000013004b000002650000413d000000600250008a000000800100003924a81d8f0000040f000000400200043d002000000002001d00000020010000390000000002120436000000800100003924a81dbf0000040f000000200200002900000000012100490000092b0010009c0000092b0100804100000060011002100000092b0020009c0000092b020080410000004002200210000000000121019f000024a90001042e000000440030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b000000f80000813d0000000404200039000000000441034f000000000504043b000009300050009c000000fd0000213d00000005045002100000003f044000390000095f04400197000009600040009c000000fd0000213d0000008004400039000000400040043f000000800050043f000000240220003900000006045002100000000004240019000000000034004b000000f80000213d000000000005004b0000080c0000c13d0000002402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000060000190000096b060040410000096b0040009c000000000605c019000000000006004b000000f80000c13d0000000404200039000000000441034f000000000504043b000009300050009c000000fd0000213d00000005045002100000003f044000390000095f04400197000000400600043d0000000004460019001d00000006001d000000000064004b00000000060000390000000106004039000009300040009c000000fd0000213d0000000100600190000000fd0000c13d000000400040043f0000001d040000290000000004540436001b00000004001d000000240220003900000006045002100000000004240019000000000034004b000000f80000213d000000000005004b00000b2e0000c13d000000000100041a0000092f011001970000000002000411000000000012004b000017bb0000c13d000000800100043d000000000001004b00000b4a0000c13d0000001d010000290000000001010433000000000001004b000007de0000613d002000000000001d000002e10000013d0000002002000029002000010020003d0000001d010000290000000001010433000000200010006b000007de0000813d000000200100002900000005011002100000001b01100029001c00000001001d00000000010104330000000012010434001e00000002001d00000000010104330000092f01100197001f00000001001d000000000010043f0000000e01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b0000001e020000290000092f02200197000000000021041b0000001f01000029000000000010043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000101041a000000000001004b000002db0000c13d0000000c03000039000000000103041a000009300010009c000000fd0000213d0000000102100039000000000023041b000009610110009a0000001f02000029000000000021041b000000000103041a001e00000001001d000000000020043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b0000001e02000029000000000021041b0000001d010000290000000001010433000000200010006c00001cca0000a13d0000001c010000290000000001010433000000002101043400000000020204330000092f02200197000000400300043d000000200430003900000000002404350000092f0110019700000000001304350000092b0030009c0000092b03008041000000400130021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f00000962011001c70000800d020000390000000103000039000009a60400004124a8249e0000040f0000000100200190000002db0000c13d000000f80000013d000000440030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000402100370000000000202043b001700000002001d000009300020009c000000f80000213d0000001702000029001600040020003d000000160230006a000009680020009c000000f80000213d000000800020008c000000f80000413d0000010002000039000000400020043f0000001602100360000000000202043b000009300020009c000000f80000213d0000001602200029001a00000002001d0000001f02200039000000000032004b000000f80000813d0000001a02100360000000000202043b000009300020009c000000fd0000213d00000005042002100000003f054000390000095f055001970000097e0050009c000000fd0000213d0000010005500039000000400050043f000001000020043f0000001a050000290000002006500039001900000064001d000000190030006b000000f80000213d000000000002004b000008d70000c13d0000010002000039000000800020043f00000016020000290000002002200039000000000221034f000000000202043b000009300020009c000000f80000213d0000001602200029001c00000002001d0000001f02200039000000000032004b00000000040000190000096b040080410000096b02200197000000000002004b00000000050000190000096b050040410000096b0020009c000000000504c019000000000005004b000000f80000c13d0000001c02100360000000000202043b000009300020009c000000fd0000213d00000005042002100000003f054000390000095f05500197000000400600043d0000000005560019001a00000006001d000000000065004b00000000060000390000000106004039000009300050009c000000fd0000213d0000000100600190000000fd0000c13d000000400050043f0000001a0500002900000000002504350000001c020000290000002005200039001b00000054001d0000001b0030006b000000f80000213d00000000020500190000001b0050006c00000bcb0000813d000000200900008a001e001a0000002d000007030000013d0000000001000416000000000001004b000000f80000c13d000000c001000039000000400010043f0000001401000039000000800010043f000009c501000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e00200003924a81dad0000040f000000c00110008a0000092b0010009c0000092b010080410000006001100210000009c6011001c7000024a90001042e000000240030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000401100370000000000101043b0000092f0010009c000000f80000213d0000000202000039000000000302041a000000000400041a0000092f054001970000000004000411000000000054004b000007870000613d0000092f05300197000000000054004b000007870000613d0000096301000041000000800010043f000009b101000041000024aa000104300000000001000416000000000001004b000000f80000c13d0000000101000039000000800010043f000000a00000043f000000c00000043f0000099c01000041000024a90001042e000000640030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d000000e002000039000000400020043f0000000402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b000000f80000c13d000000800020043f0000002402100370000000000202043b000009320020009c000000f80000213d000000a00020043f0000004401100370000000000101043b000009320010009c000000f80000213d000000c00010043f000000000100041a0000092f021001970000000001000411000000000021004b000003ff0000613d0000000202000039000000000202041a0000092f02200197000000000021004b000008350000c13d0000000301000039000000000101041a002000000001001d0000093501000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000200600002900000080026002700000092b02200197000000000101043b000000000421004b0000013f0000413d000008770000c13d0000000304000039000000000104041a0000088c0000013d0000000001000416000000000001004b000000f80000c13d0000000501000039000000000101041a0000000702000039000000000202041a0000092b03200197000000800030043f00000020022002700000092b02200197000000a00020043f000000c00010043f0000099c01000041000024a90001042e000000c40030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000000402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b000000f80000813d0000000404200039000000000441034f000000000504043b000009300050009c000000fd0000213d00000005045002100000003f064000390000095f06600197000009600060009c000000fd0000213d0000008006600039000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000f80000213d000000000005004b0000044f0000613d0000008005000039000000000621034f000000000606043b0000092f0060009c000000f80000213d000000200550003900000000006504350000002002200039000000000042004b000004460000413d0000002402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000060000190000096b060040410000096b0040009c000000000605c019000000000006004b000000f80000c13d0000000404200039000000000441034f000000000404043b000009300040009c000000fd0000213d00000005054002100000003f065000390000095f06600197000000400700043d0000000006670019002000000007001d000000000076004b00000000070000390000000107004039000009300060009c000000fd0000213d0000000100700190000000fd0000c13d000000400060043f00000020060000290000000006460436001f00000006001d00000024022000390000000005250019000000000035004b000000f80000213d000000000004004b000004850000613d0000002004000029000000000621034f000000000606043b0000092f0060009c000000f80000213d000000200440003900000000006404350000002002200039000000000052004b0000047c0000413d0000004402100370000000000202043b001e00000002001d000000ff0020008c000000f80000213d0000006402100370000000000402043b000009300040009c000000f80000213d0000002302400039000000000032004b00000000050000190000096b050080410000096b02200197000000000002004b00000000060000190000096b060040410000096b0020009c000000000605c019000000000006004b000000f80000c13d0000000405400039000000000251034f000000000202043b000009300020009c000000fd0000213d0000001f06200039000009c8066001970000003f06600039000009c806600197000000400700043d0000000006670019001d00000007001d000000000076004b00000000070000390000000107004039000009300060009c000000fd0000213d0000000100700190000000fd0000c13d0000002404400039000000400060043f0000001d060000290000000006260436001c00000006001d0000000004420019000000000034004b000000f80000213d0000002004500039000000000541034f000009c8062001980000001f0720018f0000001c04600029000004c10000613d000000000805034f0000001c09000029000000008a08043c0000000009a90436000000000049004b000004bd0000c13d000000000007004b000004ce0000613d000000000565034f0000000306700210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f00000000005404350000001c0220002900000000000204350000008402100370000000000202043b001b00000002001d000009300020009c000000f80000213d000000a402100370000000000402043b000009300040009c000000f80000213d0000002302400039000000000032004b00000000050000190000096b050080410000096b02200197000000000002004b00000000060000190000096b060040410000096b0020009c000000000605c019000000000006004b000000f80000c13d0000000405400039000000000251034f000000000202043b000009300020009c000000fd0000213d0000001f06200039000009c8066001970000003f06600039000009c806600197000000400700043d0000000006670019001a00000007001d000000000076004b00000000070000390000000107004039000009300060009c000000fd0000213d0000000100700190000000fd0000c13d0000002404400039000000400060043f0000001a060000290000000006260436001900000006001d0000000004420019000000000034004b000000f80000213d0000002003500039000000000331034f000009c8042001980000001f0520018f00000019014000290000050c0000613d000000000603034f0000001907000029000000006806043c0000000007870436000000000017004b000005080000c13d000000000005004b000005190000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000001901200029000000000001043500000020010000290000000001010433000000200010008c0000149e0000413d000000400100043d000009bb020000410000000000210435000000040210003900000001030000390000000000320435000014a50000013d0000000001000416000000000001004b000000f80000c13d24a81dcd0000040f000000400100043d002000000001001d24a81d840000040f0000000a01000039000000000101041a00000050021002700000092f0220019700000020060000290000006003600039000000000023043500000040021002700000ffff0220018f0000004004600039000000000024043500000020021002700000092b02200197000000200560003900000000002504350000092b01100197000000000016043500000080026000390000000b06000039000000000606041a0000092f066001970000000000620435000000400600043d000000000116043600000000050504330000092b05500197000000000051043500000000010404330000ffff0110018f0000004004600039000000000014043500000000010304330000092f011001970000006003600039000000000013043500000000010204330000092f01100197000000800260003900000000001204350000092b0060009c0000092b060080410000004001600210000009b0011001c7000024a90001042e000000e40030008c000000f80000413d0000000002000416000000000002004b000000f80000c13d0000006402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b000000f80000813d0000000404200039000000000541034f000000000505043b001f00000005001d000009300050009c000000f80000213d00000024052000390020001f0050002d000000200030006b000000f80000213d0000008406100370000000000606043b000009300060009c000000f80000213d0000002307600039000000000037004b000000f80000813d0000000407600039000000000771034f000000000707043b000009300070009c000000f80000213d001600050070021800000016066000290000002406600039000000000036004b000000f80000213d000000a406100370000000000606043b000009300060009c000000f80000213d0000002307600039000000000037004b000000f80000813d0000000407600039000000000771034f000000000707043b000009300070009c000000f80000213d0000001f02000029000000200020008c000000f80000413d001500050070021800000015066000290000002406600039000000000036004b000000f80000213d0000002003400039000000000331034f000000000303043b000009300030009c000000f80000213d0000000003530019001400000003001d0000002003300069000009680030009c000000f80000213d000000800030008c000000f80000413d0000010002000039000000400020043f0000001403100360000000000303043b000009300030009c000000f80000213d0000001402300029001900000002001d0000001f03200039000000200030006c000000f80000813d0000001903100360000000000303043b000009300030009c000000fd0000213d00000005043002100000003f054000390000095f055001970000097e0050009c000000fd0000213d0000010005500039000000400050043f000001000030043f0000001902000029000000200220003900000000050200190000000004240019001800000004001d000000200040006c000000f80000213d000000000003004b000013010000c13d0000010002000039000000800020043f00000014020000290000002003200039000000000331034f000000000303043b000009300030009c000000f80000213d0000001402300029001b00000002001d0000001f022000390000002004000029000000000042004b00000000030000190000096b030080410000096b022001970000096b04400197000000000542013f000000000042004b00000000020000190000096b020040410000096b0050009c000000000203c019000000000002004b000000f80000c13d0000001b02100360000000000302043b000009300030009c000000fd0000213d00000005053002100000003f025000390000095f02200197000000400700043d0000000006270019001900000007001d000000000076004b00000000070000390000000107004039000009300060009c000000fd0000213d0000000100700190000000fd0000c13d000000400060043f000000190200002900000000003204350000001b02000029001d00200020003d0000001d03500029001a00000003001d000000200030006c000000f80000213d0000001a030000290000001d0030006b000017cc0000813d001c00190000002d00000ab50000013d0000000002000416000000000002004b000000f80000c13d0000000c02000039000000000202041a001e00000002001d000009300020009c000000fd0000213d0000001e0200002900000005042002100000003f024000390000095f05200197000009600050009c000000fd0000213d000000000131034f0000008002500039000000400020043f0000001e02000029000000800020043f0000001f0240018f000000000004004b000006150000613d000000a003400039000000a006000039000000000701034f000000007807043c0000000006860436000000000036004b000006110000c13d000000000002004b000000400600043d0000000003560019001d00000006001d000000000063004b00000000050000390000000105004039000009300030009c000000fd0000213d0000000100500190000000fd0000c13d000000400030043f0000001d080000290000001e030000290000000003380436001c00000003001d000000000004004b0000062d0000613d0000001c034000290000001c04000029000000001501043c0000000004540436000000000034004b000006290000c13d000000000002004b00000080070000390000001e0000006b000007e00000c13d000000400100043d000000400200003900000000022104360000004003100039000000800400043d00000000004304350000006003100039000000000004004b000006420000613d0000000005000019000000200770003900000000060704330000092f0660019700000000036304360000000105500039000000000045004b0000063b0000413d0000000004130049000000000042043500000000040804330000000002430436000000000004004b000006500000613d0000000003000019000000200880003900000000050804330000092f0550019700000000025204360000000103300039000000000043004b000006490000413d00000000021200490000092b0020009c0000092b0200804100000060022002100000092b0010009c0000092b010080410000004001100210000000000112019f000024a90001042e0000000001000416000000000001004b000000f80000c13d0000016001000039000000400010043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f24a81da10000040f0000000002000412003400000002001d003300200000003d002000000001001d000080050100003900000044030000390000000004000415000000340440008a0000000504400210000009700200004124a824800000040f0000092f02100197001e00000002001d00000020010000290000000001210436001f00000001001d0000000001000412003200000001001d003100600000003d0000000004000415000000320440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f00000930011001970000001f0200002900000000001204350000000001000412003000000001001d002f00400000003d0000000004000415000000300440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f000009300110019700000020020000290000004002200039001d00000002001d00000000001204350000000001000412002e00000001001d002d00800000003d00000000040004150000002e0440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f0000092f0110019700000020020000290000006002200039001c00000002001d00000000001204350000000001000412002c00000001001d002b00c00000003d00000000040004150000002c0440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f0000092f0110019700000020020000290000008002200039001b00000002001d00000000001204350000000001000412002a00000001001d002900e00000003d00000000040004150000002a0440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f0000092f011001970000002002000029000000a002200039001a00000002001d00000000001204350000000001000412002800000001001d002701000000003d0000000004000415000000280440008a000000050440021000008005010000390000097002000041000000440300003924a824800000040f0000002002000029000000c0022000390000092f011001970000000000120435000000400100043d0000001e0300002900000000033104360000001f040000290000000004040433000009300440019700000000004304350000001d0300002900000000030304330000093003300197000000400410003900000000003404350000001c0300002900000000030304330000092f03300197000000600410003900000000003404350000001b0300002900000000030304330000092f03300197000000800410003900000000003404350000001a0300002900000000030304330000092f03300197000000a004100039000000000034043500000000020204330000092f02200197000000c00310003900000000002304350000092b0010009c0000092b010080410000004001100210000009c7011001c7000024a90001042e0000000001000416000000000001004b000000f80000c13d0000000201000039000000000101041a0000092f01100197000000800010043f0000099d01000041000024a90001042e0000001e020000290000002002200039001e00000002001d0000001f0400002900000000004204350000001d0200002900000020022000390000001b0020006c00000bcb0000813d001d00000002001d000000000221034f000000000202043b000009300020009c000000f80000213d0000001c022000290000003f04200039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000060000190000096b060040410000096b0040009c000000000605c019000000000006004b000000f80000c13d002000200020003d0000002004100360000000000404043b000009300040009c000000fd0000213d00000005054002100000003f065000390000095f06600197000000400700043d0000000006670019001f00000007001d000000000076004b00000000070000390000000107004039000009300060009c000000fd0000213d0000000100700190000000fd0000c13d000000400060043f0000001f060000290000000000460435000000400d2000390000000002d50019000000000032004b000000f80000213d00000000002d004b000006fa0000813d0000001f040000290000073a0000013d00000020044000390000000005ec001900000000000504350000000000f40435000000200dd0003900000000002d004b00000000090b0019000006fa0000813d0000000005d1034f000000000505043b000009300050009c000000f80000213d00000020065000290000003f05600039000000000035004b00000000070000190000096b070080410000096b05500197000000000005004b00000000080000190000096b080040410000096b0050009c000000000807c019000000000008004b000000f80000c13d0000002005600039000000000751034f000000000e07043b0000093000e0009c000000fd0000213d0000001f07e00039000000000797016f0000003f07700039000000000797016f000000400f00043d00000000087f00190000000000f8004b00000000070000390000000107004039000009300080009c000000fd0000213d0000000100700190000000fd0000c13d0000004006600039000000400080043f000000000cef043600000000066e0019000000000036004b000000f80000213d0000002005500039000000000751034f000000000b090019000000000a9e01700000000005ac00190000076f0000613d000000000807034f00000000060c0019000000008908043c0000000006960436000000000056004b0000076b0000c13d0000001f06e00190000007320000613d0000000007a7034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000007320000013d0000094101000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f000009ae01000041000000c40010043f000009aa01000041000024aa000104300000093303300197000000000313019f000000000032041b000000800010043f00000000010004140000092b0010009c0000092b01008041000000c001100210000009b2011001c70000800d020000390000000103000039000009b304000041000007db0000013d000001a00200043d000009320420019700000000023400a9000000000051004b0000079c0000613d00000000033200d9000000000043004b0000013f0000c13d0000001f0020002a0000013f0000413d0000001f022000290000001e0020006b00000000030200190000001e03004029000001200030043f0000092b01100197000001400010043f000000400100043d0000000002310436000001400300043d0000092b033001970000000000320435000001600200043d000000000002004b0000000002000039000000010200c03900000040031000390000000000230435000001800200043d000009320220019700000060031000390000000000230435000001a00200043d0000093202200197000000800310003900000000002304350000092b0010009c0000092b010080410000004001100210000009b0011001c7000024a90001042e0000094101000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f000009a901000041000000c40010043f000009aa01000041000024aa00010430000000400100043d00000000002104350000092b0010009c0000092b010080410000004001100210000009a8011001c7000024a90001042e0000000101000039000000000201041a0000093302200197000000000262019f000000000021041b00000000010004140000092b0010009c0000092b01008041000000c001100210000009ab011001c70000800d020000390000000303000039000009ac0400004124a8249e0000040f0000000100200190000000f80000613d0000000001000019000024a90001042e00000000040000190000000c01000039000000000101041a000000000041004b00001cca0000a13d002000000004001d000009610140009a000000000101041a001f00000001001d000000000010043f0000000e01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000800200043d0000002004000029000000000042004b0000001d0800002900001cca0000a13d000000000101043b000000000101041a0000092f021001970000000501400210000000a00310003900000000002304350000000002080433000000000042004b00001cca0000a13d0000001c011000290000001f020000290000092f02200197000000000021043500000001044000390000001e0040006c0000008007000039000007e10000413d000006310000013d00000080050000390000000006230049000009680060009c000000f80000213d000000400060008c000000f80000413d000000400600043d0000096c0060009c000000fd0000213d0000004007600039000000400070043f000000000721034f000000000707043b0000092f0070009c000000f80000213d00000000077604360000002008200039000000000881034f000000000808043b0000092f0080009c000000f80000213d0000002005500039000000000087043500000000006504350000004002200039000000000042004b0000080d0000413d000002a00000013d000009a70100004100000000001504350000000401500039000000200300002900000000003104350000000001000414000000040020008c000008390000c13d0000000103000031000000200030008c00000020040000390000000004034019000008660000013d0000096301000041000000e00010043f0000096401000041000024aa000104300000092b0050009c0000092b03000041000000000305401900000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f00000972011001c7002000000005001d24a824a30000040f00000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000200b0000290000002005700029000008540000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000008500000c13d000000000006004b000008610000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000008b90000613d00000000050b00190000001f01400039000000600210018f0000000001520019000000000021004b00000000020000390000000102004039000009300010009c000000fd0000213d0000000100200190000000fd0000c13d000000400010043f000000200030008c000000f80000413d0000000002050433000009300020009c000007c80000a13d000000f80000013d0000000402000039000000000202041a000000800520027000000000034500a900000000044300d9000000000054004b0000013f0000c13d0000093204600197000000000043001a0000013f0000413d00000000034300190000093202200197000000000032004b000000000203801900000080011002100000093801100197000000000112019f0000000304000039000000000204041a0000093302200197000000000121019f000000a00200043d00000932022001970000093203100197000000000032004b00000000030240190000096501100197000000000113019f000000800300043d000000000003004b0000000003000019000009370300c041000000000131019f000000000014041b000000c00100043d0000008001100210000000000121019f0000000402000039000000000012041b0000000001000039000000010100c039000000400200043d0000000001120436000000a00300043d00000932033001970000000000310435000000c00100043d0000093201100197000000400320003900000000001304350000092b0020009c0000092b02008041000000400120021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f00000966011001c70000800d020000390000000103000039000009670400004124a8249e0000040f0000000100200190000007de0000c13d000000f80000013d0000001f0530018f0000092d06300198000000400200043d0000000004620019000008c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008c00000c13d000000000005004b000008d10000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000092b0020009c0000092b020080410000004002200210000000000112019f000024aa000104300000000002060019001c01200000003d0018002000300092000000200b00008a000008ed0000013d0000001f0500002900000160025000390000001d0400002900000000004204350000001e02000029000001a002200039000000000221034f000000000202043b000001800450003900000000002404350000001c020000290000000002520436001c00000002001d0000001b020000290000002002200039000000190020006c000003730000813d001b00000002001d000000000221034f000000000202043b000009300020009c000000f80000213d0000001a04200029001e00000004001d0000001802400069000009680020009c000000f80000213d000001a00020008c000000f80000413d000000400200043d001f00000002001d000009950020009c000000fd0000213d0000001f02000029000001a002200039000000400020043f0000001e020000290000002002200039000000000421034f000000000404043b000009300040009c000000f80000213d0000001f0500002900000000044504360000002002200039000000000521034f000000000505043b0000092f0050009c000000f80000213d00000000005404350000002002200039000000000421034f000000000404043b0000092f0040009c000000f80000213d0000001f05000029000000400550003900000000004504350000002002200039000000000421034f000000000404043b000009300040009c000000f80000213d0000001f06000029000000600560003900000000004504350000002004200039000000000441034f000000000404043b000000800560003900000000004504350000004002200039000000000421034f000000000404043b000000000004004b0000000005000039000000010500c039000000000054004b000000f80000c13d0000001f05000029000000a00550003900000000004504350000002002200039000000000421034f000000000404043b000009300040009c000000f80000213d0000001f05000029000000c00550003900000000004504350000002002200039000000000421034f000000000404043b0000092f0040009c000000f80000213d0000001f06000029000000e00560003900000000004504350000002004200039000000000441034f000000000404043b000001000560003900000000004504350000004002200039000000000421034f000000000404043b000009300040009c000000f80000213d0000001e064000290000003f04600039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000070000190000096b070040410000096b0040009c000000000705c019000000000007004b000000f80000c13d0000002008600039000000000481034f000000000404043b000009300040009c000000fd0000213d0000001f054000390000000005b5016f0000003f055000390000000007b5016f000000400500043d0000000007750019000000000057004b00000000090000390000000109004039000009300070009c000000fd0000213d0000000100900190000000fd0000c13d0000004009600039000000400070043f00000000064504360000000007940019000000000037004b000000f80000213d0000002007800039000000000971034f0000000007b401700000000008760019000009780000613d000000000a09034f000000000c06001900000000ad0a043c000000000cdc043600000000008c004b000009740000c13d0000001f0a400190000009850000613d000000000779034f0000000309a00210000000000a080433000000000a9a01cf000000000a9a022f000000000707043b0000010009900089000000000797022f00000000079701cf0000000007a7019f0000000000780435000000000446001900000000000404350000001f04000029000001200440003900000000005404350000002002200039000000000421034f000000000404043b000009300040009c000000f80000213d0000001e054000290000003f04500039000000000034004b00000000060000190000096b060080410000096b04400197000000000004004b00000000070000190000096b070040410000096b0040009c000000000706c019000000000007004b000000f80000c13d0000002004500039000000000441034f000000000604043b000009300060009c000000fd0000213d00000005046002100000003f044000390000095f07400197000000400400043d0000000007740019000000000047004b00000000080000390000000108004039000009300070009c000000fd0000213d0000000100800190000000fd0000c13d0000004005500039000000400070043f000000000064043500000006066002100000000006560019000000000036004b000000f80000213d000000000056004b000009cf0000a13d00000000080400190000000007530049000009680070009c000000f80000213d000000400070008c000000f80000413d000000400700043d0000096c0070009c000000fd0000213d0000004009700039000000400090043f000000000951034f000000000909043b0000092f0090009c000000f80000213d00000020088000390000000009970436000000200a500039000000000aa1034f000000000a0a043b0000000000a9043500000000007804350000004005500039000000000065004b000009b70000413d0000001f05000029000001400550003900000000004504350000002002200039000000000221034f000000000202043b000009300020009c000000f80000213d0000001e022000290000003f04200039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000060000190000096b060040410000096b0040009c000000000605c019000000000006004b000000f80000c13d002000200020003d0000002004100360000000000504043b000009300050009c000000fd0000213d00000005065002100000003f046000390000095f04400197000000400800043d0000000007480019001d00000008001d000000000087004b00000000040000390000000104004039000009300070009c000000fd0000213d0000000100400190000000fd0000c13d000000400070043f0000001d04000029000000000054043500000040052000390000000002560019000000000032004b000000f80000213d000000000025004b000008dc0000813d0000001d0f00002900000a090000013d000000200ff000390000000004640019000000000004043500000000008f04350000002005500039000000000025004b000000000b0e0019000008dc0000813d000000000451034f000000000404043b000009300040009c000000f80000213d000000200a4000290000003f04a00039000000000034004b00000000060000190000096b060080410000096b04400197000000000004004b00000000070000190000096b070040410000096b0040009c000000000706c019000000000007004b000000f80000c13d0000002009a00039000000000491034f000000000604043b000009300060009c000000fd0000213d0000001f046000390000000004b4016f0000003f044000390000000004b4016f000000400800043d0000000007480019000000000087004b00000000040000390000000104004039000009300070009c000000fd0000213d0000000100400190000000fd0000c13d000000400aa00039000000400070043f00000000046804360000000007a60019000000000037004b000000f80000213d0000002007900039000000000d71034f000000000e0b0019000000000cb601700000000009c4001900000a3e0000613d00000000070d034f000000000a040019000000007b07043c000000000aba043600000000009a004b00000a3a0000c13d0000001f0760019000000a010000613d000000000acd034f0000000307700210000000000b090433000000000b7b01cf000000000b7b022f000000000a0a043b0000010007700089000000000a7a022f00000000077a01cf0000000007b7019f000000000079043500000a010000013d000000000200041a0000093302200197000000000112019f000000000010041b0000001701000029000009340010009c000000fd0000213d0000001702000029000000a001200039000000400010043f00000019010000290000000001120436001500000001001d0000093501000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000101043b0000092b0210019700000015030000290000000000230435000000170300002900000080023000390000001805000029000000000052043500000060023000390000001904000029000000000042043500000040023000390000001a030000290000000000320435000000000003004b0000000002000019000009370200c04100000080011002100000093801100197000000000112019f0000000302000039000000000302041a0000093903300197000000000131019f000000000141019f000000000012041b0000008001500210000000000141019f0000000402000039000000000012041b0000093a01000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000800010043f0000001e0100002900000000010104330000092f0010019800000a9b0000613d000000160100002900000000010104330000092f0210019800000a9b0000613d0000001b0100002900000000010104330000092f00100198000012510000c13d000000400100043d000009c40200004100000000002104350000092b0010009c0000092b0100804100000040011002100000093c011001c7000024aa0001043000000969010000410000001a0200002900000000001204350000092b0020009c0000092b0200804100000040012002100000093c011001c7000024aa000104300000001c020000290000002002200039001c00000002001d0000001e0300002900000000003204350000001d020000290000002002200039001d00000002001d0000001a0020006c000017cc0000813d0000001d02100360000000000302043b000009300030009c000000f80000213d0000001b033000290000003f02300039000000200020006c00000000050000190000096b050080410000096b02200197000000000642013f000000000042004b00000000020000190000096b020040410000096b0060009c000000000205c019000000000002004b000000f80000c13d000000200b3000390000000002b1034f000000000502043b000009300050009c000000fd0000213d00000005065002100000003f026000390000095f02200197000000400800043d0000000007280019001e00000008001d000000000087004b00000000080000390000000108004039000009300070009c000000fd0000213d0000000100800190000000fd0000c13d000000400070043f0000001e020000290000000000520435000000400d3000390000000003d60019000000200030006c000000f80000213d00000000003d004b00000aab0000813d0000001e0e00002900000aeb0000013d000000200ee000390000000002f90019000000000002043500000000006e0435000000200dd0003900000000003d004b00000aab0000813d0000000002d1034f000000000502043b000009300050009c000000f80000213d0000000005b500190000003f02500039000000200020006c00000000060000190000096b060080410000096b02200197000000000742013f000000000042004b00000000020000190000096b020040410000096b0070009c000000000206c019000000000002004b000000f80000c13d0000002008500039000000000281034f000000000f02043b0000093000f0009c000000fd0000213d0000001f02f00039000009c8022001970000003f02200039000009c802200197000000400600043d0000000007260019000000000067004b00000000090000390000000109004039000009300070009c000000fd0000213d0000000100900190000000fd0000c13d0000004002500039000000400070043f0000000009f6043600000000022f0019000000200020006c000000f80000213d0000002002800039000000000c21034f000009c807f00198000000000879001900000b200000613d000000000a0c034f000000000509001900000000a20a043c0000000005250436000000000085004b00000b1c0000c13d0000001f05f0019000000ae40000613d00000000027c034f0000000305500210000000000708043300000000075701cf000000000757022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000272019f000000000028043500000ae40000013d0000001d050000290000000006230049000009680060009c000000f80000213d000000400060008c000000f80000413d000000400600043d0000096c0060009c000000fd0000213d0000004007600039000000400070043f000000000721034f000000000707043b0000092f0070009c000000f80000213d00000000077604360000002008200039000000000881034f000000000808043b0000092f0080009c000000f80000213d0000002005500039000000000087043500000000006504350000004002200039000000000042004b00000b2f0000413d000002cd0000013d000000000200001900000b510000013d0000001f020000290000000102200039000000800100043d000000000012004b000002d50000813d001f00000002001d0000000501200210000000a001100039001e00000001001d0000000001010433000000200110003900000000010104330000092f01100197002000000001001d000000000010043f0000000e01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000001041b0000002001000029000000000010043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000301041a000000000003004b00000b4c0000613d0000000c01000039000000000201041a000000000002004b0000013f0000613d000000010130008a000000000032004b00000b9b0000613d000000000012004b00001cca0000a13d000009a30130009a000009a30220009a000000000202041a000000000021041b000000000020043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c70000801002000039001c00000003001d24a824a30000040f0000001c030000290000000100200190000000f80000613d000000000101043b000000000031041b0000000c01000039000000000301041a000000000003004b000012ef0000613d000000010130008a000009a30230009a000000000002041b0000000c02000039000000000012041b0000002001000029000000000010043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000001041b000000800100043d0000001f0010006c00001cca0000a13d0000001e010000290000000001010433000000002101043400000000020204330000092f02200197000000400300043d000000200430003900000000002404350000092f0110019700000000001304350000092b0030009c0000092b03008041000000400130021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f00000962011001c70000800d020000390000000103000039000009a50400004124a8249e0000040f000000010020019000000b4c0000c13d000000f80000013d0000001a02000029000000a00020043f00000017020000290000004402200039000000000421034f000000000404043b000009300040009c000000f80000213d00000016054000290000001f04500039000000000034004b00000000060000190000096b060080410000096b04400197000000000004004b00000000070000190000096b070040410000096b0040009c000000000706c019000000000007004b000000f80000c13d000000000451034f000000000604043b000009300060009c000000fd0000213d00000005076002100000003f047000390000095f08400197000000400400043d0000000008840019000000000048004b00000000090000390000000109004039000009300080009c000000fd0000213d0000000100900190000000fd0000c13d000000400080043f000000000064043500000020055000390000000006570019000000000036004b000000f80000213d000000000065004b00000c000000813d0000000007040019000000000851034f000000000808043b000000200770003900000000008704350000002005500039000000000065004b00000bf90000413d000000c00040043f0000002002200039000000000221034f000000000202043b000000e00020043f0000002402100370000000000202043b000009300020009c000000f80000213d0000002304200039000000000034004b00000000050000190000096b050080410000096b04400197000000000004004b00000000060000190000096b060040410000096b0040009c000000000605c019000000000006004b000000f80000c13d0000000404200039000000000441034f000000000604043b000009300060009c000000fd0000213d00000005056002100000003f045000390000095f04400197000000400700043d0000000004470019001b00000007001d000000000074004b00000000070000390000000107004039000009300040009c000000fd0000213d0000000100700190000000fd0000c13d000000400040043f0000001b040000290000000004640436001a00000004001d00000024042000390000000005450019000000000035004b000000f80000213d000000000006004b000018b10000c13d0000097001000041000000000010044300000000010004120000000400100443000000240000044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000101043b002000000001001d0000093a01000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000200010006b0000194c0000c13d000000800100043d00000000020104330000001b010000290000000001010433001900000002001d000000000012004b000019540000c13d000000190000006b00001aa90000c13d00000080010000390000001b0200002924a81df70000040f0000000001000019000024a90001042e00000020050000290000002405500039000000000951034f000000000909043b0000092f0090009c000000f80000213d000000400b00043d000000200ab0003900000000009a0435000000200900003900000000009b043500080000000b001d0000096c00b0009c000000fd0000213d00000008090000290000004009900039000000400090043f0000002009500039000000000591034f000000000505043b0000092f0050009c000000f80000213d0000012009900039000000000991034f000000000909043b0000096b0a900197000000000b8a013f00000000008a004b00000000080000190000096b08004041000000000079004b00000000070000190000096b070080410000096b00b0009c000000000807c019000000000008004b000000f80000c13d000600030090002d0000000601100360000000000101043b000700000001001d000009300010009c000000f80000213d000000070100002900000005011002100000000001140049000000060400002900000020094000390000096b041001970000096b07900197000000000847013f000000000047004b00000000040000190000096b04004041000f00000009001d000000000019004b00000000010000190000096b010020410000096b0080009c000000000401c019000000000004004b000000f80000c13d0000000001000415000100000001001d000000090100002900000005011002100000003f011000390000095f01100197000000400700043d0000000004170019001a00000007001d000000000074004b00000000010000390000000101004039000009300040009c000000fd0000213d0000000100100190000000fd0000c13d0000000001000031000000400040043f0000001a0400002900000009070000290000000004740436000500000004001d0000000004360019000000000014004b000000f80000213d000000000034004b00000cd00000a13d00000002060003670000001a070000290000000008310049000009680080009c000000f80000213d000000400080008c000000f80000413d000000400800043d0000096c0080009c000000fd0000213d0000004009800039000000400090043f000000000936034f000000000909043b0000092f0090009c000000f80000213d00000020077000390000000009980436000000200a300039000000000aa6034f000000000a0a043b0000000000a9043500000000008704350000004003300039000000000043004b00000cb80000413d0012092f0050019b000400400020003d001b00000000001d000a00000000001d00000cda0000013d0000001b020000290000000102200039001b00000002001d000000090020006c00001bb60000813d0000001b02000029000000070020006c00001cca0000813d0000001b010000290000000502100210001400000002001d0000000f022000290000000201000367000000000221034f000000000302043b0000000002000031000000060420006a0000003f0440008a0000096b054001970000096b06300197000000000756013f000000000056004b00000000050000190000096b05004041000000000043004b00000000040000190000096b040080410000096b0070009c000000000504c019000000000005004b000000f80000c13d0000000f04300029000000000341034f000000000303043b000009300030009c000000f80000213d000000000632004900000020054000390000096b046001970000096b07500197000000000847013f000000000047004b00000000040000190000096b04004041000000000065004b00000000060000190000096b060020410000096b0080009c000000000406c019000000000004004b000000f80000c13d000000200030008c000000f80000413d000000000451034f000000000604043b000009300060009c000000f80000213d000000000453001900000000055600190000000003540049000009680030009c000000f80000213d000000800030008c000000f80000413d000000400300043d001900000003001d000009600030009c000000fd0000213d000000000651034f00000019030000290000008003300039000000400030043f000000000606043b000009300060009c000000f80000213d00000000085600190000001f06800039000000000046004b00000000070000190000096b070080410000096b096001970000096b06400197000000000a69013f000000000069004b00000000090000190000096b090040410000096b00a0009c000000000907c019000000000009004b000000f80000c13d000000000781034f000000000707043b000009300070009c000000fd0000213d0000001f09700039000009c8099001970000003f09900039000009c8099001970000000009390019000009300090009c000000fd0000213d0000002008800039000000400090043f00000000007304350000000009870019000000000049004b000000f80000213d000000000a81034f000009c80b7001980000001908000029000000a0088000390000000009b8001900000d4c0000613d000000000c0a034f000000000d08001900000000ce0c043c000000000ded043600000000009d004b00000d480000c13d0000001f0c70019000000d590000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a904350000000007870019000000000007043500000019070000290000000003370436001c00000003001d0000002007500039000000000871034f000000000808043b000009300080009c000000f80000213d000000000a5800190000001f08a00039000000000048004b00000000090000190000096b090080410000096b08800197000000000b68013f000000000068004b00000000080000190000096b080040410000096b00b0009c000000000809c019000000000008004b000000f80000c13d0000000008a1034f000000000808043b000009300080009c000000fd0000213d0000001f09800039000009c8099001970000003f09900039000009c80b900197000000400900043d000000000bb9001900000000009b004b000000000c000039000000010c0040390000093000b0009c000000fd0000213d0000000100c00190000000fd0000c13d000000200ca000390000004000b0043f000000000a890436000000000bc8001900000000004b004b000000f80000213d000000000cc1034f000009c80d800198000000000bda001900000d920000613d000000000e0c034f000000000f0a001900000000e30e043c000000000f3f04360000000000bf004b00000d8e0000c13d0000001f0e80019000000d9f0000613d0000000003dc034f000000030ce00210000000000d0b0433000000000dcd01cf000000000dcd022f000000000303043b000001000cc000890000000003c3022f0000000003c301cf0000000003d3019f00000000003b043500000000038a001900000000000304350000001c0300002900000000009304350000002007700039000000000371034f000000000803043b000009300080009c000000f80000213d00000000085800190000001f03800039000000000043004b00000000050000190000096b050080410000096b03300197000000000963013f000000000063004b00000000030000190000096b030040410000096b0090009c000000000305c019000000000003004b000000f80000c13d000000000381034f000000000503043b000009300050009c000000fd0000213d0000001f03500039000009c8033001970000003f03300039000009c803300197000000400600043d0000000009360019000000000069004b000000000a000039000000010a004039000009300090009c000000fd0000213d0000000100a00190000000fd0000c13d000000200a800039000000400090043f00000000085604360000000003a50019000000000043004b000000f80000213d0000000009a1034f000009c80a5001980000000004a8001900000dd70000613d000000000b09034f000000000c08001900000000b30b043c000000000c3c043600000000004c004b00000dd30000c13d0000001f0b50019000000de40000613d0000000003a9034f0000000309b00210000000000a040433000000000a9a01cf000000000a9a022f000000000303043b0000010009900089000000000393022f00000000039301cf0000000003a3019f00000000003404350000000003580019000000000003043500000019030000290000004003300039000e00000003001d00000000006304350000002003700039000000000331034f000000000403043b0000092b0040009c000000f80000213d00000019030000290000006003300039001700000003001d0000000000430435000000800400043d000000000004004b00000dff0000613d0000001b0040006c00001cca0000a13d0000001403000029000000a00330003900000000030304330000092b0430019800000dff0000613d000000170300002900000000004304350000001b0500002900000006035002100000000403300029000000000331034f000000000303043b000d00000003001d0000001e0050006c00001cca0000813d0000001f0320006a00000014050000290000001d04500029000000000441034f000000000404043b000000430330008a0000096b053001970000096b06400197000000000756013f000000000056004b00000000050000190000096b05004041000000000034004b00000000030000190000096b030080410000096b0070009c000000000503c019000000000005004b000000f80000c13d0000001d05400029000000000351034f000000000403043b000009300040009c000000f80000213d000000000342004900000020065000390000096b053001970000096b07600197000000000857013f000000000057004b00000000050000190000096b05004041000000000036004b00000000030000190000096b030020410000096b0080009c000000000503c019000000000005004b000000f80000c13d0000001f03400039000009c8033001970000003f03300039000009c803300197000000400700043d0000000005370019001100000007001d000000000075004b00000000070000390000000107004039000009300050009c000000fd0000213d0000000100700190000000fd0000c13d000000400050043f000000110300002900000000054304360000000003640019000000000023004b000000f80000213d000000000261034f000009c806400198000000000165001900000e4c0000613d000000000702034f0000000008050019000000007307043c0000000008380436000000000018004b00000e480000c13d0000001f0740019000000e590000613d000000000262034f0000000303700210000000000601043300000000063601cf000000000636022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000262019f0000000000210435000000000145001900000000000104350000000001000415000b00000001001d000000400100043d0000096c0010009c000000fd0000213d0000004002100039000000400020043f0000002002100039000000000002043500000000000104350000001c0100002900000000010104330000000023010434000000200030008c00001a940000c13d0000000002020433001800000002001d000004000220008a0000096d0020009c00001a940000213d000000400200043d0000096f010000410000000000120435001c00000002001d00000004012000390000001802000029000000000021043500000970010000410000000000100443000000000100041200000004001004430000010001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000201043b00000000010004140000092f02200197000000040020008c00000e8f0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000eb80000013d0000001c030000290000092b0030009c0000092b0300804100000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f00000972011001c724a824a30000040f00000060031002700000092b03300197000000200030008c0000002004000039000000000403401900000020064001900000001c0560002900000ea70000613d000000000701034f0000001c08000029000000007907043c0000000008980436000000000058004b00000ea30000c13d0000001f0740019000000eb40000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001bf60000613d0000001f01400039000000600210018f0000001c01200029000000000021004b00000000020000390000000102004039000009300010009c000000fd0000213d0000000100200190000000fd0000c13d000000400010043f000000200030008c000000f80000413d0000001c010000290000000001010433001c00000001001d0000092f0010009c000000f80000213d0000001c0000006b00001aa30000613d0000000001000415001500000001001d000000400100043d0000002002100039000009730400004100000000004204350000002403100039000000000043043500000024030000390000000000310435000009310010009c000000fd0000213d0000006003100039000000400030043f0000001c03000029000000040030008c00000ee10000c13d0000000001020433000000000010043f000000010300003100000f0b0000013d0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001c0200002924a824a30000040f00000060031002700000092b03300197000000200030008c00000020050000390000000005034019000000200450019000000ef90000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000ef50000c13d0000001f0550019000000f060000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000001aa00000613d000000000100043d000000200030008c00001aa00000413d000000000001004b00001aa00000613d000000400100043d00000020021000390000097304000041000000000042043500000024041000390000097505000041000000000054043500000024040000390000000000410435000009310010009c000000fd0000213d0000006004100039000000400040043f0000001c04000029000000040040008c00000f220000c13d0000000001020433000000000010043f00000f530000013d0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001c0200002924a824a30000040f00000060031002700000092b03300197000000200030008c00000020050000390000000005034019000000200450019000000f3a0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000f360000c13d0000001f0550019000000f470000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350003000000010355000100000003001f0000001f0030008c00000000010000390000000101002039000000000112016f0000000002000415000000260220008a0016000500200218000000010010008c00000f580000c13d000000000100043d0000000002000415000000250220008a0016000500200218000000000001004b00001aa00000c13d000000400100043d00000020021000390000097304000041000000000042043500000024041000390000097605000041000000000054043500000024040000390000000000410435000009310010009c000000fd0000213d0000006004100039000000400040043f0000001c04000029000000040040008c00000f6b0000c13d0000000001020433000000000010043f00000f950000013d0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001c0200002924a824a30000040f00000060031002700000092b03300197000000200030008c00000020050000390000000005034019000000200450019000000f830000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000f7f0000c13d0000001f0550019000000f900000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000001a9d0000613d000000000100043d000000200030008c00001a9d0000413d000000000001004b00000016010000290000000501100270000000000100003f000000010100c03f00000000010004150000001501100069000000000100000200001aa30000613d00000017010000290000000001010433000000400400043d00000020034000390000097702000041000c00000003001d000000000023043500000024024000390000001203000029000000000032043500000024020000390000000000240435001700000004001d000009310040009c000000fd0000213d00000017030000290000006002300039001600000002001d000000400020043f000009780030009c000000fd0000213d0015092b0010019b00000017040000290000012001400039000000400010043f000000840200003900000016030000290000000000230435000000800340003900000000020000310000000202200367001300000003001d000000002402043c0000000003430436000000000013004b00000fc00000c13d000009790100004100000000001004430000001801000029000000040010044300000000010004140000092b0010009c0000092b01008041000000c0011002100000097a011001c7000080020200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000000001004b00001a7b0000613d0000000001000414000013880110008c00001a7f0000413d00000006021002700000000001210049000000150010006c00001a830000a13d0000000c010000290000092b0010009c0000092b0100804100000040011002100000000002000414000c00000002001d000000170200002900000000020204330000092b0020009c0000092b020080410000006002200210000000000112019f0000001502000029000000c002200210000000000121019f000000180200002924a8249e0000040f000300000001035500000060031002700001092b0030019d0000092b05300197000000840050008c0000008405008039000000000300041400000016040000290000000000540435000000e006500190000000130460002900000ffe0000613d000000000701034f0000001308000029000000007907043c0000000008980436000000000048004b00000ffa0000c13d0000001f055001900000100b0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000010020019000001bc50000613d00000016010000290000000001010433000000200010008c00001a870000c13d0000000c0130006900150015001000730000013f0000413d000000400100043d001700000001001d0000097e0010009c000000fd0000213d0000000e010000290000000001010433000e00000001001d00000019010000290000000001010433001900000001001d00000013010000290000000001010433000c00000001001d00000017020000290000010001200039000000400010043f00000008010000290000000001120436001600000001001d00000970010000410000000000100443000000000100041200000004001004430000004001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000601043b0000001709000029000000e00190003900000011020000290000000000210435000000c0029000390000000e030000290000000000320435000000a0039000390000001904000029000000000043043500000080049000390000001805000029000000000054043500000060059000390000000d070000290000000000750435000000400790003900000012080000290000000000870435000009300660019700000016080000290000000000680435000000400b00043d0000002008b000390000097f06000041001300000008001d00000000006804350000002406b000390000002008000039000000000086043500000000060904330000004408b0003900000100090000390000000000980435000001440ab00039000000009806043400000000008a043500190000000b001d0000016406b00039000000000008004b000010680000613d000000000a000019000000000b6a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000008a004b000010610000413d00000000096800190000000000090435000000160900002900000000090904330000093009900197000000190b000029000000640ab0003900000000009a043500000000070704330000092f077001970000008409b0003900000000007904350000000005050433000000a407b00039000000000057043500000000040404330000092f04400197000000c405b0003900000000004504350000001f04800039000009c804400197000000e405b00039000000000303043300000120074000390000000000750435000000000664001900000000540304340000000003460436000000000004004b0000108e0000613d000000000600001900000000073600190000000008650019000000000808043300000000008704350000002006600039000000000046004b000010870000413d000000000534001900000000000504350000001f04400039000009c804400197000000000534001900000019040000290000000003450049000000440330008a00000000020204330000010404400039000000000034043500000000430204340000000002350436000000000003004b000010a50000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000035004b0000109e0000413d000000000423001900000000000404350000001f03300039000009c803300197000000000223001900000019040000290000000003420049000000440330008a00000000010104330000012404400039000000000034043500000000310104340000000002120436000000000001004b000010bc0000613d000000000400001900000000052400190000000006430019000000000606043300000000006504350000002004400039000000000014004b000010b50000413d00000000032100190000000000030435000000190400002900000000024200490000001f01100039000009c8011001970000000001210019000000200210008a00000000002404350000001f01100039000009c8011001970000000002410019000000000012004b00000000010000390000000101004039001700000002001d000009300020009c000000fd0000213d0000000100100190000000fd0000c13d0000001701000029000000400010043f000009800010009c000000fd0000213d0000001703000029000000c001300039000000400010043f0000008402000039000000000323043600000000020000310000000202200367001600000003001d000000002402043c0000000003430436000000000013004b000010dc0000c13d000009790100004100000000001004430000001c01000029000000040010044300000000010004140000092b0010009c0000092b01008041000000c0011002100000097a011001c7000080020200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000000001004b00001a7b0000613d0000000001000414000013880110008c00001a7f0000413d00000006021002700000000001210049000000150010006c00001a830000a13d0000000001000414001100000001001d0000001c01000029000000040010008c000011000000c13d000000030100036700000001040000310000000002000019000011160000013d00000013010000290000092b0010009c0000092b010080410000004001100210000000190200002900000000020204330000092b0020009c0000092b020080410000006002200210000000000112019f00000015020000290000092b0020009c0000092b02008041000000c002200210000000000121019f0000001c0200002924a8249e0000040f000000010220015f000300000001035500000060031002700001092b0030019d0000092b043001970000000003000414000000840040008c000000840400803900000017050000290000000000450435000000e0064001900000001605600029000011240000613d000000000701034f0000001608000029000000007907043c0000000008980436000000000058004b000011200000c13d0000001f04400190000011310000613d000000000161034f0000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000010020019000001bcf0000c13d00000017010000290000000001010433000000200010008c00001a870000c13d00000016010000290000000001010433001900000001001d0000001c02000029000000120020006b000011b90000613d000000110130006900160015001000730000013f0000413d000000400300043d00000020023000390000097701000041001300000002001d000000000012043500000024013000390000001202000029000000000021043500000024010000390000000000130435001c00000003001d000009310030009c000000fd0000213d0000001c020000290000006001200039001700000001001d000000400010043f000009780020009c000000fd0000213d0000001c040000290000012001400039000000400010043f000000840200003900000017030000290000000000230435000000800340003900000000020000310000000202200367001500000003001d000000002402043c0000000003430436000000000013004b0000115d0000c13d000009790100004100000000001004430000001801000029000000040010044300000000010004140000092b0010009c0000092b01008041000000c0011002100000097a011001c7000080020200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000000001004b00001a7b0000613d0000000001000414000013880110008c00001a7f0000413d00000006021002700000000001210049000000160010006c00001a830000a13d00000013010000290000092b0010009c0000092b0100804100000040011002100000000002000414001300000002001d0000001c0200002900000000020204330000092b0020009c0000092b020080410000006002200210000000000112019f00000016020000290000092b0020009c0000092b02008041000000c002200210000000000121019f000000180200002924a8249e0000040f000300000001035500000060031002700001092b0030019d0000092b05300197000000840050008c0000008405008039000000000300041400000017040000290000000000540435000000e00650019000000015046000290000119d0000613d000000000701034f0000001508000029000000007907043c0000000008980436000000000048004b000011990000c13d0000001f05500190000011aa0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000010020019000001c020000613d00000017010000290000000001010433000000200010008c00001a870000c13d0000001301300069000000160010006c0000013f0000213d000000150100002900000000010104330000000c0210006c00001c160000413d000000190020006c00001c160000c13d000000400100043d0000096c0010009c000000fd0000213d0000004002100039000000400020043f0000002002100039000000190300002900000000003204350000001802000029000000000021043500000000020004150000000b0220006900000000020000020000001a0200002900000000020204330000001b0020006c00001cca0000a13d00000014030000290000000502300029001c00000002001d00000000001204350000001a0200002900000000020204330000001b0020006c00001cca0000a13d00000000010104330000092f01100197000000000010043f0000000d01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000101041a000000000001004b00000cd50000613d0000001a0100002900000000010104330000001b0010006c00001cca0000a13d0000000b01000039000000000201041a0000001c010000290000000001010433001700000001001d0000000031010434001800000003001d000000400400043d00000983030000410000000003340436001900000003001d0000092f01100197001c00000004001d0000000403400039000000000013043500000000010004140000092f02200197000000040020008c000012000000c13d0000000103000031000000400030008c00000040040000390000000004034019000012290000013d0000001c030000290000092b0030009c0000092b0300804100000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f00000972011001c724a824a30000040f00000060031002700000092b03300197000000400030008c0000004004000039000000000403401900000060064001900000001c05600029000012180000613d000000000701034f0000001c08000029000000007907043c0000000008980436000000000058004b000012140000c13d0000001f07400190000012250000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001c260000613d0000001f01400039000000e00210018f0000001c01200029000000000021004b00000000020000390000000102004039000009300010009c000000fd0000213d0000000100200190000000fd0000c13d000000400010043f000000400030008c000000f80000413d0000096c0010009c000000fd0000213d0000004002100039000000400020043f0000001c020000290000000002020433000009840020009c000000f80000213d0000000001210436000000190300002900000000030304330000092b0030009c000000f80000213d0000000000310435000000000002004b00001be90000613d0000001801000029000000000301043300000000012300a900000000022100d9000000000032004b0000013f0000c13d000009850110012a0000000a0010002a0000013f0000413d000a000a0010002d00000cd50000013d000000400300043d0000093b01000041001a00000003001d00000000001304350000000001000414000000040020008c0000125d0000c13d0000000103000031000000200030008c00000020040000390000000004034019000012870000013d0000001a030000290000092b0030009c0000092b0300804100000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f0000093c011001c724a824a30000040f00000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001a05700029000012760000613d000000000801034f0000001a09000029000000008a08043c0000000009a90436000000000059004b000012720000c13d000000000006004b000012830000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000012f50000613d0000001f01400039000000600110018f0000001a02100029000000000012004b00000000010000390000000101004039000009300020009c000000fd0000213d0000000100100190000000fd0000c13d000000400020043f000000200030008c000000f80000413d0000001a010000290000000001010433000009300010009c000000f80000213d000000010010008c0000149c0000c13d000000160100002900000000010104330000092f01100197000000a00010043f0000001f0100002900000000010104330000093001100197000000c00010043f000000200300002900000000030304330000093003300197000000e00030043f0000001e0400002900000000040404330000092f04400197000001000040043f0000001d0500002900000000050504330000092f05500197000001400050043f0000001c0500002900000000050504330000092f05500197000001600050043f0000001b0500002900000000050504330000092f05500197000001800050043f00000080052000390000000000450435000000600420003900000000003404350000004003200039000000000013043500000020012000390000093e03000041000000000031043500000080030000390000000000320435000009340020009c000000fd0000213d000000a003200039000000400030043f000000000202043324a8246b0000040f000001200010043f000000800200043d000001400000044300000160002004430000002002000039000000a00300043d0000018000200443000001a0003004430000004003000039000000c00400043d000001c000300443000001e0004004430000006003000039000000e00400043d00000200003004430000022000400443000001000300043d000000800400003900000240004004430000026000300443000000a0030000390000028000300443000002a000100443000000c001000039000001400300043d000002c000100443000002e000300443000000e001000039000001600300043d000003000010044300000320003004430000010001000039000001800300043d000003400010044300000360003004430000010000200443000000090100003900000120001004430000093f01000041000024a90001042e000009a401000041000000000010043f0000003101000039000000040010043f0000097201000041000024aa000104300000001f0530018f0000092d06300198000000400200043d0000000004620019000008c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000012fc0000c13d000008c40000013d0000000003050019001b01200000003d00000020020000290017002000200092000013170000013d0000001e0400002900000160024000390000001c0300002900000000003204350000001d02000029000001a002200039000000000221034f000000000202043b000001800340003900000000002304350000001b020000290000000002420436001b00000002001d0000001a030000290000002003300039000000180030006c000005c00000813d001a00000003001d000000000331034f000000000303043b000009300030009c000000f80000213d0000001903300029001d00000003001d0000001703300069000009680030009c000000f80000213d000001a00030008c000000f80000413d000000400200043d001e00000002001d000009950020009c000000fd0000213d0000001e02000029000001a003200039000000400030043f0000001d020000290000002003200039000000000431034f000000000404043b000009300040009c000000f80000213d0000001e0200002900000000044204360000002003300039000000000531034f000000000505043b0000092f0050009c000000f80000213d00000000005404350000002003300039000000000431034f000000000404043b0000092f0040009c000000f80000213d0000001e02000029000000400520003900000000004504350000002003300039000000000431034f000000000404043b000009300040009c000000f80000213d0000001e02000029000000600520003900000000004504350000002004300039000000000441034f000000000404043b000000800520003900000000004504350000004003300039000000000431034f000000000404043b000000000004004b0000000005000039000000010500c039000000000054004b000000f80000c13d0000001e02000029000000a00520003900000000004504350000002003300039000000000431034f000000000404043b000009300040009c000000f80000213d0000001e02000029000000c00520003900000000004504350000002003300039000000000431034f000000000404043b0000092f0040009c000000f80000213d0000001e02000029000000e00520003900000000004504350000002004300039000000000441034f000000000404043b000001000520003900000000004504350000004003300039000000000431034f000000000404043b000009300040009c000000f80000213d0000001d074000290000003f047000390000002002000029000000000024004b00000000050000190000096b050080410000096b044001970000096b0d2001970000000006d4013f0000000000d4004b00000000040000190000096b040040410000096b0060009c000000000405c019000000000004004b000000f80000c13d0000002006700039000000000461034f000000000404043b000009300040009c000000fd0000213d0000001f05400039000009c8055001970000003f05500039000009c808500197000000400500043d0000000008850019000000000058004b00000000090000390000000109004039000009300080009c000000fd0000213d0000000100900190000000fd0000c13d0000004009700039000000400080043f00000000074504360000000008940019000000200080006c000000f80000213d0000002006600039000000000661034f000009c8094001980000000008970019000013a50000613d000000000b06034f000000000c07001900000000ba0b043c000000000cac043600000000008c004b000013a10000c13d0000001f0a400190000013b20000613d000000000696034f0000000309a00210000000000a080433000000000a9a01cf000000000a9a022f000000000606043b0000010009900089000000000696022f00000000069601cf0000000006a6019f0000000000680435000000000447001900000000000404350000001e02000029000001200420003900000000005404350000002003300039000000000431034f000000000404043b000009300040009c000000f80000213d0000001d054000290000003f04500039000000200040006c00000000060000190000096b060080410000096b044001970000000007d4013f0000000000d4004b00000000040000190000096b040040410000096b0070009c000000000406c019000000000004004b000000f80000c13d0000002004500039000000000441034f000000000604043b000009300060009c000000fd0000213d00000005046002100000003f044000390000095f07400197000000400400043d0000000007740019000000000047004b00000000080000390000000108004039000009300070009c000000fd0000213d0000000100800190000000fd0000c13d0000004005500039000000400070043f000000000064043500000006066002100000000007560019000000200070006c000000f80000213d000000000057004b000013fd0000a13d00000000080400190000002006500069000009680060009c000000f80000213d000000400060008c000000f80000413d000000400600043d0000096c0060009c000000fd0000213d0000004009600039000000400090043f000000000951034f000000000909043b0000092f0090009c000000f80000213d00000020088000390000000009960436000000200a500039000000000aa1034f000000000a0a043b0000000000a9043500000000006804350000004005500039000000000075004b000013e50000413d0000001e02000029000001400520003900000000004504350000002003300039000000000331034f000000000303043b000009300030009c000000f80000213d0000001d033000290000003f04300039000000200040006c00000000050000190000096b050080410000096b044001970000000006d4013f0000000000d4004b00000000040000190000096b040040410000096b0060009c000000000405c019000000000004004b000000f80000c13d000000200e3000390000000004e1034f000000000404043b000009300040009c000000fd0000213d00000005064002100000003f056000390000095f05500197000000400200043d0000000005520019001c00000002001d000000000025004b00000000070000390000000107004039000009300050009c000000fd0000213d0000000100700190000000fd0000c13d000000400050043f0000001c02000029000000000042043500000040043000390000000003460019000000200030006c000000f80000213d000000000034004b000013060000813d0000001c0f000029000014370000013d000000200ff0003900000000027a0019000000000002043500000000009f04350000002004400039000000000034004b000013060000813d000000000541034f000000000505043b000009300050009c000000f80000213d0000000008e500190000003f05800039000000200050006c00000000060000190000096b060080410000096b055001970000000007d5013f0000000000d5004b00000000050000190000096b050040410000096b0070009c000000000506c019000000000005004b000000f80000c13d0000002006800039000000000561034f000000000705043b000009300070009c000000fd0000213d0000001f05700039000009c8055001970000003f05500039000009c805500197000000400900043d000000000b59001900000000009b004b000000000500003900000001050040390000093000b0009c000000fd0000213d0000000100500190000000fd0000c13d00000040058000390000004000b0043f000000000a7904360000000005570019000000200050006c000000f80000213d0000002005600039000000000551034f000009c80c7001980000000006ca00190000146c0000613d000000000b05034f00000000080a001900000000b20b043c0000000008280436000000000068004b000014680000c13d0000001f08700190000014300000613d0000000002c5034f0000000305800210000000000806043300000000085801cf000000000858022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000282019f0000000000260435000014300000013d0000000002000415000000240220008a001e000500200218002400000000003d0000001f02000029001d00e0002000920000001d01100360000000000101043b0000092f0010009c000000f80000213d00000979020000410000000000200443000000040010044300000000010004140000092b0010009c0000092b01008041000000c0011002100000097a011001c7000080020200003924a824a30000040f000000010020019000001c500000613d000000000101043b000000000001004b0000001e010000290000000501100270000000000100003f000000010100603f000014aa0000c13d0000000001000415000000100110006900000000010000020000000001000019000024a90001042e0000093d0100004100000aa50000013d0000001e0000006b000014c50000c13d000000400100043d000009bb020000410000000000210435000000040210003900000000000204350000092b0010009c0000092b01008041000000400110021000000972011001c7000024aa000104300000001d010000290000000201100367000000000101043b001e00000001001d0000092f0010009c000000f80000213d0000000001000415001c00000001001d000000400100043d0000002002100039000009730300004100000000003204350000002404100039000000000034043500000024030000390000000000310435000009310010009c000000fd0000213d0000006003100039000000400030043f0000001e03000029000000040030008c0000186f0000c13d0000000001020433000000000010043f00000001030000310000189a0000013d000000000100041a0000092f011001970000000002000411000000000012004b000017bb0000c13d0000001d010000290000000001010433000009680010009c000000f80000213d000000a00010008c000000f80000413d000000400100043d001800000001001d000009340010009c000000fd0000213d0000001801000029000000a001100039000000400010043f0000001c0100002900000000010104330000092b0010009c000000f80000213d00000018020000290000000002120436001700000002001d0000001d02000029000000400220003900000000020204330000092b0020009c000000f80000213d000000170300002900000000002304350000001d03000029000000600330003900000000040304330000ffff0040008c000000f80000213d00000018030000290000004003300039001600000003001d00000000004304350000001d03000029000000800330003900000000050304330000092f0050009c000000f80000213d00000018030000290000006003300039001400000003001d00000000005304350000001d03000029000000a00330003900000000030304330000092f0030009c000000f80000213d00000018060000290000008006600039001300000006001d0000000000360435000000000005004b00000a9b0000613d0000004004400210000009b5044001970000002002200210000009b602200197000000000242019f0000005004500210000009b704400197000000000242019f0000000a04000039000000000504041a000009b805500197000000000252019f000000000112019f000000000014041b0000000b01000039000000000201041a0000093302200197000000000232019f000000000021041b000000400100043d001200000001001d0000092e0010009c000000fd0000213d0000001201000029000000e001100039000000400010043f00000970010000410000000000100443000000000100041200000004001004430000002001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000101043b0000092f0110019700000012020000290000000001120436001100000001001d00000970010000410000000000100443000000000100041200000004001004430000006001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000101043b00000930011001970000001102000029000000000012043500000970010000410000000000100443000000000100041200000004001004430000004001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d00000012020000290000004002200039000000000101043b0000093001100197001000000002001d000000000012043500000970010000410000000000100443000000000100041200000004001004430000008001000039001500000001001d000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d00000012020000290000006002200039000000000101043b0000092f01100197000f00000002001d00000000001204350000097001000041000000000010044300000000010004120000000400100443000000c001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d00000012020000290000008002200039000000000101043b0000092f01100197000e00000002001d00000000001204350000097001000041000000000010044300000000010004120000000400100443000000e001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d0000001202000029000000a002200039000000000101043b0000092f01100197000d00000002001d000000000012043500000970010000410000000000100443000000000100041200000004001004430000010001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000101043b0000092f011001970000001203000029000000c002300039000000000012043500000000010304330000092f03100197000000400100043d00000000033104360000001104000029000000000404043300000930044001970000000000430435000000100300002900000000030304330000093003300197000000400410003900000000003404350000000f0300002900000000030304330000092f03300197000000600410003900000000003404350000000e0300002900000000030304330000092f03300197000000800410003900000000003404350000000d0300002900000000030304330000092f03300197000000a004100039000000000034043500000000020204330000092f02200197000000c0031000390000000000230435000000180200002900000000020204330000092b02200197000000e0031000390000000000230435000000170200002900000000020204330000092b0220019700000100031000390000000000230435000000160200002900000000020204330000ffff0220018f00000120031000390000000000230435000000140200002900000000020204330000092f0220019700000140031000390000000000230435000000130200002900000000020204330000092f02200197000001600310003900000000002304350000092b0010009c0000092b01008041000000400110021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009b9011001c70000800d020000390000000103000039000009ba0400004124a8249e0000040f0000000100200190000000f80000613d0000000901000039000000000101041a001700000001001d000000000001004b000016150000613d001800000000001d0000000901000039000000000101041a000000180010006c00001cca0000a13d0000001801000029000009990110009a000000000101041a0000092f01100197000000000010043f0000000801000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000001041b00000018020000290000000102200039001800000002001d000000170020006c000015fa0000413d00000020010000290000000001010433001300000001001d000000000001004b0000000001000019000016710000613d001800000000001d00000020010000290000000001010433000000180010006c00001cca0000a13d000000180100002900000005011002100000001f0110002900000000010104330000092f01100197001600000001001d000000000010043f0000000801000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000101041a0000000801100270000000ff0110018f000000030010008c000018690000813d000000400200043d001700000002001d000000000001004b00001cf20000c13d000000160000006b00001cfd0000613d00000017010000290000096c0010009c000000fd0000213d00000017020000290000004001200039000000400010043f0000001801000029000000ff0110018f00000000021204360000000201000039001400000002001d00000000001204350000001601000029000000000010043f0000000801000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000000000201041a000009c90220019700000017030000290000000003030433000000ff0330018f000000000232019f000000000021041b00000014030000290000000003030433000000020030008c000018690000213d000009ca0220019700000008033002100000ff000330018f000000000223019f000000000021041b00000018020000290000000102200039001800000002001d000000130020006c0000161c0000413d00000020010000290000000001010433000009300010009c000000fd0000213d0000000902000039000000000302041a000000000012041b000000000031004b0000167e0000813d000009990210009a000009990330009a000000000032004b0000167e0000813d000000000002041b0000000102200039000000000032004b0000167a0000413d0000000902000039000000000020043f000000000001004b0000168c0000613d00000000020000190000002003000029000000200330003900000000040304330000092f04400197000009990520009a000000000045041b0000000102200039000000000012004b000016840000413d0000000601000039000000000201041a000009bd02200197000000130300002900000008033002100000ff000330018f000000000223019f0000001e022001af000000000021041b0000000701000039000000000101041a0000092b021001970000092b0020009c0000013f0000613d000009be01100197001f00010020003d0000001f011001af0000000702000039000000000012041b0000093a01000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000301043b000000400100043d00000080021000390000012004000039000000000042043500000060021000390000001f04000029000000000042043500000000020004100000092f0220019700000040041000390000000000240435000000200210003900000000003204350000014003100039000000800400043d00000000004304350000016003100039000000000004004b000016c80000613d000000000500001900000015060000290000002006600039001500000006001d00000000060604330000092f0660019700000000036304360000000105500039000000000045004b000016bf0000413d0000000004130049000000200440008a000000a0051000390000000000450435000000200400002900000000040404330000000003430436000000000004004b000016da0000613d00000000050000190000002006000029000000200660003900000000070604330000092f0770019700000000037304360000000105500039000000000045004b000016d30000413d000000c0041000390000001e0500002900000000005404350000000004130049000000200440008a000000e00510003900000000004504350000001d0400002900000000040404330000000003430436000000000004004b000016ee0000613d000000000500001900000000063500190000001c07500029000000000707043300000000007604350000002005500039000000000045004b000016e70000413d000000000534001900000000000504350000001f04400039000009c80440019700000000043400190000000003140049000000200330008a000001200510003900000000003504350000001b0300002900000930053001970000010003100039001f00000005001d00000000005304350000001a0300002900000000030304330000000004340436000000000003004b000017090000613d000000000500001900000000064500190000001907500029000000000707043300000000007604350000002005500039000000000035004b000017020000413d0000000005430019000000000005043500000000041400490000001f03300039000009c8033001970000000003430019000000200430008a00000000004104350000001f03300039000009c8043001970000000003140019000000000043004b00000000040000390000000104004039000009300030009c000000fd0000213d0000000100400190000000fd0000c13d000000400030043f0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000000101043b000009bf01100197000009c0011001c70000000502000039000000000012041b0000000701000039000000000101041a001b00000001001d000009c101000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000000101043b0000002001100210000009b6011001970000000704000039000000000204041a000009c203200197000000000113019f000000000014041b0000000501000039000000000301041a000000400100043d0000006004100039000001200500003900000000005404350000092b0220019700000040041000390000000000240435000000200210003900000000003204350000001b0200002900000020022002700000092b0220019700000000002104350000012002100039000000800300043d00000000003204350000014002100039000000000003004b000017670000613d00000080040000390000000005000019000000200440003900000000060404330000092f0660019700000000026204360000000105500039000000000035004b000017600000413d000000000312004900000080041000390000000000340435000000200300002900000000030304330000000002320436000000000003004b000017790000613d000000000400001900000020050000290000002005500039002000000005001d00000000050504330000092f0550019700000000025204360000000104400039000000000034004b000017700000413d0000000003120049000000c0041000390000000000340435000000a0031000390000001e0400002900000000004304350000001d0300002900000000030304330000000002320436000000000003004b0000178c0000613d000000000400001900000000052400190000001c06400029000000000606043300000000006504350000002004400039000000000034004b000017850000413d00000000042300190000000000040435000000e0041000390000001f0500002900000000005404350000001f03300039000009c80330019700000000022300190000000003120049000001000410003900000000003404350000001a0300002900000000030304330000000002320436000000000003004b000017a40000613d000000000400001900000000052400190000001906400029000000000606043300000000006504350000002004400039000000000034004b0000179d0000413d000000000423001900000000000404350000001f03300039000009c803300197000000000212004900000000023200190000092b0020009c0000092b0200804100000060022002100000092b0010009c0000092b010080410000004001100210000000000112019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c70000800d020000390000000103000039000009c304000041000007930000013d000000400100043d0000004402100039000009a9030000410000000000320435000000240210003900000016030000390000000000320435000009410200004100000000002104350000000402100039000000200300003900000000003204350000092b0010009c0000092b01008041000000400110021000000942011001c7000024aa000104300000001902000029000000a00020043f00000014020000290000004003200039000000000231034f000000000502043b000009300050009c000000f80000213d00000014055000290000001f02500039000000200020006c00000000060000190000096b060080410000096b02200197000000000742013f000000000042004b00000000020000190000096b020040410000096b0070009c000000000206c019000000000002004b000000f80000c13d000000000251034f000000000602043b000009300060009c000000fd0000213d00000005076002100000003f027000390000095f02200197000000400400043d0000000008240019000000000048004b00000000090000390000000109004039000009300080009c000000fd0000213d0000000100900190000000fd0000c13d000000400080043f000000000064043500000020055000390000000006570019000000200060006c000000f80000213d000000000065004b000018020000813d0000000002040019000000000751034f000000000707043b000000200220003900000000007204350000002005500039000000000065004b000017fb0000413d000000c00040043f0000002002300039000000000121034f000000000101043b000000e00010043f000000400200043d0000096a0020009c000000fd0000213d0000002001200039000000400010043f0000000000020435000000800100003924a81df70000040f0000000501000039000000000101041a00000004020000390000000202200367000000000202043b002000000002001d000000000021004b00001be00000c13d0000097001000041000000000010044300000000010004120000000400100443000000240000044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f000000010020019000001c500000613d000000000101043b001e00000001001d0000093a01000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d000000400200043d000000000101043b0000001e0010006b00001c510000c13d00000024010000390000000201100367000000000101043b00000008011002700000092b0110019700000020032000390000000000130435000000200100002900000000001204350000092b0020009c0000092b02008041000000400120021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f00000962011001c70000800d020000390000000103000039000009980400004124a8249e0000040f0000000100200190000000f80000613d00000000010004110000092f01100197000000000010043f0000000801000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000000f80000613d000000400200043d0000096c0020009c000000fd0000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f00000000021204360000000803300270000000ff0330018f000000020030008c00001caa0000a13d000009a401000041000000000010043f0000002101000039000000040010043f0000097201000041000024aa000104300000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001e0200002924a824a30000040f00000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000018880000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000018840000c13d000000000005004b000018950000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000001a770000613d000000000100043d000000200030008c00001a770000413d000000000001004b00001a770000613d000000400100043d00000020021000390000097304000041000000000042043500000024041000390000097505000041000000000054043500000024040000390000000000410435000009310010009c000000fd0000213d0000006004100039000000400040043f0000001e04000029000000040040008c000019020000c13d0000000001020433000000000010043f000019340000013d000000240630008a0000001a07000029000018b90000013d0000000000a9043500000000078704360000002004400039000000000054004b00000c310000813d000000000841034f000000000808043b000009300080009c000000f80000213d000000000a2800190000000008a60049000009680080009c000000f80000213d000000400080008c000000f80000413d000000400800043d0000096c0080009c000000fd0000213d0000004009800039000000400090043f0000002409a00039000000000991034f000000000909043b0000000009980436000000440ba00039000000000bb1034f000000000b0b043b0000093000b0009c000000f80000213d000000000bab0019000000430ab0003900000000003a004b000000000c0000190000096b0c0080410000096b0aa0019700000000000a004b000000000d0000190000096b0d0040410000096b00a0009c000000000d0cc01900000000000d004b000000f80000c13d000000240ab00039000000000aa1034f000000000c0a043b0000093000c0009c000000fd0000213d000000050dc002100000003f0ad000390000095f0ea00197000000400a00043d000000000eea00190000000000ae004b000000000f000039000000010f0040390000093000e0009c000000fd0000213d0000000100f00190000000fd0000c13d0000004000e0043f0000000000ca0435000000440bb00039000000000cbd001900000000003c004b000000f80000213d0000000000cb004b000018b40000813d000000000d0a0019000000000eb1034f000000000e0e043b0000092b00e0009c000000f80000213d000000200dd000390000000000ed0435000000200bb000390000000000cb004b000018f80000413d000018b40000013d0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001e0200002924a824a30000040f00000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0540018f00000020044001900000191b0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000019170000c13d000000000005004b000019280000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350003000000010355000100000003001f0000001f0030008c00000000010000390000000101002039000000000112016f0000000002000415000000220220008a001b000500200218000000010010008c000019390000c13d000000000100043d0000000002000415000000210220008a001b000500200218000000000001004b00001a770000c13d000000400100043d00000020021000390000097304000041000000000042043500000024041000390000099205000041000000000054043500000024040000390000000000410435000009310010009c000000fd0000213d0000006004100039000000400040043f0000001e04000029000000040040008c000019570000c13d0000000001020433000000000010043f000019820000013d000000400200043d00000024032000390000000000130435000009970100004100000000001204350000000401200039000000200300002900001a8e0000013d000000400100043d0000099e0200004100000a9d0000013d0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000974011001c70000001e0200002924a824a30000040f00000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000019700000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b0000196c0000c13d000000000005004b0000197d0000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000001a740000613d000000000100043d000000200030008c00001a740000413d000000000001004b0000001b010000290000000501100270000000000100003f000000010100c03f00000000010004150000001c011000690000000001000002000014970000613d0000001d01000029000000400310008a0000000202000367000000000432034f0000000a01000039000000000101041a000000000704043b000009300070009c000000f80000213d0000002003300039000000000332034f000000000303043b0000092f0030009c000000f80000213d000000400400043d00000020054000390000000000350435000000200300003900000000003404350000096c0040009c000000fd0000213d0000004003400039000000400030043f0000001f052003600000000009000031000000200690006a000000230660008a000000000505043b0000096b085001970000096b0a600197000000000ba8013f0000000000a8004b00000000080000190000096b08004041000000000065004b00000000060000190000096b060080410000096b00b0009c000000000806c019000000000008004b000000f80000c13d0000000306500029000000000562034f000000000505043b000009300050009c000000f80000213d0000000008590049000000200c6000390000096b068001970000096b0ac00197000000000b6a013f00000000006a004b00000000060000190000096b0600404100000000008c004b00000000080000190000096b080020410000096b00b0009c000000000608c019000000000006004b000000f80000c13d000009340030009c000000fd0000213d000000e006400039000000400060043f0000001f06000029000000600a6000390000000006a2034f000000000606043b000000000063043500000080064000390000000000460435000000600840003900000000007804350000001f07500039000009c8077001970000003f07700039000009c807700197000000400b00043d00000000077b00190000000000b7004b000000000d000039000000010d004039000009300070009c000000fd0000213d0000000100d00190000000fd0000c13d000000400070043f000000000d5b04360000000007c50019000000000097004b000000f80000213d0020000000c20353001f09c80050019c0000001f0e50018f0000001f09d00029000019f40000613d000000200f00035f00000000070d001900000000fc0f043c0000000007c70436000000000097004b000019f00000c13d00000000000e004b00001a020000613d0000001f0c0000290000002007c0035f000000030ce00210000000000e090433000000000ece01cf000000000ece022f000000000707043b000001000cc000890000000007c7022f0000000007c701cf0000000007e7019f000000000079043500000000055d00190000000000050435000000c0074000390000001a050000290000000000570435000000a0094000390000000000b904350000014005a0008a000000000452034f000000000404043b0000092f0040009c000000f80000213d000000400b00043d000009930a000041000000000aab0436001f0000000a001d0000004005500039000000000252034f000000000502043b0000000402b00039000000800a0000390000000000a2043500000000020304330000008403b00039000000000023043500000000020804330000093002200197000000a403b0003900000000002304350000000002060433000000c403b00039000000a00600003900000000006304350000012408b000390000000063020434000000000038043500200000000b001d0000014402b00039000000000003004b00001a320000613d0000000008000019000000000a280019000000000b860019000000000b0b04330000000000ba04350000002008800039000000000038004b00001a2b0000413d0000005001100270000000000623001900000000000604350000001f03300039000009c80330019700000000060904330000002008000029000000e408800039000000c0093000390000000000980435000000000323001900000000260604340000000003630436000000000006004b00001a490000613d00000000080000190000000009380019000000000a820019000000000a0a04330000000000a904350000002008800039000000000068004b00001a420000413d0000092f02100197000000000136001900000000000104350000001f01600039000009c801100197000000000131001900000020080000290000000003810049000000840630008a00000000030704330000010407800039000000000067043500000000060304330000000001610436000000000006004b00001a650000613d00000000070000190000002003300039000000000803043300000000980804340000092f0880019700000000088104360000000009090433000000000098043500000040011000390000000107700039000000000067004b00001a5a0000413d0000092f03400197000000200600002900000064046000390000000000340435000000440360003900000000005304350000002403600039000013880400003900000000004304350000000003000414000000040020008c00001d000000c13d0000000301000367000000010300003100001d140000013d0000001b010000290000000501100270000000000100003f00000000010004150000001c011000690000000001000002000014970000013d0000099001000041000000000010043f0000093c01000041000024aa000104300000098f01000041000000000010043f0000093c01000041000024aa000104300000098101000041000000000010043f0000093c01000041000024aa00010430000000400200043d000000240320003900000000001304350000097c0100004100000000001204350000000401200039000000200300003900000000003104350000092b0020009c0000092b0200804100000040012002100000097d011001c7000024aa00010430000000400400043d002000000004001d0000096e020000410000000000240435000000040240003900000020030000390000000000320435000000240240003900001c0b0000013d00000016010000290000000501100270000000000100003f000000000100041500000015011000690000000001000002000000400100043d0000099102000041000000000021043500000004021000390000001c03000029000005240000013d000000000300001900001aae0000013d0000000103300039000000190030006c00000c580000813d000000800400043d0000000001040433000000000031004b00001cca0000a13d0000001b010000290000000001010433000000000031004b00001cca0000a13d0000000505300210000000200150003900000000044100190000000004040433001c00000004001d0000001a0450002900000000040404330000000054040434002000000005001d000000000004004b00001ac60000613d0000001c0500002900000080055000390000000005050433000000000054004b00001ce50000413d0000001c040000290000014004400039001f00000004001d00000000040404330000000004040433000000200500002900000000050504330000000005050433000000000054004b00001cd00000c13d000000000004004b00001aab0000613d0000001c0400002900000160044000390000000004040433001e00000004001d001d00000014001d000000000700001900001adf0000013d00000001077000390000001f0100002900000000010104330000000001010433000000000017004b00001aab0000813d0000001e010000290000000001010433000000000031004b00001cca0000a13d0000001d0100002900000000010104330000000014010434000009680040009c000000f80000213d000000200040008c000000f80000413d0000000005010433000009300050009c000000f80000213d000000000c410019000000000a1500190000000001ac0049000009680010009c000000f80000213d000000800010008c000000f80000413d000000400b00043d0000096000b0009c000000fd0000213d000000800eb000390000004000e0043f00000000f10a0434000009300010009c000000f80000213d0000000001a100190000001f041000390000000000c4004b00000000050000190000096b050080410000096b044001970000096b0dc001970000000009d4013f0000000000d4004b00000000040000190000096b040040410000096b0090009c000000000405c019000000000004004b000000f80000c13d0000000041010434000009300010009c000000fd0000213d0000001f05100039000009c8055001970000003f05500039000009c8055001970000000005e50019000009300050009c000000fd0000213d000000400050043f00000000001e043500000000054100190000000000c5004b000000f80000213d000000a005b00039000000000001004b00001b250000613d000000000900001900000000085900190000000006490019000000000606043300000000006804350000002009900039000000000019004b00001b1e0000413d00000000015100190000000000010435000000000eeb043600000000010f0433000009300010009c000000f80000213d0000000001a100190000001f041000390000000000c4004b00000000050000190000096b050080410000096b044001970000000006d4013f0000000000d4004b00000000040000190000096b040040410000096b0060009c000000000405c019000000000004004b000000f80000c13d000000001f0104340000093000f0009c000000fd0000213d0000001f04f00039000009c8044001970000003f04400039000009c805400197000000400400043d0000000005540019000000000045004b00000000090000390000000109004039000009300050009c000000fd0000213d0000000100900190000000fd0000c13d000000400050043f0000000005f4043600000000061f00190000000000c6004b000000f80000213d00000000000f004b00001b580000613d0000000009000019000000000659001900000000081900190000000008080433000000000086043500000020099000390000000000f9004b00001b510000413d0000000001f50019000000000001043500000000004e04350000004001a000390000000001010433000009300010009c000000f80000213d0000000001a100190000001f041000390000000000c4004b00000000050000190000096b050080410000096b044001970000000006d4013f0000000000d4004b00000000040000190000096b040040410000096b0060009c000000000405c019000000000004004b000000f80000c13d000000001d0104340000093000d0009c000000fd0000213d0000001f04d00039000009c8044001970000003f04400039000009c804400197000000400e00043d00000000044e00190000000000e4004b00000000050000390000000105004039000009300040009c000000fd0000213d0000000100500190000000fd0000c13d000000400040043f0000000004de043600000000051d00190000000000c5004b000000f80000213d00000000000d004b00001b8c0000613d0000000005000019000000000645001900000000081500190000000008080433000000000086043500000020055000390000000000d5004b00001b850000413d0000000001d4001900000000000104350000004001b000390000000000e104350000006001a0003900000000010104330000092b0010009c000000f80000213d0000006004b000390000000000140435000000200400002900000000040404330000000005040433000000000075004b00001cca0000a13d00000005057002100000000004450019000000200440003900000000040404330000092b0440019800001ad90000613d000000000014004b00001ad90000813d0000001c0200002900000180022000390000000002020433000000400300043d000000640530003900000000004504350000004404300039000000000014043500000024013000390000000000710435000009a1010000410000000000130435000000040130003900000000002104350000092b0030009c0000092b030080410000004001300210000009a2011001c7000024aa000104300000000a0000006b00001bbd0000613d0000000301000039000000000101041a001f00000001001d000009870010019800001c320000c13d0000000001000415000000010110006900000000010000020000000004000031000000200240006a0000000201000367000000230720008a000000a40000013d000000400300043d002000000003001d0000097b0100004100000000001304350000000401300039000000200200003900000000002104350000002402300039000000160100002900001c0b0000013d000000400200043d002000000002001d0000097b0100004100000000001204350000000401200039000000170200002924a81de20000040f000000200200002900000000012100490000092b0010009c0000092b0100804100000060011002100000092b0020009c0000092b020080410000004002200210000000000121019f000024aa00010430000000400200043d000000240320003900000020040000290000000000430435000009960300004100000000003204350000000403200039000000000013043500001a8f0000013d00000017010000290000000001010433000000400200043d000009860300004100000000003204350000092f01100197000000040320003900000000001304350000092b0020009c0000092b02008041000000400120021000000972011001c7000024aa000104300000001f0530018f0000092d06300198000000400200043d0000000004620019000008c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bfd0000c13d000008c40000013d000000400300043d002000000003001d0000097b0100004100000000001304350000000401300039000000200200003900000000002104350000002402300039000000170100002924a81dad0000040f000000200200002900000000012100490000092b0010009c0000092b010080410000092b0020009c0000092b0200804100000060011002100000004002200210000000000121019f000024aa00010430000000400200043d0000004403200039000000000013043500000024012000390000000c030000290000000000310435000009820100004100000000001204350000000401200039000000190300002900000000003104350000092b0020009c0000092b02008041000000400120021000000942011001c7000024aa000104300000001f0530018f0000092d06300198000000400200043d0000000004620019000008c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c2d0000c13d000008c40000013d0000000401000039000000000101041a001e00000001001d0000093501000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f000000010020019000001c500000613d0000001f0200002900000080022002700000092b02200197000000000301043b000000000423004b0000013f0000413d0000001f0100002900000932011001970000001e02000029000009320220019700001c6a0000613d000000000021004b00001c580000a13d000000400100043d000009890200004100000a9d0000013d000000000001042f000000240320003900000000001304350000099701000041000000000012043500000004012000390000001e0300002900001a8e0000013d0000001e05000029000000800650027000000000056400a900000000044500d9000000000064004b0000013f0000c13d000000000015001a0000013f0000413d0000000001150019000000800330021000000938033001970000000305000039000000000405041a0000098804400197000000000334019f000000000035041b000000000012004b00000000010240190000000a0020006c00001c790000813d000000400100043d00000024031000390000000a0400002900000000004304350000098e030000410000000000310435000000040310003900000000002304350000092b0010009c0000092b0100804100000040011002100000097d011001c7000024aa000104300000000a0210006c00001c910000813d0000000402000039000000000202041a00000080022002720000013f0000613d0000000a041000690000000003240019000000010330008a000000000043004b0000013f0000413d000000400400043d000000240540003900000000001504350000098d01000041000000000014043500000000012300d9000000040240003900000000001204350000092b0040009c0000092b0400804100000040014002100000097d011001c7000024aa0001043000000932012001970000000303000039000000000203041a0000098a02200197000000000112019f000000000013041b000000400100043d0000000a0200002900000000002104350000092b0010009c0000092b01008041000000400110021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f0000098b011001c70000800d0200003900000001030000390000098c0400004124a8249e0000040f000000010020019000001bbd0000c13d000000f80000013d000000000032043500001ce20000c13d0000000902000039000000000302041a000000000013004b00001cca0000a13d000000000020043f000009990110009a000000000101041a0000092f011001970000000002000411000000000012004b00001ce20000c13d000001450100008a0000001f0010006b0000013f0000213d0000001f010000290000014401100039000000160010002a0000013f0000413d0000001601100029000000150010002a0000013f0000413d00000015011000290000000002000031000000000012004b000007de0000613d000000400300043d000000240430003900000000002404350000099b0200004100001cda0000013d000009a401000041000000000010043f0000003201000039000000040010043f0000097201000041000024aa000104300000001c0200002900000180012000390000000001010433000000600220003900000000020204330000093002200197000000400300043d00000024043000390000000000240435000009a0020000410000000000230435000000040230003900000000001204350000092b0030009c0000092b0300804100000040013002100000097d011001c7000024aa00010430000000400100043d0000099a0200004100000a9d0000013d0000001c0100002900000180011000390000000001010433000000400200043d00000044032000390000000000430435000000240320003900000000005304350000099f0300004100000000003204350000000403200039000000000013043500001c210000013d000009bb01000041000000170300002900000000001304350000000401300039000000020200003900000000002104350000092b0030009c0000092b03008041000000400130021000000972011001c7000024aa00010430000009bc01000041000000170200002900000aa50000013d000000200400002900000000014100490000092b0010009c0000092b0100804100000060011002100000092b0040009c0000092b040080410000004004400210000000000141019f0000092b0030009c0000092b03008041000000c003300210000000000113019f24a8249e0000040f00000060031002700001092b0030019d0000092b033001970003000000010355000000010020019000001d780000613d000009c8043001980000001f0530018f000000200240002900001d1e0000613d000000000601034f0000002007000029000000006806043c0000000007870436000000000027004b00001d1a0000c13d000000000005004b00001d2b0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000009c8011001970000002002100029000000000012004b00000000010000390000000101004039000009300020009c000000fd0000213d0000000100100190000000fd0000c13d000000400020043f000009680030009c000000f80000213d000000600030008c000000f80000413d00000020010000290000000001010433000000000001004b0000000004000039000000010400c039000000000041004b000000f80000c13d0000001f040000290000000004040433000009300040009c000000f80000213d000000200530002900000020034000290000001f04300039000000000054004b00000000060000190000096b060080410000096b044001970000096b07500197000000000874013f000000000074004b00000000040000190000096b040040410000096b0080009c000000000406c019000000000004004b000000f80000c13d0000000043030434000009300030009c000000fd0000213d0000001f06300039000009c8066001970000003f06600039000009c8066001970000000006260019000009300060009c000000fd0000213d000000400060043f00000000063204360000000007430019000000000057004b000000f80000213d000000000003004b00001d6e0000613d000000000500001900000000076500190000000008450019000000000808043300000000008704350000002005500039000000000035004b00001d670000413d00000000036300190000000000030435000000000001004b000014970000c13d000000400300043d002000000003001d00000994010000410000000000130435000000040130003900001bd50000013d0000001f0530018f0000092d06300198000000400200043d0000000004620019000008c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001d7f0000c13d000008c40000013d000009cb0010009c00001d890000813d000000a001100039000000400010043f000000000001042d000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa000104300000001f02200039000009c8022001970000000001120019000000000021004b00000000020000390000000102004039000009300010009c00001d9b0000213d000000010020019000001d9b0000c13d000000400010043f000000000001042d000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa00010430000000400100043d000009cc0010009c00001da70000813d000000e002100039000000400020043f000000000001042d000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa0001043000000000430104340000000001320436000000000003004b00001db90000613d000000000200001900000000051200190000000006240019000000000606043300000000006504350000002002200039000000000032004b00001db20000413d000000000213001900000000000204350000001f02300039000009c8022001970000000001210019000000000001042d000000000301001900000000040104330000000001420436000000000004004b00001dcc0000613d0000000002000019000000200330003900000000050304330000092f0550019700000000015104360000000102200039000000000042004b00001dc50000413d000000000001042d000000400100043d000009cb0010009c00001ddc0000813d000000a002100039000000400020043f000000800210003900000000000204350000006002100039000000000002043500000040021000390000000000020435000000200210003900000000000204350000000000010435000000000001042d000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa0001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b00001df10000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001dea0000413d000000000312001900000000000304350000001f02200039000009c8022001970000000001120019000000000001042d0015000000000002000b00000002001d001200000001001d000000400200043d000009cd01000041001500000002001d000000000012043500000970010000410000000000100443000000000100041200000004001004430000004001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d00000015020000290000000402200039000000000101043b0000008001100210000009ce0110019700000000001204350000097001000041000000000010044300000000010004120000000400100443000000e001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d000000150b000029000000000201043b00000000010004140000092f02200197000000040020008c00001e2d0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001e580000013d0000092b00b0009c0000092b0300004100000000030b401900000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f00000972011001c724a824a30000040f000000150b00002900000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001e470000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001e430000c13d000000000006004b00001e540000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000024400000613d0000001f01400039000000600110018f0000000002b10019000000000012004b00000000010000390000000101004039000d00000002001d000009300020009c000023de0000213d0000000100100190000023de0000c13d0000000d01000029000000400010043f0000001f0030008c000023d60000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000023d60000c13d000000000001004b000024320000c13d000000120100002900000000210104340000000003010433000000000003004b000024340000613d000300000002001d00000000010204330000000001010433000000000013004b000024360000c13d001100000003001d000009300030009c000023de0000213d000000110100002900000005021002100000003f012000390000095f011001970000000d01100029000009300010009c000023de0000213d000000400010043f00000011010000290000000d030000290000000001130436000c00000001001d0000001f0120018f000000000002004b00001e930000613d0000000c04000029000000000224001900000000030000310000000203300367000000003503043c0000000004540436000000000024004b00001e8f0000c13d000000000001004b0000097001000041000000000010044300000000010004120000000400100443000000a001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d000000000101043b000a00000001001d0000000003000019000000120100002900000000010104330000000002010433000000000032004b000023d80000a13d001400000003001d0010000500300218000000100110002900000020011000390000000009010433000000200190003900000000010104330000004002900039000000000302043300000060029000390000000004020433000000a0029000390000000005020433000000c0029000390000000006020433000000e002900039000000000702043300000080029000390000000008020433001500000009001d00000100029000390000000009020433000000400200043d000001000a20003900000000009a0435000000800920003900000000008904350000092f07700197000000e00820003900000000007804350000093006600197000000c0072000390000000000670435000000000005004b0000000005000039000000010500c039000000a00620003900000000005604350000093004400197000000600520003900000000004504350000092f0330019700000040042000390000000000340435000001000300003900000000033204360000092f011001970000000000130435000009780020009c000023de0000213d0000012001200039000000400010043f0000092b0030009c0000092b03008041000000400130021000000000020204330000092b0020009c0000092b020080410000006002200210000000000112019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d00000015020000290000012002200039000000000202043300000020032000390000092b0030009c0000092b03008041000000400330021000000000020204330000092b0020009c0000092b020080410000006002200210000000000232019f000000000101043b001300000001001d00000000010004140000092b0010009c0000092b01008041000000c001100210000000000121019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000601043b000000150100002900000140011000390000000003010433000000400100043d0000002002100039000000200400003900000000004204350000004004100039000000000503043300000000005404350000006004100039000000000005004b000f00000006001d00001f260000613d0000000006000019000000200900008a0000002003300039000000000703043300000000870704340000092f0770019700000000077404360000000008080433000000000087043500000040044000390000000106600039000000000056004b00001f1a0000413d00001f270000013d000000200900008a0000000003140049000000200430008a00000000004104350000001f03300039000000000493016f0000000003140019000000000043004b00000000040000390000000104004039000009300030009c000023de0000213d0000000100400190000023de0000c13d000000400030043f0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000101043b000e00000001001d000000150100002900000160011000390000000003010433000000400100043d000000200210003900000020040000390000000000420435000000000403043300000005054002100000000006510019000000400510003900000000004504350000006007600039000000000004004b00001f760000613d0000000006000019000000200d00008a00001f630000013d000000000978001900000000000904350000001f088000390000000008d8016f00000000077800190000000106600039000000000046004b00001f770000813d0000000008170049000000600880008a000000200550003900000000008504350000002003300039000000000803043300000000980804340000000007870436000000000008004b00001f5b0000613d000000000a000019000000000b7a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000008a004b00001f6e0000413d00001f5b0000013d000000200d00008a0000000003170049000000200430008a00000000004104350000001f033000390000000004d3016f0000000003140019000000000043004b00000000040000390000000104004039000009300030009c000023de0000213d0000000100400190000023de0000c13d000000400030043f0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000201043b000000400100043d000000c0031000390000000000230435000000a0021000390000000e03000029000000000032043500000080021000390000000f03000029000000000032043500000060021000390000001303000029000000000032043500000040021000390000000a030000290000000000320435000000c002000039000000000221043600000000000204350000092e0010009c000023de0000213d000000e003100039000000400030043f0000092b0020009c0000092b02008041000000400220021000000000010104330000092b0010009c0000092b010080410000006001100210000000000121019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000101043b0000000d0800002900000000020804330000001403000029000000000032004b000023d80000a13d00000010040000290000000c0240002900000000001204350000000002080433000000000032004b000023d80000a13d000000150200002900000180022000390000000002020433000000000021004b0000001101000029000023eb0000c13d0000000103300039000000000013004b00001ea60000413d000000120200002900000060012000390000000001010433000000400220003900000000020204330000000b030000290000000006030433000000400900043d000009d20300004100000000003904350000000403900039000000600400003900000000004304350000000005080433000000640490003900000000005404350000008404900039000000000006004b0000000006000039000000010600c039000400000006001d000000000005004b00001ff30000613d00000000060000190000002008800039000000000708043300000000047404360000000106600039000000000056004b00001fed0000413d00000000033400490000002405900039000000000035043500000000030204330000000006340436000000000003004b000020010000613d00000000040000190000002002200039000000000502043300000000065604360000000104400039000000000034004b00001ffb0000413d001400000006001d001500000009001d0000004402900039000000000012043500000970010000410000000000100443000000000100041200000004001004430000002001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d000000000201043b00000000010004140000092f02200197000000040020008c0000001403000029000020200000c13d0000000103000031000000200030008c00000020040000390000000004034019000000150b0000290000204f0000013d000000150400002900000000034300490000092b0030009c0000092b0300804100000060033002100000092b0040009c0000092b040080410000004004400210000000000343019f0000092b0010009c0000092b01008041000000c001100210000000000131019f24a824a30000040f000000150b00002900000060031002700000092b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000203e0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000203a0000c13d000000000006004b0000204b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000244c0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000009300010009c000023de0000213d0000000100200190000023de0000c13d000000400010043f000000200030008c000023d60000413d00000000020b0433000100000002001d000000000002004b0000243e0000613d000a00040000002d0000000003000019000020800000013d0000001f04200039000000000494016f0000000002320019000000000002043500000060024000390000092b0020009c0000092b0200804100000060022002100000092b0010009c0000092b010080410000004001100210000000000112019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c70000800d020000390000000303000039000009dc0400004124a8249e0000040f0000000100200190000a00040000002d000023d60000613d00000013030000290000000103300039000000110030006c000023d50000813d000000120100002900000000010104330000000002010433000000000032004b000023d80000a13d001300000003001d0000000502300210000e00200020003d0000000e011000290000000001010433001400000001001d0000006001100039001500000001001d0000000001010433001000000001001d0000093001100197000f00000001001d0000000701100270000000000010043f0000001001000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d0000000f020000290000000102200210000000000101043b000000000101041a00000010030000290000007f03300190000020a90000613d000000ff0420018f00000000033400d9000000020030008c000023e40000c13d000000fe0220018f000000000121022f0000000301100190000020c90000613d000000030010008c000022c80000c13d000f00000001001d0000000a0000006b0000001303000029000020ce0000c13d000000150100002900000000010104330000093001100197000000400200043d00000000001204350000092b0020009c0000092b02008041000000400120021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f0000098b011001c70000800d020000390000000103000039000009e00400004124a8249e0000040f0000000100200190000a00000000001d0000207c0000c13d000023d60000013d000f00000001001d0000000a0000006b000c00600000003d0000001303000029000020fc0000613d0000000b010000290000000001010433000000000031004b000023d80000a13d0000000e020000290000000b01200029001000000001001d000000000101043300000020011000390000000001010433000c00000001001d0000093501000041000000000010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000936011001c70000800b0200003924a824a30000040f0000000100200190000023ea0000613d000000000101043b000000010110006c000023e40000413d0000000f02000029000000030020008c000020ef0000613d0000000a02000039000000000202041a0000092b02200197000000000021004b0000240e0000a13d0000000b0100002900000000010104330000001303000029000000000031004b000023d80000a13d000000100100002900000000010104330000000001010433000000000001004b000020fc0000613d0000001402000029000000800220003900000000001204350000001402000029000000c001200039000d00000001001d00000000010104330000093000100198001000200020003d000021220000613d000000100100002900000000010104330000092f01100197000000000010043f0000000f01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000101043b000000000101041a0000093004100198000023150000613d0000000f0000006b0000001303000029000021220000c13d000009300040009c000023e40000613d0000000d01000029000000000101043300000930051001970000000101400039000000000051004b0000001303000029000023650000c13d000000030100002900000000010104330000000002010433000000000032004b000023d80000a13d0000000e01100029000000000301043300000015010000290000000001010433000200000001001d00000014020000290000012001200039000500000001001d00000000010104330000000001010433000a00000001001d0000000001020433000e00000001001d0000014001200039000600000001001d00000000010104330000000001010433000900000001001d000700000003001d0000000001030433000800000001001d00000970010000410000000000100443000000000100041200000004001004430000004001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d000000000101043b0000000e03000029000000000131013f0000093000100198000023ee0000c13d0000000a01000039000000000101041a00000040021002700000ffff0220018f0000000903000029000000000032004b0000000a04000029000023f30000413d0000000002030019000000080020006c000023f60000c13d00000020011002700000092b01100197000000000041004b000024020000413d00000015010000290000000002010433000009300120019700000001041002100000007f02200190000021690000613d000000ff0340018f00000000022300d9000000020020008c000023e40000c13d000e00000004001d0000000701100270000000000010043f0000001001000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d0000000e02000029000000fe0220018f000000030320020f000009e303300167000000000101043b000000000401041a000000000334016f000000010220020f000000000223019f000000000021041b000009790100004100000000001004430000000001000410000000040010044300000000010004140000092b0010009c0000092b01008041000000c0011002100000097a011001c7000080020200003924a824a30000040f0000000100200190000023ea0000613d000000000101043b000000000001004b000023d60000613d000000400e00043d000009da01000041000000000d1e04360000000401e00039000000600200003900000000002104350000001403000029000000000103043300000930011001970000006402e000390000000000120435000000100100002900000000010104330000092f011001970000008402e000390000000000120435000000400130003900000000010104330000092f01100197000000a402e000390000000000120435000000150100002900000000010104330000093001100197000000c402e00039000000000012043500000080013000390000000001010433000000e402e000390000000000120435000000a0013000390000000001010433000000000001004b0000000001000039000000010100c0390000010402e0003900000000001204350000000d01000029000000000101043300000930011001970000012402e000390000000000120435000000e00130003900000000010104330000092f011001970000014402e000390000000000120435000001000130003900000000010104330000016402e000390000000000120435000000050100002900000000010104330000018402e00039000001a00300003900000000003204350000020402e00039000000003101043400000000001204350000022402e00039000000000001004b000021d70000613d000000000400001900000000052400190000000006430019000000000606043300000000006504350000002004400039000000000014004b000021d00000413d000000000321001900000000000304350000001f01100039000009c80310019700000006010000290000000001010433000001a404e00039000001c0053000390000000000540435000000000223001900000000030104330000000002320436000000000003004b000021f10000613d00000000040000190000002001100039000000000501043300000000650504340000092f0550019700000000055204360000000006060433000000000065043500000040022000390000000104400039000000000034004b000021e60000413d0000000001e20049000000640110008a000000140300002900000160033000390000000003030433000001c404e00039000000000014043500000000040304330000000000420435000000050140021000000000011200190000002001100039000000000004004b0000221d0000613d000000000500001900000000060200190000220a0000013d000000000817001900000000000804350000001f07700039000009c80770019700000000011700190000000105500039000000000045004b0000221d0000813d0000000007210049000000200770008a000000200660003900000000007604350000002003300039000000000703043300000000870704340000000001710436000000000007004b000022020000613d0000000009000019000000000a190019000000000b980019000000000b0b04330000000000ba04350000002009900039000000000079004b000022150000413d000022020000013d0000000002e10049000000040220008a00000014030000290000018003300039000900000003001d00000000030304330000002404e000390000000000240435000001e402e000390000000000320435000000070b00002900000000020b04330000000000210435000000050320021000000000033100190000002005300039000000000002004b0000224d0000613d000000000300001900000000040100190000223a0000013d000000000756001900000000000704350000001f06600039000009c80660019700000000055600190000000103300039000000000023004b0000224d0000813d0000000006150049000000200660008a00000020044000390000000000640435000000200bb0003900000000060b043300000000760604340000000005650436000000000006004b000022320000613d00000000080000190000000009580019000000000a870019000000000a0a04330000000000a904350000002008800039000000000068004b000022450000413d000022320000013d0000000001e50049000000040110008a0000004402e0003900000000001204350000000c0100002900000000020104330000000001250436000000000002004b0000225f0000613d00000000030000190000000c05000029000000200550003900000000040504330000092b0440019700000000014104360000000103300039000000000023004b000022580000413d00000000020004140000000003000410000000040030008c0000227b0000613d0000000001e100490000092b0010009c0000092b0100804100000060011002100000092b00e0009c0000092b0300004100000000030e40190000004003300210000000000131019f0000092b0020009c0000092b02008041000000c002200210000000000121019f000000000200041000140000000d001d000e0000000e001d24a8249e0000040f0000000e0e000029000000140d00002900000060031002700001092b0030019d00030000000103550000000100200190000023370000613d0000093000e0009c000023de0000213d0000004000e0043f0000096a00e0009c000023de0000213d0000004000d0043f00000000000e043500000000050000190000000204000039000800000005001d000c00000004001d000e0000000e001d00140000000d001d00000015010000290000000002010433000009300120019700000001041002100000007f02200190000022920000613d000000ff0340018f00000000022300d9000000020020008c000023e40000c13d000700000004001d0000000701100270000a00000001001d000000000010043f0000001001000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000101043b000000000101041a000600000001001d0000000a01000029000000000010043f0000001001000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d0000000702000029000000fe0220018f0000000c0700002900000000032701cf000000030220020f000009e302200167000000060220017f000000000232019f000000000101043b000000000021041b00000008010000290000000100100190000022d70000613d0000000f0000006b000000200900008a000000140a0000290000000e02000029000024160000c13d0000000d0100002900000000010104330000093000100198000022e00000c13d000022fc0000013d00000015010000290000000001010433000000000200041400000930051001970000092b0020009c0000092b02008041000000c001200210000009ab011001c70000800d020000390000000203000039000009d30400004124a8249e0000040f00000001002001900000207c0000c13d000023d60000013d0000000d0100002900000000010104330000093000100198000000200900008a000000140a0000290000000e02000029000022fc0000613d0000000f0000006b000022fc0000c13d000000100100002900000000010104330000092f01100197000000000010043f0000000f01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c7000080100200003924a824a30000040f0000000100200190000023d60000613d000000000101043b000000000201041a0000093003200197000009300030009c000023e40000613d000009d6022001970000000103300039000000000223019f000000000021041b000000200900008a000000140a0000290000000e020000290000000c070000290000000901000029000000000601043300000015010000290000000004010433000000400100043d000000200510003900000040030000390000000000350435000000000071043500000000020204330000004003100039000000000023043500000060031000390000093005400197000000000002004b000020630000613d0000000004000019000000000734001900000000084a0019000000000808043300000000008704350000002004400039000000000024004b0000230d0000413d000020630000013d0000097001000041000000000010044300000000010004120000000400100443000000c001000039000000240010044300000000010004140000092b0010009c0000092b01008041000000c00110021000000971011001c7000080050200003924a824a30000040f0000000100200190000023ea0000613d000000000101043b0000092f02100198000023710000613d00000010010000290000000001010433000000400a00043d000009a70300004100000000003a04350000092f011001970000000403a0003900000000001304350000000001000414000000040020008c000023730000c13d0000000103000031000000200030008c000000200400003900000000040340190000239e0000013d0000092b023001980000000405000029000000800d0000390000000304000039000000600e000039000022840000613d0000001f032000390000092c033001970000003f03300039000009db03300197000000400e00043d00000000033e00190000000000e3004b00000000040000390000000104004039000009300030009c000023de0000213d0000000100400190000023de0000c13d000000400030043f000000000d2e04360000092d0420019800000000034d0019000023550000613d000000000501034f00000000060d0019000000005705043c0000000006760436000000000036004b000023510000c13d0000001f02200190000023620000613d000000000141034f0000000302200210000000000403043300000000042401cf000000000424022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000141019f000000000013043500000004050000290000000304000039000022840000013d0000001001000029000000000101043300000000020004140000092b0020009c0000092b020080410000092f06100197000000c001200210000009ab011001c70000800d020000390000000303000039000009d704000041000022d30000013d0000000004000019000021160000013d0000092b00a0009c0000092b0300004100000000030a401900000040033002100000092b0010009c0000092b01008041000000c001100210000000000131019f00000972011001c700090000000a001d24a824a30000040f000000090a00002900000060031002700000092b03300197000000200030008c00000020040000390000000004034019000000200640019000000000056a00190000238d0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b000023890000c13d0000001f074001900000239a0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000024260000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000390000000102004039000009300010009c000023de0000213d0000000100200190000023de0000c13d000000400010043f000000200030008c000023d60000413d00000000030a0433000009300030009c000023d60000213d000023e40000613d000000100100002900000000010104330000092f061001970000000d01000029000000000101043300000930051001970000000101300039000000000051004b000023cc0000c13d000000000060043f0000000f01000039000000200010043f00000000010004140000092b0010009c0000092b01008041000000c00110021000000962011001c70000801002000039000900000003001d24a824a30000040f00000009040000290000000100200190000023d60000613d000000000101043b000000000201041a000009d602200197000000000242019f000000000021041b000021160000013d00000000010004140000092b0010009c0000092b01008041000000c001100210000009ab011001c70000800d020000390000000303000039000009d504000041000022d30000013d000000000001042d0000000001000019000024aa00010430000009a401000041000000000010043f0000003201000039000000040010043f0000097201000041000024aa00010430000009a401000041000000000010043f0000004101000039000000040010043f0000097201000041000024aa00010430000009a401000041000000000010043f0000001101000039000000040010043f0000097201000041000024aa00010430000000000001042f000000400100043d000009d102000041000024100000013d000000400100043d000009d80200004100000000002104350000093002300197000023fb0000013d000000400100043d000009df02000041000023f80000013d000000400100043d000009d902000041000000000021043500000002020000290000093002200197000000040310003900000000002304350000092b0010009c0000092b01008041000000400110021000000972011001c7000024aa00010430000000400200043d00000024032000390000000000430435000009de030000410000000000320435000000040320003900000000001304350000092b0020009c0000092b0200804100000040012002100000097d011001c7000024aa00010430000000400100043d000009d40200004100000000002104350000092b0010009c0000092b0100804100000040011002100000093c011001c7000024aa00010430000000400300043d001500000003001d000009dd010000410000000000130435000000040130003924a81de20000040f000000150200002900000000012100490000092b0010009c0000092b0100804100000060011002100000092b0020009c0000092b020080410000004002200210000000000121019f000024aa000104300000001f0530018f0000092d06300198000000400200043d0000000004620019000024570000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000242d0000c13d000024570000013d000009cf01000041000024370000013d000009e201000041000024370000013d000009d0010000410000000d0200002900000000001204350000092b0020009c0000092b0200804100000040012002100000093c011001c7000024aa00010430000009e102000041000024100000013d0000001f0530018f0000092d06300198000000400200043d0000000004620019000024570000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000024470000c13d000024570000013d0000001f0530018f0000092d06300198000000400200043d0000000004620019000024570000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000024530000c13d000000000005004b000024640000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000092b0020009c0000092b020080410000004002200210000000000112019f000024aa00010430000000000001042f0000092b0010009c0000092b0100804100000040011002100000092b0020009c0000092b020080410000006002200210000000000112019f00000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009ab011001c7000080100200003924a824a30000040f00000001002001900000247e0000613d000000000101043b000000000001042d0000000001000019000024aa0001043000000000050100190000000000200443000000050030008c0000248e0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000024860000413d0000092b0030009c0000092b03008041000000600130021000000000020004140000092b0020009c0000092b02008041000000c002200210000000000112019f000009e4011001c7000000000205001924a824a30000040f00000001002001900000249d0000613d000000000101043b000000000001042d000000000001042f000024a1002104210000000102000039000000000001042d0000000002000019000000000001042d000024a6002104230000000102000039000000000001042d0000000002000019000000000001042d000024a800000432000024a90001042e000024aa00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffff1f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000ffffffffffffffffffffff0000000000000000000000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b4120fccd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000df85440e000000000000000000000000000000000000000000000000000000008acd72527118c8324937b1a42e02cd246697c3b633f1742f3cae11de233722b3000000020000000000000000000000000000028000000100000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000081ff704700000000000000000000000000000000000000000000000000000000afcb95d600000000000000000000000000000000000000000000000000000000c92b283100000000000000000000000000000000000000000000000000000000c92b283200000000000000000000000000000000000000000000000000000000f077b59200000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000afcb95d700000000000000000000000000000000000000000000000000000000b1dc65a400000000000000000000000000000000000000000000000000000000b6113fce00000000000000000000000000000000000000000000000000000000873504d600000000000000000000000000000000000000000000000000000000873504d7000000000000000000000000000000000000000000000000000000008926c4ee000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000081ff704800000000000000000000000000000000000000000000000000000000856c824700000000000000000000000000000000000000000000000000000000599f643000000000000000000000000000000000000000000000000000000000704b6c0100000000000000000000000000000000000000000000000000000000704b6c02000000000000000000000000000000000000000000000000000000007437ff9f0000000000000000000000000000000000000000000000000000000079ba509700000000000000000000000000000000000000000000000000000000599f643100000000000000000000000000000000000000000000000000000000666cab8d00000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000001ef3817400000000000000000000000000000000000000000000000000000000546719cd0000000000000000000000000000000000000000000000000000000006285c6900000000000000000000000000000000000000000000000000000000142a98fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b57390200000000000000000000000000000000000040000000000000000000000000f6cd5620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000e00000000000000000ffffffffffffffffffffff00ffffffff0000000000000000000000000000000002000000000000000000000000000000000000600000000000000000000000009ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff371a732800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf000000000000000000000000fffffffffffffffffffffffffffffffffffffbff8d666f6000000000000000000000000000000000000000000000000000000000bbe4f6db00000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000002400000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000aff2afbf0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffedf1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000e1cd55090000000000000000000000000000000000000000000000000000000078ef8024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffeff3907753700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f37c3be2900000000000000000000000000000000000000000000000000000000a966e21f00000000000000000000000000000000000000000000000000000000d02641a00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400009a655f7b000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff9725942a00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000002000000000000000000000000000000000000200000000000000000000000001871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690a15279c0800000000000000000000000000000000000000000000000000000000f94ebcd100000000000000000000000000000000000000000000000000000000afa32a2c000000000000000000000000000000000000000000000000000000000c3b563c00000000000000000000000000000000000000000000000000000000ae9b4ce90000000000000000000000000000000000000000000000000000000085572ffb000000000000000000000000000000000000000000000000000000003cf97983000000000000000000000000000000000000000000000000000000000a8d6e8c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffe5f93df584c000000000000000000000000000000000000000000000000000000000f01ce8500000000000000000000000000000000000000000000000000000000b04e63db38c49950639fa09d29872f21f5d49d614f3a969d8adf3d4b52e41a6291eabfe8e493f369f48e58fdf2609ff8809506ce57440a6f25fddc25308a3851da0f08e8000000000000000000000000000000000000000000000000000000008e1192e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000800000000000000000000000000000000000000000000000000000002000000080000000000000000083e3f564000000000000000000000000000000000000000000000000000000009c6db58d0000000000000000000000000000000000000000000000000000000085d2e5bf00000000000000000000000000000000000000000000000000000000ef0c6352000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b573a4e487b7100000000000000000000000000000000000000000000000000000000cbf3cbeaed4ac1d605ed30f4af06c35acaeff2379db7f6146c9cceee83d58782fc23abf7ddbd3c02b1420dafa2355c56c1a06fbb8723862ac14d6bd74177361a856c82470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004f6e6c792063616c6c61626c65206279206f776e65720000000000000000000000000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c660000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000400000080000000000000000002000000000000000000000000000000000000200000008000000000000000008fe72c3e0020beb3234e76ae6676fa576fbfcae600af1c4fea44784cf0db329c6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af00000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000ffff00000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000001800000000000000000000000007879e20bb60a503429de4a2c912b5904f08a39f2af054c10fb46434b5d611260367f56a200000000000000000000000000000000000000000000000000000000d6c62c9b00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000100000000000000000000000000000000000000000000000000000000000042cbb15ccdc3cad6266b0e7a08c0454b23bf29dc2df74b6f3c209e9336465bd1ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e058579befe0000000000000000000000000000000000000000000000000000000045564d3245564d4f666652616d7020312e352e300000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000e0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff000000000000000000000000000000000000000000000000ffffffffffffff60000000000000000000000000000000000000000000000000ffffffffffffff202cbc26bb000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000053ad11d80000000000000000000000000000000000000000000000000000000057e0e083000000000000000000000000000000000000000000000000000000007185cf6b000000000000000000000000000000000000000000000000000000003204887500000000000000000000000000000000000000000000000000000000e3dd0bec917c965a133ddb2c84874725ee1e2fd8d763c19efa36d6a11cd82b1f6358b0d000000000000000000000000000000000000000000000000000000000e44a20935573a783dd0d5991c92d7b6a0eb3173566530364db3ec10e9a990b5dffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000d32ddb11d71e3d63411d37b09f9a8b28664f1cb1338bfd1413c173b0ebf412371279ec8a000000000000000000000000000000000000000000000000000000008808f8e700000000000000000000000000000000000000000000000000000000b6113fce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffe0d4f851956a5d67c3997d1c9205045fef79bae2947fdee7e9e2641abc7391ef65cf19edfd000000000000000000000000000000000000000000000000000000008693378900000000000000000000000000000000000000000000000000000000099d3f720000000000000000000000000000000000000000000000000000000067d9ba0f63d427c482c2736300e6d5a34c6691dbcdea8ad35828a1f1ba47e872ea7568010000000000000000000000000000000000000000000000000000000000bf199700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff020000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009168ba79fd88ade4089995c40afe9d661c5d5ec307701f4a5dc06541c12b1303") + type GetAllRateLimitTokens struct { SourceTokens []common.Address DestTokens []common.Address @@ -2658,6 +2679,82 @@ func (_EVM2EVMOffRamp *EVM2EVMOffRamp) Address() common.Address { return _EVM2EVMOffRamp.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *EVM2EVMOffRamp, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(EVM2EVMOffRampZkBin) + fmt.Println("deploying") + EVM2EVMOffRampAbi, err := EVM2EVMOffRampMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := EVM2EVMOffRampAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := EVM2EVMOffRampMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &EVM2EVMOffRamp{address: address, abi: *parsed, EVM2EVMOffRampCaller: EVM2EVMOffRampCaller{contract: contractBind}, EVM2EVMOffRampTransactor: EVM2EVMOffRampTransactor{contract: contractBind}, EVM2EVMOffRampFilterer: EVM2EVMOffRampFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type EVM2EVMOffRampInterface interface { CcipReceive(opts *bind.CallOpts, arg0 ClientAny2EVMMessage) error diff --git a/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go b/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go index 38a4152c71..ebce0c1c67 100644 --- a/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go +++ b/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go @@ -4,6 +4,7 @@ package evm_2_evm_onramp import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -149,7 +154,21 @@ var EVM2EVMOnRampABI = EVM2EVMOnRampMetaData.ABI var EVM2EVMOnRampBin = EVM2EVMOnRampMetaData.Bin -func DeployEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig EVM2EVMOnRampStaticConfig, dynamicConfig EVM2EVMOnRampDynamicConfig, rateLimiterConfig RateLimiterConfig, feeTokenConfigs []EVM2EVMOnRampFeeTokenConfigArgs, tokenTransferFeeConfigArgs []EVM2EVMOnRampTokenTransferFeeConfigArgs, nopsAndWeights []EVM2EVMOnRampNopAndWeight) (common.Address, *types.Transaction, *EVM2EVMOnRamp, error) { +func DeployEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig EVM2EVMOnRampStaticConfig, dynamicConfig EVM2EVMOnRampDynamicConfig, rateLimiterConfig RateLimiterConfig, feeTokenConfigs []EVM2EVMOnRampFeeTokenConfigArgs, tokenTransferFeeConfigArgs []EVM2EVMOnRampTokenTransferFeeConfigArgs, nopsAndWeights []EVM2EVMOnRampNopAndWeight) (common.Address, *CustomTransaction, *EVM2EVMOnRamp, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncEVM2EVMOnRamp(auth, backend, staticConfig, dynamicConfig, rateLimiterConfig, feeTokenConfigs, tokenTransferFeeConfigArgs, nopsAndWeights) + } + parsed, err := EVM2EVMOnRampMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -162,7 +181,7 @@ func DeployEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBackend, if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &EVM2EVMOnRamp{address: address, abi: *parsed, EVM2EVMOnRampCaller: EVM2EVMOnRampCaller{contract: contract}, EVM2EVMOnRampTransactor: EVM2EVMOnRampTransactor{contract: contract}, EVM2EVMOnRampFilterer: EVM2EVMOnRampFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &EVM2EVMOnRamp{address: address, abi: *parsed, EVM2EVMOnRampCaller: EVM2EVMOnRampCaller{contract: contract}, EVM2EVMOnRampTransactor: EVM2EVMOnRampTransactor{contract: contract}, EVM2EVMOnRampFilterer: EVM2EVMOnRampFilterer{contract: contract}}, nil } type EVM2EVMOnRamp struct { @@ -2228,6 +2247,8 @@ func (_EVM2EVMOnRamp *EVM2EVMOnRampFilterer) ParseTokensConsumed(log types.Log) return event, nil } +var EVM2EVMOnRampZkBin string = ("0x000400000000000200330000000000020000006004100270000009b60340019700030000003103550002000000010355000009b60040019d0000000100200190000000200000c13d0000008002000039000000400020043f000000040030008c000000410000413d000000000201043b000000e00220027000000a050020009c0000004c0000a13d00000a060020009c0000005f0000213d00000a100020009c000003d20000a13d00000a110020009c0000044a0000213d00000a140020009c000006420000613d00000a150020009c000000410000c13d0000000001000416000000000001004b000000410000c13d000000000100041a0000063e0000013d000001a004000039000000400040043f0000000002000416000000000002004b000000410000c13d0000001f02300039000009b702200197000001a002200039000000400020043f0000001f0530018f000009b806300198000001a002600039000000320000613d000000000701034f000000007807043c0000000004840436000000000024004b0000002e0000c13d000000000005004b0000003f0000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000003600030008c000000430000813d0000000001000019000026d500010430000000400a00043d000009b900a0009c000001190000a13d00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d50001043000000a190020009c000002650000a13d00000a1a0020009c000003700000a13d00000a1b0020009c0000042f0000213d00000a1e0020009c000006190000613d00000a1f0020009c000000410000c13d0000000001000416000000000001004b000000410000c13d0000000e01000039000000000101041a000009bc01100197000000800010043f00000a5f01000041000026d40001042e00000a070020009c000003f10000a13d00000a080020009c0000047b0000213d00000a0b0020009c000006800000613d00000a0c0020009c000000410000c13d000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b000009bb0020009c000000410000213d0000002304200039000000000034004b000000410000813d0000000404200039000000000441034f000000000504043b000009bb0050009c000000460000213d00000005045002100000003f04400039000009c004400197000009d90040009c000000460000213d0000008004400039000000400040043f000000800050043f000000a0045000c900000024022000390000000004420019000000000034004b000000410000213d000000000005004b0000095c0000c13d000000000100041a000009ba021001970000000001000411000000000021004b000000910000613d0000000202000039000000000202041a000009ba02200197000000000021004b00000a7c0000c13d000000800100043d000000000001004b000000e10000613d0000000002000019000000400700043d000009d90070009c000000460000213d0000000501200210000000a0011000390000000001010433001d00000002001d000000400210003900000000020204330000002003100039000000000303043300000060041000390000000004040433000000800510003900000000050504330000008006700039000000400060043f000000000005004b0000000005000039000000010500c0390000006006700039001b00000006001d0000000000560435000009bb044001970000004005700039001a00000005001d0000000000450435000009b603300197001c00000007001d0000000003370436000009bb02200197001900000003001d00000000002304350000000001010433000009ba01100197000000000010043f0000000b01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001c020000290000000002020433000009b602200197000000000101043b000000000301041a000009cb03300197000000000223019f000000190300002900000000030304330000002003300210000009db03300197000000000232019f0000001a0300002900000000030304330000006003300210000009dc03300197000000000232019f0000001b030000290000000003030433000000000003004b000009c9030000410000000003006019000000000232019f000000000021041b0000001d020000290000000102200039000000800100043d000000000012004b000000950000413d000000400100043d00000020020000390000000002210436000000800300043d00000000003204350000004002100039000000000003004b000001070000613d000000a004000039000000000500001900000000460404340000000087060434000009ba0770019700000000077204360000000008080433000009b608800197000000000087043500000040076000390000000007070433000009bb077001970000004008200039000000000078043500000060076000390000000007070433000009bb077001970000006008200039000000000078043500000080066000390000000006060433000000000006004b0000000006000039000000010600c03900000080072000390000000000670435000000a0022000390000000105500039000000000035004b000000eb0000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009dd040000410000080e0000013d0000010001a00039000000400010043f000001a00100043d000009ba0010009c000000410000213d00000000011a0436001d00000001001d000001c00100043d000009bb0010009c000000410000213d0000001d020000290000000000120435000001e00100043d000009bb0010009c000000410000213d0000004002a00039001c00000002001d0000000000120435000002000100043d000009bb0010009c000000410000213d0000006002a00039001b00000002001d0000000000120435000002200100043d000009bc0010009c000000410000213d0000008002a00039001a00000002001d0000000000120435000002400100043d000009ba0010009c000000410000213d000000a002a00039001900000002001d0000000000120435000002600100043d000009ba0010009c000000410000213d000000c002a00039001800000002001d0000000000120435000002800100043d000009ba0010009c000000410000213d000000e002a00039001600000002001d0000000000120435000000400100043d001700000001001d000009bd0010009c000000460000213d0000001701000029000001a001100039000000400010043f000002a00100043d000009ba0010009c000000410000213d00000017020000290000000001120436001500000001001d000002c00100043d0000ffff0010008c000000410000213d00000015020000290000000000120435000002e00100043d000009b60010009c000000410000213d00000017020000290000004002200039001400000002001d0000000000120435000003000100043d0000ffff0010008c000000410000213d00000017020000290000006002200039001300000002001d0000000000120435000003200100043d000009b60010009c000000410000213d00000017020000290000008002200039001200000002001d0000000000120435000003400100043d0000ffff0010008c000000410000213d0000001702000029000000a002200039001100000002001d0000000000120435000003600100043d0000ffff0010008c000000410000213d0000001702000029000000c002200039001000000002001d0000000000120435000003800100043d000009ba0010009c000000410000213d0000001702000029000000e002200039000f00000002001d0000000000120435000003a00100043d000009b60010009c000000410000213d00000017020000290000010002200039000e00000002001d0000000000120435000003c00100043d000009b60010009c000000410000213d00000017020000290000012002200039000d00000002001d0000000000120435000003e00100043d0000ffff0010008c000000410000213d00000017020000290000014002200039000c00000002001d0000000000120435000004000100043d000009b60010009c000000410000213d00000017020000290000016002200039000b00000002001d0000000000120435000004200100043d000000000001004b0000000002000039000000010200c039000000000021004b000000410000c13d00000017020000290000018002200039000a00000002001d0000000000120435000000400100043d000009be0010009c000000460000213d0000006002100039000000400020043f000004400200043d000000000002004b0000000004000039000000010400c039000000000042004b000000410000c13d0000000002210436000004600400043d000009bf0040009c000000410000213d0000000000420435000004800500043d000009bf0050009c000000410000213d00000040041000390000000000540435000004a00600043d000009bb0060009c000000410000213d000001a005300039000001bf07600039000000000057004b000000410000813d000001a0076000390000000008070433000009bb0080009c000000460000213d00000005078002100000003f07700039000009c007700197000000400900043d0000000007790019000900000009001d000000000097004b00000000090000390000000109004039000009bb0070009c000000460000213d0000000100900190000000460000c13d000000400070043f00000009090000290000000007890436000800000007001d000001c006600039000000a0078000c90000000007670019003300200090003d000000000057004b000000410000213d00070000000a001d000000000008004b000011060000c13d000004c00700043d000009bb0070009c000000410000213d0000001f06700039000000000036004b0000000008000019000009c308004041000009c306600197000000000006004b0000000009000019000009c309002041000009c30060009c000000000908c019000000000009004b000000410000613d000001a0067000390000000009060433000009bb0090009c000000460000213d0000000506900210000000400a00043d00320000000a001d0000003f06600039000009c00660019700000000066a00190000000000a6004b00000000080000390000000108004039000009bb0060009c000000460000213d0000000100800190000000460000c13d000000400060043f00000000069a0436000001c007700039000000e0089000c900000000087800190031002000a0003d000000000058004b000000410000213d000000000009004b00000e550000c13d000004e00600043d000009bb0060009c000000410000213d0000001f07600039000000000037004b0000000003000019000009c303004041000009c307700197000000000007004b0000000008000019000009c308002041000009c30070009c000000000803c019000000000008004b000000410000613d000001a0036000390000000008030433000009bb0080009c000000460000213d0000000503800210000000400900043d003000000009001d0000003f03300039000009c0033001970000000003390019000000000093004b00000000070000390000000107004039000009bb0030009c000000460000213d0000000100700190000000460000c13d000000400030043f0000000003890436000001c00660003900000006078002100000000007670019002f00200090003d000000000057004b000000410000213d000000000008004b0000024f0000613d0000000008650049000009c10080009c000000410000213d000000400080008c000000410000413d000000400800043d000009c50080009c000000460000213d0000004009800039000000400090043f000000009a060434000009ba00a0009c000000410000213d000000000aa8043600000000090904330000ffff0090008c000000410000213d00000000009a043500000000038304360000004006600039000000000076004b000002390000413d000000400300043d000600000003001d0000000003000411000000000003004b00001b0a0000c13d0000000603000029000000440130003900000a04020000410000000000210435000000240130003900000018020000390000000000210435000009f5010000410000000000130435000000040130003900000020020000390000000000210435000009b60030009c000009b6030080410000004001300210000009fa011001c7000026d50001043000000a230020009c000002810000213d00000a270020009c000004f00000613d00000a280020009c0000048c0000613d00000a290020009c000000410000c13d0000000001000416000000000001004b000000410000c13d000000c001000039000000400010043f0000001301000039000000800010043f00000a7801000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e00200003926d321cc0000040f000000c00110008a000009b60010009c000009b601008041000000600110021000000a79011001c7000026d40001042e00000a240020009c000005620000613d00000a250020009c000004e10000613d00000a260020009c000000410000c13d000000440030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b000009bb0020009c000000410000213d0000002304200039000000000034004b000000410000813d0000000404200039000000000441034f000000000504043b000009bb0050009c000000460000213d00000005045002100000003f04400039000009c004400197000009d90040009c000000460000213d0000008004400039000000400040043f000000800050043f0000002402200039000000e0045000c90000000004240019000000000034004b000000410000213d000000000005004b000008a70000c13d0000002402100370000000000202043b000009bb0020009c000000410000213d0000002304200039000000000034004b0000000005000019000009c305004041000009c304400197000000000004004b0000000006000019000009c306002041000009c30040009c000000000605c019000000000006004b000000410000613d0000000404200039000000000441034f000000000404043b000009bb0040009c000000460000213d00000005054002100000003f06500039000009c006600197000000400700043d0000000006670019001500000007001d000000000076004b00000000070000390000000107004039000009bb0060009c000000460000213d0000000100700190000000460000c13d000000400060043f00000015060000290000000006460436001400000006001d00000024022000390000000005250019000000000035004b000000410000213d000000000004004b000002dc0000613d0000001403000029000000000421034f000000000404043b000009ba0040009c000000410000213d00000000034304360000002002200039000000000052004b000002d40000413d000000000100041a000009ba021001970000000001000411000000000021004b000002e60000613d0000000202000039000000000202041a000009ba02200197000000000021004b00000a7c0000c13d000000800100043d000000000001004b00000c450000c13d000000400100043d00000020020000390000000002210436000000800300043d00000000003204350000004002100039000000000003004b000003190000613d000000a004000039000000000500001900000000460404340000000087060434000009ba0770019700000000077204360000000008080433000009b608800197000000000087043500000040076000390000000007070433000009b60770019700000040082000390000000000780435000000600760003900000000070704330000ffff0770018f0000006008200039000000000078043500000080076000390000000007070433000009b60770019700000080082000390000000000780435000000a0076000390000000007070433000009b607700197000000a0082000390000000000780435000000c0066000390000000006060433000000000006004b0000000006000039000000010600c039000000c0072000390000000000670435000000e0022000390000000105500039000000000035004b000002f30000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009e70400004126d326c90000040f0000000100200190000000410000613d00000015010000290000000001010433000000000001004b0000083a0000613d0000000002000019001d00000002001d000000050120021000000014011000290000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b0000001d02000029000000010220003900000015010000290000000001010433000000000012004b000003320000413d000000000001004b0000083a0000613d000000400100043d000000200200003900000000022104360000001503000029000000000303043300000000003204350000004002100039000000000003004b0000035e0000613d000000000400001900000014060000290000000065060434000009ba0550019700000000025204360000000104400039000000000034004b000003580000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009e8040000410000080e0000013d00000a200020009c0000076b0000613d00000a210020009c000006da0000613d00000a220020009c000000410000c13d0000000001000416000000000001004b000000410000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f0000000301000039000000000101041a000009bf02100197000001200020043f0000008002100270000009b602200197001d00000002001d000001400020043f00000a3e001001980000000001000039000000010100c039000001600010043f0000000401000039000000000101041a000009bf02100197001c00000002001d000001800020043f0000008001100270000001a00010043f0000026001000039000000400010043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f000009c70100004100000000001004430000000001000414000009b60010009c000009b601008041000000c001100210000009c8011001c70000800b0200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000001d06000029000000000361004b000004ea0000413d000001a00200043d000009bf0520019700000000023500a9000001200400043d000000000061004b000003b00000613d00000000033200d9000000000053004b000004ea0000c13d000009bf03400197000000000032001a000004ea0000413d00000000023200190000001c0020006b00000000030200190000001c03004029000001200030043f000009b601100197000001400010043f000000400100043d0000000002310436000001400300043d000009b6033001970000000000320435000001600200043d000000000002004b0000000002000039000000010200c03900000040031000390000000000230435000001800200043d000009bf0220019700000060031000390000000000230435000001a00200043d000009bf0220019700000080031000390000000000230435000009b60010009c000009b601008041000000400110021000000a6a011001c7000026d40001042e00000a160020009c0000077a0000613d00000a170020009c000007300000613d00000a180020009c000000410000c13d0000000001000416000000000001004b000000410000c13d0000000101000039000000000201041a000009ba032001970000000006000411000000000036004b000007f80000c13d000000000300041a000009c604300197000000000464019f000000000040041b000009c602200197000000000021041b0000000001000414000009ba05300197000009b60010009c000009b601008041000000c001100210000009cd011001c70000800d02000039000000030300003900000a6104000041000008370000013d00000a0d0020009c000007b90000613d00000a0e0020009c000007600000613d00000a0f0020009c000000410000c13d000000840030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b001d00000002001d000009bb0020009c000000410000213d0000002402100370000000000202043b000009bb0020009c000000410000213d0000000002230049000009c10020009c000000410000213d000000a40020008c000000410000413d0000006401100370000000000101043b001e00000001001d001c00000001001d000009ba0010009c000000410000213d00000a3001000041000000800010043f0000001d01000029000000800110021000000a3101100197000000840010043f00000a3201000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000201043b0000000001000414000009ba02200197000000040020008c000008e80000c13d0000000103000031000000200030008c000000200400003900000000040340190000090d0000013d00000a1c0020009c000006390000613d00000a1d0020009c000000410000c13d000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000101043b000009ba0010009c000000410000213d0000000202000039000000000302041a000000000400041a000009ba054001970000000004000411000000000054004b000008020000613d000009ba05300197000000000054004b000008020000613d00000a5901000041000000800010043f00000a2b01000041000026d50001043000000a120020009c000006860000613d00000a130020009c000000410000c13d0000000001000416000000000001004b000000410000c13d0000000801000039000000000101041a001b00000001001d000009bb0010009c000000460000213d0000001b0100002900000005011002100000003f02100039000009c002200197000009d90020009c000000460000213d0000008004200039000000400040043f0000001b03000029000000800030043f000000000003004b000008190000c13d001b00000004001d0000000e01000039000000000101041a001d00000001001d00000040010000390000000001140436001c00000001001d0000004002400039000000800100003926d3221e0000040f0000001d020000290000006002200270000009b6022001970000001c0300002900000000002304350000001b020000290000000001210049000009b60010009c000009b601008041000009b60020009c000009b60200804100000060011002100000004002200210000000000121019f000026d40001042e00000a090020009c000006c00000613d00000a0a0020009c000000410000c13d000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000101043b000009bb0010009c000000410000213d00000a2a01000041000000800010043f00000a2b01000041000026d500010430000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000101043b000009ba0010009c000000410000213d0000016002000039000000400020043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000000000010043f0000000c01000039000000200010043f0000004002000039000000000100001926d326960000040f001d00000001001d000001600100003926d321b60000040f0000001d01000029000000000101041a000009b602100197000001600020043f0000002003100270000009b603300197000001800030043f00000040031002700000ffff0330018f000001a00030043f0000005003100270000009b603300197000001c00030043f0000007003100270000009b603300197000001e00030043f00000a39001001980000000003000039000000010300c039000002000030043f00000a50001001980000000001000039000000010100c039000002200010043f000000400100043d0000000002210436000001800300043d000009b6033001970000000000320435000001a00200043d0000ffff0220018f00000040031000390000000000230435000001c00200043d000009b60220019700000060031000390000000000230435000001e00200043d000009b60220019700000080031000390000000000230435000002000200043d000000000002004b0000000002000039000000010200c039000000a0031000390000000000230435000002200200043d000000000002004b0000000002000039000000010200c039000000c0031000390000000000230435000009b60010009c000009b601008041000000400110021000000a7a011001c7000026d40001042e0000000001000416000000000001004b000000410000c13d0000000e01000039000000000101041a0000008001100270000009bb01100197000009bb0010009c000007f40000c13d00000a6201000041000000000010043f0000001101000039000000040010043f000009ec01000041000026d5000104300000000001000416000000000001004b000000410000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f0000028001000039000000400010043f0000000001000412002e00000001001d002d00600000003d0000800501000039000000440300003900000000040004150000002e0440008a000000050440021000000a320200004126d326ab0000040f000009ba01100197000001800010043f0000000001000412002c00000001001d002b00800000003d00000000040004150000002c0440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009bb01100197000001a00010043f0000000001000412002a00000001001d002900a00000003d00000000040004150000002a0440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009bb01100197000001c00010043f0000000001000412002800000001001d002700200000003d0000000004000415000000280440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009bb01100197000001e00010043f0000000001000412002600000001001d002500400000003d0000000004000415000000260440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009bc01100197000002000010043f0000000001000412002400000001001d002300c00000003d0000000004000415000000240440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009ba01100197000002200010043f0000000001000412002200000001001d002100e00000003d0000000004000415000000220440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009ba01100197000002400010043f0000000001000412002000000001001d001f01000000003d0000000004000415000000200440008a0000000504400210000080050100003900000a3202000041000000440300003926d326ab0000040f000009ba01100197000002600010043f0000018001000039000002800200003926d321910000040f00000a7b01000041000026d40001042e000000440030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b001d00000002001d000009bb0020009c000000410000213d0000002401100370000000000101043b000009bb0010009c000000410000213d0000000001130049000009c10010009c000000410000213d000000a40010008c000000410000413d00000a3201000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000001d03000029000000000131013f000009bb001001980000084b0000c13d00000002010003670000002402100370000000000202043b0000008403200039000000000331034f000000000403043b00000000030000310000000005230049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000024200190000000404200039000000000141034f000000000201043b000009bb0020009c000000410000213d00000000032300490000002001400039000009c304300197000009c305100197000000000645013f000000000045004b0000000004000019000009c304004041000000000031004b0000000003000019000009c303002041000009c30060009c000000000403c019000000000004004b000000410000c13d26d325530000040f00000002020003670000002403200370000000000403043b0000002407400039000000000372034f000000000303043b0000000405400039000000000400003100000000065400490000001f0660008a000009c308600197000009c309300197000000000a89013f000000000089004b0000000009000019000009c309004041000000000063004b000000000b000019000009c30b008041000009c300a0009c00000000090bc019001c00000001001d000000000009004b000000410000c13d0000000001530019000000000312034f000000000303043b000009bb0030009c000000410000213d00000000093400490000002001100039000000000091004b000000000a000019000009c30a002041000009c309900197000009c301100197000000000b91013f000000000091004b0000000001000019000009c301004041000009c300b0009c00000000010ac019000000000001004b000000410000c13d0000002001700039000000000712034f000000000707043b000009c309700197000000000a89013f000000000089004b0000000008000019000009c308004041000000000067004b0000000006000019000009c306008041000009c300a0009c000000000806c019000000000008004b000000410000c13d0000001c0600002900000000060604330000000007570019000000000572034f000000000505043b000009bb0050009c000000410000213d000000060850021000000000048400490000002007700039000000000047004b0000000008000019000009c308002041000009c304400197000009c307700197000000000947013f000000000047004b0000000004000019000009c304004041000009c30090009c000000000408c019000000000004004b000000410000c13d0000000604000039000000000704041a000000c004700270000009b604400197000000000034004b00000cce0000813d000000400100043d0000002402100039000000000032043500000a5702000041000000000021043500000004021000390000000000420435000009b60010009c000009b6010080410000004001100210000009e6011001c7000026d500010430000000440030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b001d00000002001d000009ba0020009c000000410000213d0000002401100370000000000101043b001c00000001001d000009ba0010009c000000410000213d000000000100041a000009ba021001970000000001000411000000000021004b000006320000613d0000000202000039000000000202041a000009ba02200197000000000021004b000008470000c13d0000001c01000029000009ba001001980000083c0000c13d00000a6901000041000000800010043f00000a2b01000041000026d5000104300000000001000416000000000001004b000000410000c13d0000000201000039000000000101041a000009ba01100197000000800010043f00000a5f01000041000026d40001042e000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000101043b001d00000001001d000009ba0010009c000000410000213d0000001d01000029000000000010043f0000000d01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a001c00000001001d00000a3201000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000400b00043d0000001c02000029000009bb03200197000000000101043b000009ba02100198000008550000613d000000000003004b000008550000c13d00000a470100004100000000001b04350000000401b000390000001d0300002900000000003104350000000001000414000000040020008c0000091f0000c13d0000000103000031000000200030008c000000200400003900000000040340190000094b0000013d0000000001000416000000000001004b000000410000c13d26d323500000040f0000000001000019000026d40001042e000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000101043b000009ba0010009c000000410000213d0000010002000039000000400020043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000000000010043f0000000b01000039000000200010043f0000004002000039000000000100001926d326960000040f001d00000001001d000001000100003926d321c10000040f0000001d01000029000000000101041a000009b602100197000001000020043f0000002003100270000009bb03300197000001200030043f0000006003100270000009bb03300197000001400030043f00000a3e001001980000000001000039000000010100c039000001600010043f000000400100043d0000000002210436000001200300043d000009bb033001970000000000320435000001400200043d000009bb0220019700000040031000390000000000230435000001600200043d000000000002004b0000000002000039000000010200c03900000060031000390000000000230435000009b60010009c000009b601008041000000400110021000000a5e011001c7000026d40001042e000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000401100370000000000601043b000009ba0060009c000000410000213d000000000100041a000009ba011001970000000005000411000000000015004b0000080f0000c13d000000000056004b0000082a0000c13d000009f501000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f00000a2f01000041000000c40010043f00000a2d01000041000026d500010430000001a40030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000022002000039000000400020043f0000000402100370000000000202043b000009ba0020009c000000410000213d000000800020043f0000002403100370000000000303043b0000ffff0030008c000000410000213d000000a00030043f0000004404100370000000000404043b000009b60040009c000000410000213d000000c00040043f0000006405100370000000000605043b0000ffff0060008c000000410000213d000000e00060043f0000008405100370000000000705043b000009b60070009c000000410000213d000001000070043f000000a405100370000000000505043b0000ffff0050008c000000410000213d000001200050043f000000c408100370000000000808043b0000ffff0080008c000000410000213d000001400080043f000000e409100370000000000909043b000009ba0090009c000000410000213d000001600090043f000001040a100370000000000b0a043b000009b600b0009c000000410000213d0000018000b0043f000001240a100370000000000c0a043b000009b600c0009c000000410000213d000001a000c0043f000001440a100370000000000a0a043b0000ffff00a0008c000000410000213d000001c000a0043f000001640d100370000000000d0d043b000009b600d0009c000000410000213d000001e000d0043f0000018401100370000000000101043b000000000001004b000000000e000039000000010e00c0390000000000e1004b000000410000c13d000002000010043f000000000e00041a000009ba0ee00197000000000f0004110000000000ef004b00000cd40000c13d000000000009004b00000cde0000c13d00000a0301000041000002200010043f00000a6c01000041000026d500010430000000240030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000402043b000009bb0040009c000000410000213d0000002302400039000000000032004b000000410000813d0000000402400039000000000221034f000000000202043b000009bb0020009c000000410000213d0000000008020019000000060220021000000024052001bf0000000002450019000000000032004b000000410000213d000000000600041a000009ba076001970000000006000411000000000076004b000007510000613d0000000207000039000000000707041a000009ba07700197000000000076004b000008470000c13d00000005068002100000003f06600039000009c006600197000009d90060009c000000460000213d0000008006600039000000400060043f000000800080043f000000240050008c000009930000c13d000000400080008c000009b10000a13d000000400100043d00000a6302000041000008410000013d0000000001000416000000000001004b000000410000c13d26d322b60000040f000000400200043d0000000000120435000009b60020009c000009b602008041000000400120021000000a55011001c7000026d40001042e000000440030008c000000410000413d0000000002000416000000000002004b000000410000c13d0000000402100370000000000202043b000009bb0020009c000000410000213d0000002401100370000000000101043b000009ba0010009c000000410000213d26d322310000040f000007640000013d0000000001000416000000000001004b000000410000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000003c002000039000000400020043f0000000501000039000000000101041a000009ba03100197000002200030043f000000a0031002700000ffff0330018f000002400030043f000000b003100270000009b603300197000002600030043f000000d0031002700000ffff0330018f000002800030043f000000e001100270000002a00010043f0000000601000039000000000101041a0000ffff0310018f000002c00030043f00000010031002700000ffff0330018f000002e00030043f0000002003100270000009ba03300197000003000030043f000000c003100270000009b603300197000003200030043f000000e001100270000003400010043f0000000701000039000000000101041a0000ffff0310018f000003600030043f0000001003100270000009b603300197000003800030043f00000a38001001980000000001000039000000010100c039000003a00010043f000002200100003926d321de0000040f00000a6401000041000026d40001042e000000640030008c000000410000413d0000000002000416000000000002004b000000410000c13d000000e002000039000000400020043f0000000402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b000000410000c13d000000800020043f0000002402100370000000000202043b000009bf0020009c000000410000213d000000a00020043f0000004401100370000000000101043b000009bf0010009c000000410000213d000000c00010043f000000000100041a000009ba021001970000000001000411000000000021004b000007dc0000613d0000000202000039000000000202041a000009ba02200197000000000021004b0000098f0000c13d0000000301000039000000000101041a001d00000001001d000009c70100004100000000001004430000000001000414000009b60010009c000009b601008041000000c001100210000009c8011001c70000800b0200003926d326ce0000040f00000001002001900000212f0000613d0000001d060000290000008002600270000009b602200197000000000101043b000000000421004b000004ea0000413d00000a3d0000c13d0000000304000039000000000104041a00000a520000013d0000000101100039000000800010043f00000a5f01000041000026d40001042e000009f501000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f00000a6001000041000000c40010043f00000a2d01000041000026d500010430000009c603300197000000000313019f000000000032041b000000800010043f0000000001000414000009b60010009c000009b601008041000000c00110021000000a65011001c70000800d02000039000000010300003900000a6604000041000008370000013d000009f501000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f00000a2c01000041000000c40010043f00000a2d01000041000026d500010430000009ef0020009c000000460000213d00000000020000190000004003400039000000400030043f000000200340003900000000000304350000000000040435000000a00320003900000000004304350000002002200039000000000012004b000008760000813d000000400400043d000009c50040009c0000081c0000a13d000000460000013d0000000101000039000000000201041a000009c602200197000000000262019f000000000021041b0000000001000414000009b60010009c000009b601008041000000c001100210000009cd011001c70000800d02000039000000030300003900000a2e0400004126d326c90000040f0000000100200190000000410000613d0000000001000019000026d40001042e26d322b60000040f000009c30010009c0000085c0000413d000000400100043d00000a68020000410000000000210435000009b60010009c000009b6010080410000004001100210000009ea011001c7000026d50001043000000a6701000041000000800010043f00000a2b01000041000026d500010430000000400100043d00000a3702000041000000000021043500000004021000390000000000320435000009b60010009c000009b6010080410000004001100210000009ec011001c7000026d50001043000000000010b00190000000000310435000009b60010009c000009b601008041000000400110021000000a55011001c7000026d40001042e001b00000001001d00000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba021001970000001d01000029000000000021004b00000a2e0000c13d0000001c020000290000001b0300002926d325bb0000040f0000000001000019000026d40001042e00000000030000190000000801000039000000000101041a000000000031004b000021300000a13d001d00000003001d000009ed0130009a000000000101041a001c00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000400200043d000009c50020009c000000460000213d000000000101043b000000000101041a0000004003200039000000400030043f0000ffff0110018f000000200320003900000000001304350000001c01000029000009ba011001970000000000120435000000800100043d0000001d03000029000000000031004b000021300000a13d0000000501300210000000a0011000390000000000210435000000800100043d000000000031004b000021300000a13d00000001033000390000001b0030006c000008770000413d000000400400043d000004620000013d000000a0050000390000000006230049000009c10060009c000000410000213d000000e00060008c000000410000413d000000400600043d000009c40060009c000000460000213d000000e007600039000000400070043f000000000721034f000000000707043b000009ba0070009c000000410000213d00000000087604360000002007200039000000000971034f000000000909043b000009b60090009c000000410000213d00000000009804350000002007700039000000000871034f000000000808043b000009b60080009c000000410000213d000000400960003900000000008904350000002007700039000000000871034f000000000808043b0000ffff0080008c000000410000213d000000600960003900000000008904350000002007700039000000000871034f000000000808043b000009b60080009c000000410000213d000000800960003900000000008904350000002007700039000000000871034f000000000808043b000009b60080009c000000410000213d000000a00960003900000000008904350000002007700039000000000771034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b000000410000c13d000000c00860003900000000007804350000000005650436000000e002200039000000000042004b000008a80000413d000002a70000013d000009b60010009c000009b601008041000000c00110021000000a34011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a000039000008fc0000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000008f80000c13d000000000006004b000009090000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a040000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000410000413d000000800200043d000000000002004b0000000003000039000000010300c039000000000032004b000000410000c13d000000000002004b00000aef0000c13d0000001c0000006b00000b320000c13d00000a580200004100000af00000013d000009b600b0009c000009b60300004100000000030b40190000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c7001d0000000b001d26d326ce0000040f0000001d0b0000290000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000093a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000009360000c13d000000000006004b000009470000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a100000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d00000000030b0433000009bb0030009c000008560000a13d000000410000013d000000a0050000390000000006230049000009c10060009c000000410000213d000000a00060008c000000410000413d000000400600043d000009c20060009c000000460000213d000000a007600039000000400070043f000000000721034f000000000707043b000009ba0070009c000000410000213d00000000087604360000002007200039000000000971034f000000000909043b000009b60090009c000000410000213d00000000009804350000002007700039000000000871034f000000000808043b000009bb0080009c000000410000213d000000400960003900000000008904350000002007700039000000000871034f000000000808043b000009bb0080009c000000410000213d000000600960003900000000008904350000002007700039000000000771034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b000000410000c13d000000800860003900000000007804350000000005650436000000a002200039000000000042004b0000095d0000413d000000870000013d00000a5901000041000000e00010043f00000a5a01000041000026d500010430000000a00500003900000024044000390000000006430049000009c10060009c000000410000213d000000400060008c000000410000413d000000400600043d000009c50060009c000000460000213d0000004007600039000000400070043f000000000741034f000000000707043b000009ba0070009c000000410000213d00000000077604360000002008400039000000000881034f000000000808043b0000ffff0080008c000000410000213d000000000087043500000000056504360000004004400039000000000024004b000009950000413d000000800800043d000000400080008c0000075d0000213d001900000008001d0000000e01000039000000000101041a000009bc021001970000006001100270000009b601100197000000010110008a000000000021004b000009bb0000813d26d323500000040f0000000803000039000000000103041a000000000001004b00000a7f0000c13d00000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000000190000006b000000000400001900000be70000c13d0000000e03000039000000000103041a000009fe011001970000006002400210000009ff02200197000000000112019f000000000013041b000000400100043d00000020021000390000004003000039000000000032043500000000004104350000004002100039000000800300043d00000000003204350000006002100039000000000003004b000009f20000613d00000080040000390000000005000019000000200440003900000000060404330000000076060434000009ba06600197000000000662043600000000070704330000ffff0770018f000000000076043500000040022000390000000105500039000000000035004b000009e60000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d02000039000000010300003900000a00040000410000080e0000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a0b0000c13d00000a1b0000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a170000c13d000000000005004b00000a280000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000009b60020009c000009b6020080410000004002200210000000000112019f000026d500010430000000400300043d000009eb020000410000000000230435001b00000003001d0000000403300039000000000200041000000000002304350000000003000414000000040010008c00000af40000c13d0000000103000031000000200030008c0000002004000039000000000403401900000b200000013d0000000402000039000000000202041a000000800520027000000000034500a900000000044300d9000000000054004b000004ea0000c13d000009bf04600197000000000043001a000004ea0000413d000009bf022001970000000003430019000000000032004b00000000020380190000008001100210000009ca01100197000000000112019f0000000304000039000000000204041a000009c602200197000000000121019f000000a00200043d000009bf02200197000009bf03100197000000000032004b000000000302401900000a5b01100197000000000113019f000000800300043d000000000003004b0000000003000019000009c90300c041000000000131019f000000000014041b000000c00100043d0000008001100210000000000121019f0000000402000039000000000012041b0000000001000039000000010100c039000000400200043d0000000001120436000000a00300043d000009bf033001970000000000310435000000c00100043d000009bf0110019700000040032000390000000000130435000009b60020009c000009b60200804100000040012002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f00000a5c011001c70000800d02000039000000010300003900000a5d040000410000080e0000013d000000400100043d00000a6702000041000008410000013d000080100200003900000a860000013d0000001c01000029000000000001004b00000008030000390000801002000039000009bf0000613d001c000100100092000000000303041a0000001c0030006c000021300000a13d000009fc0110009a000000000101041a001d00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c726d326ce0000040f0000000100200190000000410000613d0000001d01000029000009ba01100197001d00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b0000001d01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000501041a000000000005004b00000a810000613d0000000803000039000000000403041a000000000004004b0000801002000039000004ea0000613d000000010150008a000000000045004b00000add0000613d000000000014004b000021300000a13d000009fc0150009a000009fc0340009a000000000303041a000000000031041b000000000030043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7001b00000005001d26d326ce0000040f0000000100200190000000410000613d000000000101043b0000001b02000029000000000021041b0000000803000039000000000503041a000000000005004b000021360000613d000000010150008a0000801002000039000009fc0450009a000000000004041b000000000013041b0000001d01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c726d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b00000a810000013d00000a350200004100000000002104350000004001100210000009ea011001c7000026d5000104300000001b01000029000009b60010009c000009b60200004100000000020140190000004002200210000009b60030009c000009b603008041000000c001300210000000000121019f000009ec011001c70000001d0200002926d326ce0000040f0000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001b0570002900000b0f0000613d000000000801034f0000001b09000029000000008a08043c0000000009a90436000000000059004b00000b0b0000c13d000000000006004b00000b1c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000bdb0000613d0000001f01400039000000600210018f0000001b01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001b010000290000000001010433001b00000001001d0000001d01000029000008710000013d0000000502000039000000000202041a000009ba022001970000000003000411000000000023004b00000c430000c13d00000a3201000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000001d0110014f000009bb0010019800000cb50000c13d00000002010003670000002402100370000000000202043b0000008403200039000000000331034f000000000403043b00000000030000310000000005230049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000024200190000000404200039000000000141034f000000000201043b000009bb0020009c000000410000213d00000000032300490000002001400039000009c304300197000009c305100197000000000645013f000000000045004b0000000004000019000009c304004041000000000031004b0000000003000019000009c303002041000009c30060009c000000000403c019000000000004004b000000410000c13d26d325530000040f00000002020003670000002403200370000000000703043b0000004405700039000000000352034f000000000803043b00000000030000310000000004730049000000230440008a000009c306400197000009c309800197000000000a69013f000000000069004b0000000009000019000009c309004041000000000048004b000000000b000019000009c30b008041000009c300a0009c00000000090bc019001500000001001d000000000009004b000000410000c13d00000004017000390000000007180019000000000872034f000000000808043b001600000008001d000009bb0080009c000000410000213d0000001608000029000000060880021000000000088300490000002007700039000000000087004b0000000009000019000009c309002041000009c308800197000009c307700197000000000a87013f000000000087004b0000000007000019000009c307004041000009c300a0009c000000000709c019000000000007004b000000410000c13d000000200550008a000000000552034f000000000505043b000009c307500197000000000867013f000000000067004b0000000006000019000009c306004041000000000045004b0000000004000019000009c304008041000009c30080009c000000000604c019000000000006004b000000410000c13d0000000004150019000000000142034f000000000101043b000009bb0010009c000000410000213d00000000021300490000002003400039000000000023004b0000000004000019000009c304002041000009c302200197000009c303300197000000000523013f000000000023004b0000000002000019000009c302004041000009c30050009c000000000204c019000000000002004b000000410000c13d0000000602000039000000000302041a000000c002300270000009b602200197000000000012004b00000e990000813d000000400300043d0000002404300039000000000014043500000a5701000041000000000013043500000004013000390000000000210435000009b60030009c000009b6030080410000004001300210000009e6011001c7000026d5000104300000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000be20000c13d00000a1b0000013d001809ba0010019b000080100300003900000000020000190000000004000019000000800100043d000000000021004b000021300000a13d001b00000004001d001a00000002001d0000000501200210000000a00110003900000000010104330000000012010434000009ba04200197000000180040006c00000cbb0000613d000000000004004b00000cbb0000613d0000000001010433001c00000001001d000000000040043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c70000000002030019001d00000004001d26d326ce0000040f0000000100200190000000410000613d0000001c020000290000ffff0220018f000000000101043b001c00000002001d000000000021041b0000001d01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001d04000029000000000101043b000000000101041a000000000001004b00000c380000c13d0000000803000039000000000103041a000009bb0010009c000000460000213d0000000102100039000000000023041b000009ed0110009a000000000041041b000000000103041a001700000001001d000000000040043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b0000001702000029000000000021041b0000001b01000029000009b6011001970000001c04100029000009b60040009c000004ea0000213d0000001a020000290000000102200039000000190020006c000080100300003900000beb0000413d000009d20000013d00000a360200004100000af00000013d0000000002000019000000400900043d001d00000002001d0000000501200210000000a0011000390000000001010433000000a0021000390000000002020433000009b6022001970000001f0020008c00000cc10000a13d000009c40090009c000000460000213d00000040031000390000000003030433000000200410003900000000040404330000006005100039000000000505043300000080061000390000000006060433000000c0071000390000000007070433000000e008900039000000400080043f000000c00a9000390000000108000039001b0000000a001d00000000008a0435000000000007004b0000000007000039000000010700c039000000a008900039001a00000008001d00000000007804350000008007900039001900000007001d0000000000270435000009b6026001970000006006900039001800000006001d00000000002604350000ffff0250018f0000004005900039001700000005001d0000000000250435000009b602400197001c00000009001d0000000004290436000009b602300197001600000004001d00000000002404350000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001c020000290000000002020433000009b602200197000000000101043b000000000301041a000009c603300197000000000223019f000000160300002900000000030304330000002003300210000009df03300197000000000232019f000000170300002900000000030304330000004003300210000009e003300197000000000232019f000000180300002900000000030304330000005003300210000009e103300197000000000232019f000000190300002900000000030304330000007003300210000009e203300197000000000232019f0000001a030000290000000003030433000000000003004b000009e3030000410000000003006019000000000232019f0000001b030000290000000003030433000000000003004b000009e4030000410000000003006019000000000232019f000000000021041b0000001d020000290000000102200039000000800100043d000000000012004b00000c460000413d000002e90000013d000000400100043d00000a3702000041000000000021043500000004021000390000001d030000290000084f0000013d000000400100043d000009fd02000041000000000021043500000004021000390000000000420435000008500000013d000000000101043300000024039000390000000000230435000009e5020000410000000000290435000009ba0110019700000004029000390000000000120435000009b60090009c000009b6090080410000004001900210000009e6011001c7000026d500010430000000e003700270000000000063004b00000df80000813d000000400100043d00000a7702000041000008410000013d000009f501000041000002200010043f0000002001000039000002240010043f0000001601000039000002440010043f00000a2c01000041000002640010043f00000a6b01000041000026d500010430000000a003300210000009ce03300197000000b004400210000009cf04400197000000000334019f000000d004600210000009d004400197000000000343019f000000e004700210000000000343019f000000000223019f0000000503000039000000000023041b0000001002800210000009d2022001970000002003900210000009d103300197000000000223019f000000c003b00210000009d303300197000000000232019f000000e003c00210000000000232019f000000000252019f0000000603000039000000000023041b000000000001004b0000000001000019000009d60100c0410000001002d00210000009d502200197000000000112019f0000000702000039000000000302041a000009d403300197000000000131019f0000000001a1019f000000000012041b0000032001000039000000400010043f00000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba01100197000002200010043f00000a3201000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009bb01100197000002400010043f00000a3201000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009bb01100197000002600010043f00000a3201000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009bb01100197000002800010043f00000a3201000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009bc01100197000002a00010043f00000a3201000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba01100197000002c00010043f00000a3201000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba01100197000002e00010043f00000a3201000041000000000010044300000000010004120000000400100443000001000100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba01100197000003000010043f000002200100043d000009ba02100197000000400100043d0000000002210436000002400300043d000009bb033001970000000000320435000002600200043d000009bb0220019700000040031000390000000000230435000002800200043d000009bb0220019700000060031000390000000000230435000002a00200043d000009bc0220019700000080031000390000000000230435000002c00200043d000009ba02200197000000a0031000390000000000230435000002e00200043d000009ba02200197000000c0031000390000000000230435000003000200043d000009ba02200197000000e0031000390000000000230435000000800200043d000009ba0220019700000100031000390000000000230435000000a00200043d0000ffff0220018f00000120031000390000000000230435000000c00200043d000009b60220019700000140031000390000000000230435000000e00200043d0000ffff0220018f00000160031000390000000000230435000001000200043d000009b60220019700000180031000390000000000230435000001200200043d0000ffff0220018f000001a0031000390000000000230435000001400200043d0000ffff0220018f000001c0031000390000000000230435000001600200043d000009ba02200197000001e0031000390000000000230435000001800200043d000009b60220019700000200031000390000000000230435000001a00200043d000009b60220019700000220031000390000000000230435000001c00200043d0000ffff0220018f00000240031000390000000000230435000001e00200043d000009b60220019700000260031000390000000000230435000002000200043d000000000002004b0000000002000039000000010200c03900000280031000390000000000230435000009b60010009c000009b60100804100000040011002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009d7011001c70000800d020000390000000103000039000009d8040000410000080e0000013d0000000503000039000000000303041a000000a0033002700000ffff0330018f000000000053004b00000e010000813d000000400100043d00000a7602000041000008410000013d0000001c0300002900000020033000390000000003030433000000000003004b00000e0a0000c13d0000000703000039000000000303041a00000a380030019800000ef10000c13d0000002001100039000000000112034f000000000101043b000009ba0010009c000000410000213d000000000010043f0000000b01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000400200043d001b00000002001d000009d90020009c000000460000213d000000000101043b0000001b050000290000008002500039000000400020043f000000000101041a000000600250003900000a3e001001980000000003000039000000010300c0390000000000320435000009b60210019700000000042504360000006002100270000009bb022001970000004003500039000c00000003001d00000000002304350000002001100270000009bb01100197000b00000004001d000000000014043500000002010003670000002402100370000000000202043b0000006402200039000000000121034f000000000101043b00000e8d0000613d000009ba0010009c000000410000213d0000000602000039000000000302041a000000400500043d00000024025000390000001d04000029000000000042043500000a6f020000410000000002250436001d00000002001d001a00000005001d000000040250003900000000001204350000000001000414000a00000003001d0000002002300270000009ba02200197000d00000002001d000000040020008c00000ef40000c13d0000000103000031000000400030008c0000004004000039000000000403401900000f1f0000013d0000000009750049000009c10090009c000000410000213d000000e00090008c000000410000413d000000400900043d000009c40090009c000000460000213d000000e00a9000390000004000a0043f00000000ab070434000009ba00b0009c000000410000213d000000000bb90436000000000a0a0433000009b600a0009c000000410000213d0000000000ab0435000000400a700039000000000a0a0433000009b600a0009c000000410000213d000000400b9000390000000000ab0435000000600a700039000000000a0a04330000ffff00a0008c000000410000213d000000600b9000390000000000ab0435000000800a700039000000000a0a0433000009b600a0009c000000410000213d000000800b9000390000000000ab0435000000a00a700039000000000a0a0433000009b600a0009c000000410000213d000000a00b9000390000000000ab0435000000c00a700039000000000a0a043300000000000a004b000000000b000039000000010b00c0390000000000ba004b000000410000c13d000000c00b9000390000000000ab04350000000006960436000000e007700039000000000087004b00000e550000413d0000020f0000013d000009ba0010009c000000410000213d000000400200043d00000a6e03000041000000000032043500000004032000390000000000130435000009b60020009c000009b6020080410000004001200210000009ec011001c7000026d50001043000000015010000290000000001010433000000e002300270000000000012004b00000cd10000413d0000000501000039000000000101041a000000a0011002700000ffff0110018f000000160010006c00000dfe0000413d00000015010000290000002001100039001400000001001d0000000001010433000000000001004b00000eae0000c13d0000000701000039000000000101041a00000a380010019800000ef10000c13d000000160000006b00000feb0000c13d00000002010003670000002402100370000000000202043b0000006402200039000000000121034f000000000101043b001d00000001001d000009ba0010009c000000410000213d00000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d0000000203000367000000000101043b000009ba011001970000001d0010006b000010e70000c13d0000004401300370000000000101043b000009bc021001970000000e01000039000000000101041a000009bc031001970000000002320019001d00000002001d000009bc0020009c000004ea0000213d000009fb011001970000001d011001af0000000e02000039000000000012041b00000a3201000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009bc011001970000001d0010006b000013110000a13d000000400100043d00000a5602000041000008410000013d000000400100043d00000a6d02000041000008410000013d0000001a02000029000009b60020009c000009b6020080410000004002200210000009b60010009c000009b601008041000000c001100210000000000121019f000009e6011001c70000000d0200002926d326ce0000040f0000006003100270000009b603300197000000400030008c000000400400003900000000040340190000001f0640018f00000060074001900000001a0570002900000f0e0000613d000000000801034f0000001a09000029000000008a08043c0000000009a90436000000000059004b00000f0a0000c13d000000000006004b00000f1b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000fdf0000613d0000001f01400039000000e00210018f0000001a01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000400030008c000000410000413d0000001a010000290000000001010433000f00000001001d00000a3b0010009c000000410000213d0000001d010000290000000001010433000900000001001d00000a3b0010009c000000410000213d00000002010003670000002402100370000000000202043b0000004403200039000000000331034f000000000403043b00000000030000310000000005230049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000044200190000000404400039000000000541034f000000000505043b001100000005001d000009bb0050009c000000410000213d0000001105000029000000060550021000000000035300490000002007400039000009c304300197000009c305700197000000000645013f000000000045004b0000000004000019000009c304004041001000000007001d000000000037004b0000000003000019000009c303002041000009c30060009c000000000403c019000000000004004b000000410000c13d000000110000006b000011a40000c13d0000001b010000290000000001010433000009b601100197001a0a70001000d5001800000000001d001700000000001d0000000a0100002900000010011002700000ffff01100190000019980000c13d0000000501000039000000000201041a00000000010000190000001c030000290000000003030433000000b004200270000009b604400197000000000034001a000004ea0000413d00000002050003670000002406500370000000000706043b0000002406700039000000000665034f000000000806043b00000000060000310000000009760049000000230990008a000009c30a900197000009c30b800197000000000cab013f0000000000ab004b000000000a000019000009c30a004041000000000098004b0000000009000019000009c309008041000009c300c0009c000000000a09c01900000000000a004b000000410000c13d00000000078700190000000407700039000000000575034f000000000505043b000009bb0050009c000000410000213d00000000065600490000002007700039000000000067004b0000000008000019000009c308002041000009c306600197000009c307700197000000000967013f000000000067004b0000000006000019000009c306004041000009c30090009c000000000608c019000000000006004b000000410000c13d000000d0022002700000ffff0620018f00000000026500a9000000000005004b00000faf0000613d000009bf05500197000009bf0720019700000000055700d9000000000056004b000004ea0000c13d0000000003340019000000000032001a000004ea0000413d0000000003320019000000180030002a000004ea0000413d000000090200002900000a7404200198000000000200001900000fc80000613d000000180230002900000000034200a900000000044300d9000000000024004b000004ea0000c13d000000000003004b000000000200001900000fc80000613d0000000b020000290000000002020433000009bb0420019700000000023400a900000000033200d9000000000043004b000004ea0000c13d0000000c030000290000000003030433000009bb043001970000001a034000b90000001a0000006b00000fd10000613d0000001a053000fa000000000045004b000004ea0000c13d000000000023001a000004ea0000413d0000000002230019000000000012001a000004ea0000413d0000000f0300002900000a3b0330019800001a990000c13d00000a6201000041000000000010043f0000001201000039000000040010043f000009ec01000041000026d5000104300000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fe60000c13d00000a1b0000013d001d00000000001d001a00000000001d00000ff30000013d0000001d020000290000000102200039001d00000002001d000000160020006c000011330000813d00000002010003670000002402100370000000000302043b0000004402300039000000000221034f000000000402043b00000000020000310000000005320049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000034300190000000404300039000000000341034f000000000303043b000009bb0030009c000000410000213d000000060530021000000000055200490000002002400039000009c304500197000009c306200197000000000746013f000000000046004b0000000004000019000009c304004041000000000052004b0000000005000019000009c305002041000009c30070009c000000000405c019000000000004004b000000410000c13d0000001d0030006b000021300000813d0000001d03000029001b0006003002180000001b022000290000002003200039000000000331034f000000000303043b000000000003004b000011580000613d000000000121034f000000000101043b000009ba0010009c000000410000213d000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a00000a390010019800000fee0000613d00000002010003670000002402100370000000000302043b0000004402300039000000000221034f000000000402043b00000000020000310000000005320049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000034300190000000404300039000000000341034f000000000303043b000009bb0030009c000000410000213d000000060530021000000000055200490000002004400039000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305002041000009c30080009c000000000605c019000000000006004b000000410000c13d0000001d0030006b000021300000813d0000001b034000290000000002320049000009c10020009c000000410000213d000000400020008c000000410000413d000000400200043d001900000002001d000009c50020009c000000460000213d0000000602000039000000000202041a00000019040000290000004004400039000000400040043f000000000431034f000000000404043b000009ba0040009c000000410000213d0000002002200270000009ba022001970000002003300039000000000131034f00000019030000290000000003430436000000000101043b001700000003001d0000000000130435000000400300043d00000a3a010000410000000001130436001800000001001d001b00000003001d000000040130003900000000004104350000000001000414000000040020008c000010960000c13d0000000103000031000000400030008c00000040040000390000000004034019000010bf0000013d0000001b03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000006003100270000009b603300197000000400030008c0000004004000039000000000403401900000060064001900000001b05600029000010ae0000613d000000000701034f0000001b08000029000000007907043c0000000008980436000000000058004b000010aa0000c13d0000001f07400190000010bb0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013050000613d0000001f01400039000000e00210018f0000001b01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000400030008c000000410000413d000009c50010009c000000460000213d0000004002100039000000400020043f0000001b02000029000000000202043300000a3b0020009c000000410000213d000000000121043600000018030000290000000003030433000009b60030009c000000410000213d0000000000310435000000000002004b0000115b0000613d0000001701000029000000000301043300000000012300a900000000022100d9000000000032004b000004ea0000c13d00000a3c0110012a0000001a0010002a000004ea0000413d001a001a0010002d00000fee0000013d0000002402300370000000000202043b0000006402200039000000000423034f0000000602000039000000000202041a000000000404043b000009ba0040009c000000410000213d0000002002200270000009ba02200197000000400600043d00000a46050000410000000000560435000000040560003900000000004504350000004403300370000000000303043b00000044046000390000000000140435001d00000006001d000000240160003900000000003104350000000001000414000000040020008c000011620000c13d0000000103000031000000200030008c000000200400003900000000040340190000118c0000013d00000008080000290000000009650049000009c10090009c000000410000213d000000a00090008c000000410000413d000000400900043d000009c20090009c000000460000213d000000a00a9000390000004000a0043f00000000ab060434000009ba00b0009c000000410000213d000000000bb90436000000000a0a0433000009b600a0009c000000410000213d0000000000ab0435000000400a600039000000000a0a0433000009bb00a0009c000000410000213d000000400b9000390000000000ab0435000000600a600039000000000a0a0433000009bb00a0009c000000410000213d000000600b9000390000000000ab0435000000800a600039000000000a0a043300000000000a004b000000000b000039000000010b00c0390000000000ba004b000000410000c13d000000800b9000390000000000ab04350000000008980436000000a006600039000000000076004b000011070000413d000001e50000013d0000001a0000006b00000eb00000613d0000000301000039000000000101041a001d00000001001d00000a3e0010019800000eb00000613d0000000401000039000000000101041a001b00000001001d000009c70100004100000000001004430000000001000414000009b60010009c000009b601008041000000c001100210000009c8011001c70000800b0200003926d326ce0000040f00000001002001900000212f0000613d0000001d020000290000008002200270000009b602200197000000000301043b000000000423004b000004ea0000413d0000001d01000029000009bf011001970000001b02000029000009bf0220019700001a520000613d000000000021004b00001a400000a13d000000400100043d00000a4002000041000008410000013d000000400100043d00000a4502000041000008410000013d00000019010000290000000001010433000000400200043d00000a3d030000410000000000320435000009ba0110019700000e920000013d0000001d03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009fa011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001d057000290000117b0000613d000000000801034f0000001d09000029000000008a08043c0000000009a90436000000000059004b000011770000c13d000000000006004b000011880000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000198c0000613d0000001f01400039000000600210018f0000001d01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001d010000290000000001010433000009bc021001970000000e01000039000000000101041a000009bc031001970000000002230019001d00000002001d000009bc0020009c000004ea0000213d00000ed70000013d0000006402200039000000000121034f000000000101043b000e00000001001d000009ba0010009c000000410000213d001900000000001d001a00000000001d001800000000001d001700000000001d000011b60000013d001a001a0010002d001700200020003d00000019020000290000000102200039001900000002001d000000110020006c00000f6d0000813d0000001901000029000000060110021000000010011000290000000002100079000009c10020009c000000410000213d000000400020008c000000410000413d000000400200043d001d00000002001d000009c50020009c000000460000213d0000001d020000290000004002200039000000400020043f0000000203000367000000000213034f000000000202043b000009ba0020009c000000410000213d0000002001100039000000000113034f0000001d030000290000000003230436000000000101043b001300000003001d0000000000130435000000400300043d00000a4c010000410000000000130435001b00000003001d0000000401300039000000000021043500000a3201000041000000000010044300000000010004120000000400100443000001000100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000201043b0000000001000414000009ba02200197000000040020008c000011f00000c13d0000000103000031000000200030008c00000020040000390000000004034019000012190000013d0000001b03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c0000002004000039000000000403401900000020064001900000001b05600029000012080000613d000000000701034f0000001b08000029000000007907043c0000000008980436000000000058004b000012040000c13d0000001f07400190000012150000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001a8d0000613d0000001f01400039000000600210018f0000001b01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001b020000290000000003020433000009ba0030009c000000410000213d0000001d020000290000000002020433000009ba02200197000000000003004b00001a3b0000613d000000000020043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000400200043d001b00000002001d000009c40020009c000000460000213d000000000101043b0000001b05000029000000e002500039000000400020043f000000000101041a000000c00250003900000a50031001980000000004000039000000010400c039000000000042043500000a39001001980000000002000039000000010200c039000000a0045000390000000000240435000009b60210019700000000042504360000007002100270000009b6022001970000008006500039001600000006001d00000000002604350000002002100270000009b602200197001400000004001d00000000002404350000005002100270000009b6022001970000006004500039001500000004001d0000000000240435000000400450003900000040011002700000ffff0110018f001200000004001d0000000000140435000000000003004b0000127c0000613d000000000001004b0000128f0000613d0000001d010000290000000001010433000009ba021001970000000e0020006c0000000f01000029000012cc0000613d000000400300043d00000a72010000410000000000130435001d00000003001d0000000401300039000000000021043500000000010004140000000d02000029000000040020008c000012910000c13d0000000103000031000000200030008c00000020040000390000000004034019000012bb0000013d0000000701000039000000000201041a0000ffff0120018f00000a70011000d10000001a0010002a000004ea0000413d0000001803000029000009b6033001970000001002200270000009b6022001970000000002320019001800000002001d000009b60020009c000004ea0000213d0000001702000029000009b60220019700000a710020009c000011af0000a13d000004ea0000013d0000000001000019000012e10000013d0000001d02000029000009b60020009c000009b6020080410000004002200210000009b60010009c000009b601008041000000c001100210000000000121019f000009ec011001c70000000d0200002926d326ce0000040f0000006003100270000009b603300197000000200030008c0000002004000039000000000403401900000020064001900000001d05600029000012aa0000613d000000000701034f0000001d08000029000000007907043c0000000008980436000000000058004b000012a60000c13d0000001f07400190000012b70000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001aaf0000613d0000001f01400039000000600210018f0000001d01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001d01000029000000000101043300000a3b0010009c000000410000213d00000a3b02100198000012dd0000613d0000001301000029000000000301043300000000012300a900000000022100d9000000000032004b000004ea0000c13d00000a3c0010009c0000000003000019000012de0000413d00000a3c0110012a000000120200002900000000020204330000ffff0220018f00000000031200a9000012de0000013d00000000030000190000001501000029000000000201043300000a730130012a0000001803000029000009b603300197000009b6022001970000000002320019001800000002001d000009b60020009c000004ea0000213d0000001702000029000009b60220019700000016030000290000000003030433000009b6033001970000000002230019001700000002001d000009b60020009c000004ea0000213d0000001b020000290000000002020433000009b60220019700000a70022000d1000000000021004b000012fd0000413d00000014020000290000000002020433000009b60220019700000a70022000d1000000000021004b000013010000a13d0000001a0020002a000004ea0000413d001a001a0020002d000011b10000013d0000001a0010002a000004ea0000413d001a001a0010002d000011b10000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000130c0000c13d00000a1b0000013d00000014010000290000000001010433000000000001004b000013270000c13d00000a3201000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000009ba0010019800001a0a0000c13d00000002020003670000002401200370000000000301043b0000000401300039000000000412034f000000000404043b00000000050000310000000006350049000000230660008a000009c307600197000009c308400197000000000978013f000000000078004b0000000007000019000009c307004041000000000064004b0000000006000019000009c306008041000009c30090009c000000000706c019000000000007004b000000410000c13d0000000001140019000000000412034f000000000404043b000009bb0040009c000000410000213d00000000064500490000002007100039000009c301600197000009c308700197000000000918013f000000000018004b0000000001000019000009c301004041000000000067004b0000000006000019000009c306002041000009c30090009c000000000106c019000000000001004b000000410000c13d0000001f0140003900000a7c011001970000003f0110003900000a7c06100197000000400100043d0000000006610019000000000016004b00000000080000390000000108004039000009bb0060009c000000460000213d0000000100800190000000460000c13d000000400060043f00000000064104360000000008740019000000000058004b000000410000213d000000000772034f00000a7c084001980000001f0940018f00000000058600190000136e0000613d000000000a07034f000000000b06001900000000ac0a043c000000000bcb043600000000005b004b0000136a0000c13d000000000009004b0000137b0000613d000000000787034f0000000308900210000000000905043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f0000000000750435000000000446001900000000000404350000000004010433000000200040008c00001a9c0000c13d0000000004060433001900000004001d000004000440008a00000a490040009c00001a9c0000213d0000000e01000039000000000101041a0000008004100270000009bb04400197000009bb0040009c000004ea0000613d00000a4b011001970000000104400039001100000004001d000000800440021000000a3104400197000000000114019f0000000e04000039000000000014041b00000015010000290000000001010433001000000001001d00000014010000290000000001010433000000000001004b001500000000001d000013b40000c13d0000001c01000029000000000010043f0000000d01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000201041a000009bb03200197000009bb0030009c000004ea0000613d00000a4802200197001500010030003d00000015022001af000000000021041b00000002020003670000002401200370000000000301043b0000006401300039000000000412034f000000000404043b001400000004001d000009ba0040009c000000410000213d000000400510008a000000000152034f000000000701043b00000000010000310000000004310049000000230440008a000009c306400197000009c308700197000000000968013f000000000068004b0000000008000019000009c308004041000000000047004b000000000a000019000009c30a008041000009c30090009c00000000080ac019000000000008004b000000410000c13d00000004033000390000000007370019000000000872034f000000000808043b001a00000008001d000009bb0080009c000000410000213d0000001a0810006a000000200b700039000009c307800197000009c309b00197000000000a79013f000000000079004b0000000007000019000009c307004041000c0000000b001d00000000008b004b0000000008000019000009c308002041000009c300a0009c000000000708c019000000000007004b000000410000c13d0000002005500039000000000552034f000000000505043b000009c307500197000000000867013f000000000067004b0000000006000019000009c306004041000000000045004b0000000004000019000009c304008041000009c30080009c000000000604c019000000000006004b000000410000c13d0000000003350019000000000232034f000000000202043b001700000002001d000009bb0020009c000000410000213d0000001702000029000b0006002002180000000b0110006a0000002005300039000009c302100197000009c303500197000000000423013f000000000023004b0000000002000019000009c302004041001b00000005001d000000000015004b0000000001000019000009c301002041000009c30040009c000000000201c019000000000002004b000000410000c13d000000160100002900000005011002100000003f02100039000009c002200197000000400300043d0000000002230019001d00000003001d000000000032004b00000000030000390000000103004039000009bb0020009c000000460000213d0000000100300190000000460000c13d000000400020043f00000016020000290000001d030000290000000000230435000000000002004b000014260000613d0000000002000019000000600400003900000020022000390000001d032000290000000000430435000000000012004b000014210000413d000000400100043d001800000001001d000009bd0010009c000000460000213d0000001801000029000001a001100039000000400010043f00000a3201000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000001402000029000009ba022001970000001803000029000000e004300039001400000004001d00000000002404350000001502000029000009bb02200197000000c004300039001300000004001d00000000002404350000008002300039001200000002001d000000100400002900000000004204350000001102000029000009bb022001970000006004300039001000000004001d00000000002404350000001902000029000009ba022001970000004004300039000e00000004001d000000000024043500000020043000390000001c02000029000d00000004001d0000000000240435000009bb011001970000000000130435000000a001300039000f00000001001d000000000001043500000002010003670000004402100370000000000202043b0000010003300039001100000003001d00000000002304350000001a020000290000001f0220003900000a7c022001970000003f0220003900000a7c02200197000000400300043d0000000004230019000000000034004b00000000020000390000000102004039000009bb0040009c000000460000213d0000000100200190000000460000c13d0000000002000031000000400040043f0000001a0500002900000000045304360000000c05500029000000000025004b000000410000213d0000000c061003600000001a0800002900000a7c078001980000001f0880018f0000000005740019000014860000613d000000000906034f000000000a040019000000009b09043c000000000aba043600000000005a004b000014820000c13d000000000008004b000014930000613d000000000676034f0000000307800210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f00000000006504350000001a04400029000000000004043500000018040000290000012004400039000c00000004001d0000000000340435000000170300002900000005033002100000003f03300039000009c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000009bb0040009c000000460000213d0000000100500190000000460000c13d000000400040043f000000170400002900000000004304350000000b050000290000001b04500029000000000024004b000000410000213d0000001b0040006b000014c90000813d00000000050300190000001b0620006a000009c10060009c000000410000213d000000400060008c000000410000413d000000400600043d000009c50060009c000000460000213d0000004007600039000000400070043f0000001b07100360000000000707043b000009ba0070009c000000410000213d000000200550003900000000077604360000001b090000290000002008900039000000000881034f000000000808043b00000000008704350000000000650435001b00400090003d0000001b0040006b000014b00000413d00000018010000290000016002100039001500000002001d0000001d0400002900000000004204350000014002100039000b00000002001d00000000003204350000018001100039001700000001001d0000000000010435000000160000006b000018000000613d001a00000000001d00000002010003670000002402100370000000000302043b0000004402300039000000000221034f000000000402043b00000000020000310000000005320049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d00000000034300190000000404300039000000000341034f000000000303043b000009bb0030009c000000410000213d000000060530021000000000055200490000002004400039000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305002041000009c30080009c000000000605c019000000000006004b000000410000c13d0000001a0030006b000021300000813d0000001a03000029000000060330021000000000033400190000000002320049000009c10020009c000000410000213d000000400020008c000000410000413d000000400200043d001c00000002001d000009c50020009c000000460000213d0000001c020000290000004002200039000000400020043f000000000231034f000000000202043b000009ba0020009c000000410000213d0000002003300039000000000131034f0000001c030000290000000003230436000000000101043b000a00000003001d0000000000130435000000400300043d00000a4c010000410000000000130435001b00000003001d0000000401300039000000000021043500000a3201000041000000000010044300000000010004120000000400100443000001000100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000201043b0000000001000414000009ba02200197000000040020008c0000153e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000015670000013d0000001b03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c0000002004000039000000000403401900000020064001900000001b05600029000015560000613d000000000701034f0000001b08000029000000007907043c0000000008980436000000000058004b000015520000c13d0000001f07400190000015630000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001baf0000613d0000001f01400039000000600110018f0000001b02100029000000000012004b00000000010000390000000101004039001d00000002001d000009bb0020009c000000460000213d0000000100100190000000460000c13d0000001d01000029000000400010043f000000200030008c000000410000413d0000001b010000290000000001010433001900000001001d000009ba0010009c000000410000213d000000190000006b00001bc80000613d00000a4d010000410000001d020000290000000000120435000000040120003900000a4e02000041000000000021043500000000010004140000001902000029000000040020008c0000002004000039000015b20000613d0000001d02000029000009b60020009c000009b6020080410000004002200210000009b60010009c000009b601008041000000c001100210000000000121019f000009ec011001c7000000190200002926d326ce0000040f0000006003100270000009b603300197000000200030008c0000002004000039000000000403401900000020064001900000001d05600029000015a10000613d000000000701034f0000001d08000029000000007907043c0000000008980436000000000058004b0000159d0000c13d0000001f07400190000015ae0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001bbb0000613d0000001f01400039000000600110018f0000001d01100029001b00000001001d000009bb0010009c000000460000213d0000001b01000029000000400010043f000000200030008c000000410000413d0000001d010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000410000c13d000000000001004b00001bc70000613d00000002020003670000002401200370000000000501043b0000000401500039000000000312034f000000000403043b00000000030000310000000005530049000000230550008a000009c306500197000009c307400197000000000867013f000000000067004b0000000006000019000009c306004041000000000054004b0000000005000019000009c305008041000009c30080009c000000000605c019000000000006004b000000410000c13d0000000004140019000000000142034f000000000101043b000009bb0010009c000000410000213d00000000061300490000002005400039000009c304600197000009c307500197000000000847013f000000000047004b0000000004000019000009c304004041000000000065004b0000000006000019000009c306002041000009c30080009c000000000406c019000000000004004b000000410000c13d0000001b04000029000009c20040009c000000460000213d0000000a040000290000000004040433000a00000004001d0000001c040000290000000004040433000900000004001d0000001f0410003900000a7c044001970000003f0440003900000a7c064001970000001b04000029000000a004400039000000400040043f0000000006460019000009bb0060009c000000460000213d000000400060043f00000000001404350000000006510019000000000036004b000000410000213d000000000552034f00000a7c061001980000001b02000029000000c0022000390000000003620019000016130000613d000000000705034f0000000008020019000000007907043c0000000008980436000000000038004b0000160f0000c13d0000001f07100190000016200000613d000000000565034f0000000306700210000000000703043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000530435000000000121001900000000000104350000001b010000290000000001410436001d00000001001d00000a3201000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d0000000902000029000009ba02200197000000000101043b000009bb011001970000001d030000290000000000130435000009ba010000410000001e0310017f0000001b060000290000008001600039000000000021043500000060026000390000000a04000029000000000042043500000040046000390000000000340435000000400700043d00000a4f03000041000000000037043500000004037000390000002005000039000000000053043500000000030604330000002405700039000000a0060000390000000000650435000000c40670003900000000530304340000000000360435001b00000007001d000000e406700039000000000003004b0000165d0000613d000000000700001900000000086700190000000009750019000000000909043300000000009804350000002007700039000000000037004b000016560000413d000000000563001900000000000504350000001d050000290000000005050433000009bb055001970000001b07000029000000440670003900000000005604350000000004040433000009ba0440019700000064057000390000000000450435000000000202043300000084047000390000000000240435000000a4027000390000000001010433000009ba01100197000000000012043500000000010004140000001902000029000000040020008c000016770000c13d000000030100036700000001030000310000168e0000013d0000001f0230003900000a7c02200197000000e402200039000009b60020009c000009b60200804100000060022002100000001b03000029000009b60030009c000009b6030080410000004003300210000000000232019f000009b60010009c000009b601008041000000c001100210000000000121019f000000190200002926d326c90000040f0000006003100270000109b60030019d000009b6033001970003000000010355000000010020019000001bd50000613d00000a7c043001980000001b02400029000016970000613d000000000501034f0000001b06000029000000005705043c0000000006760436000000000026004b000016930000c13d0000001f05300190000016a40000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f0130003900000a7c011001970000001b02100029000000000012004b00000000010000390000000101004039001d00000002001d000009bb0020009c000000460000213d0000000100100190000000460000c13d0000001d01000029000000400010043f000009c10030009c000000410000213d000000200030008c000000410000413d0000001b010000290000000002010433000009bb0020009c000000410000213d0000001b013000290000001b022000290000000003210049000009c10030009c000000410000213d000000400030008c000000410000413d0000001d03000029000009c50030009c000000460000213d0000001d030000290000004003300039000000400030043f0000000054020434000009bb0040009c000000410000213d00000000062400190000001f04600039000000000014004b0000000007000019000009c307008041000009c308400197000009c304100197000000000948013f000000000048004b0000000008000019000009c308004041000009c30090009c000000000807c019000000000008004b000000410000c13d0000000076060434000009bb0060009c000000460000213d0000001f0860003900000a7c088001970000003f0880003900000a7c088001970000000008380019000009bb0080009c000000460000213d000000400080043f00000000006304350000000008760019000000000018004b000000410000213d0000001d080000290000006008800039000000000006004b000016f30000613d0000000009000019000000000a890019000000000b790019000000000b0b04330000000000ba04350000002009900039000000000069004b000016ec0000413d000000000686001900000000000604350000001d060000290000000003360436001b00000003001d0000000003050433000009bb0030009c000000410000213d00000000022300190000001f03200039000000000013004b0000000005000019000009c305008041000009c303300197000000000643013f000000000043004b0000000003000019000009c303004041000009c30060009c000000000305c019000000000003004b000000410000c13d0000000032020434000009bb0020009c000000460000213d0000001f0420003900000a7c044001970000003f0440003900000a7c05400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000009bb0050009c000000460000213d0000000100600190000000460000c13d000000400050043f00000000052404360000000006320019000000000016004b000000410000213d000000000002004b000017280000613d000000000100001900000000065100190000000007310019000000000707043300000000007604350000002001100039000000000021004b000017210000413d000000000125001900000000000104350000001b0100002900000000004104350000000001040433000a00000001001d000000200010008c000017450000a13d0000001c010000290000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a0000007001100270000009b6011001970000000a0010006b00001be10000213d0000001d0100002900000000010104330000000023010434000000200030008c00001a9c0000c13d0000000002020433000004000220008a00000a490020009c00001a9c0000213d000000400300043d00000020013000390000001902000029000000000021043500000020010000390000000000130435001900000003001d000009c50030009c000000460000213d00000019010000290000004001100039000000400010043f0000001b010000290000000001010433001b00000001001d0000001d010000290000000001010433001d00000001001d0000001c010000290000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a00000a500010019800000007020000390000001001000039000017840000613d0000001c010000290000000001010433000009ba01100197000000000010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000201043b0000005001000039000000400500043d000009d90050009c000000460000213d000000000202041a0000008003500039000000400030043f00000040035000390000001b04000029000000000043043500000020045000390000001d06000029000000000064043500000019060000290000000000650435000000000112022f000009b60110019700000060025000390000000000120435000000400100043d0000002006100039000000200700003900000000007604350000000005050433000000400610003900000080070000390000000000760435000000c00810003900000000760504340000000000680435000000e005100039000000000006004b000017ac0000613d00000000080000190000000009580019000000000a870019000000000a0a04330000000000a904350000002008800039000000000068004b000017a50000413d000000000756001900000000000704350000001f0660003900000a7c0660019700000000040404330000006007100039000000a0086000390000000000870435000000000756001900000000650404340000000004570436000000000005004b000017c10000613d000000000700001900000000084700190000000009760019000000000909043300000000009804350000002007700039000000000057004b000017ba0000413d000000000645001900000000000604350000001f0550003900000a7c0550019700000000044500190000000005140049000000400550008a00000000030304330000008006100039000000000056043500000000530304340000000004340436000000000003004b000017d70000613d000000000600001900000000074600190000000008650019000000000808043300000000008704350000002006600039000000000036004b000017d00000413d000000000543001900000000000504350000000002020433000009b602200197000000a005100039000000000025043500000000021400490000001f0330003900000a7c033001970000000002320019000000200320008a00000000003104350000001f0220003900000a7c032001970000000002130019000000000032004b00000000030000390000000103004039000009bb0020009c000000460000213d0000000100300190000000460000c13d000000400020043f0000001502000029000000000202043300000000030204330000001a0030006c000021300000a13d0000001a0400002900000005034002100000000003230019000000200330003900000000001304350000000001020433000000000041004b000021300000a13d0000001a020000290000000102200039001a00000002001d000000160020006c000014d70000413d0000000d0100002900000000010104330000000e020000290000000002020433000000100300002900000000030304330000000f04000029000000000404043300000013050000290000000005050433000000140600002900000000060604330000001207000029000000000707043300000011080000290000000008080433000000400a00043d0000010009a0003900000000008904350000008008a000390000000000780435000009ba06600197000000e007a000390000000000670435000009bb05500197000000c006a000390000000000560435000000000004004b0000000004000039000000010400c039000000a005a000390000000000450435000009bb033001970000006004a000390000000000340435000009ba022001970000004003a000390000000000230435000001000200003900000000022a0436000009ba011001970000000000120435001d0000000a001d00000a5300a0009c000000460000213d0000001d030000290000012001300039001c00000001001d000000400010043f000009b60020009c000009b60200804100000040012002100000000002030433000009b60020009c000009b6020080410000006002200210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000000c0200002900000000020204330000002003200039000009b60030009c000009b60300804100000040033002100000000002020433000009b60020009c000009b6020080410000006002200210000000000232019f000000000101043b001b00000001001d0000000001000414000009b60010009c000009b601008041000000c001100210000000000121019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b001a00000001001d0000000b0100002900000000020104330000001d050000290000014001500039000000200300003900000000003104350000016003500039000000000402043300000000004304350000018003500039000000000004004b000018740000613d0000000005000019000000200220003900000000060204330000000076060434000009ba0660019700000000066304360000000007070433000000000076043500000040033000390000000105500039000000000045004b000018690000413d0000001d0230006a000001400320008a0000001c040000290000000000340435000001010220008a00000a7c032001970000000002430019000000000032004b00000000030000390000000103004039000009bb0020009c000000460000213d0000000100300190000000460000c13d000000400020043f000009b60010009c000009b60100804100000040011002100000001c020000290000000002020433000009b60020009c000009b6020080410000006002200210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b001c00000001001d00000015010000290000000003010433000000400100043d000000200210003900000020040000390000000000420435000000000403043300000005054002100000000006510019000000400510003900000000004504350000006007600039000000000004004b00001be60000c13d0000000003170049000000200430008a00000000004104350000001f0330003900000a7c043001970000000003140019000000000043004b00000000040000390000000104004039000009bb0030009c000000460000213d0000000100400190000000460000c13d000000400030043f000009b60020009c000009b60200804100000040022002100000000001010433000009b60010009c000009b6010080410000006001100210000000000121019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b001600000001001d000000400100043d001d00000001001d0000002001100039001900000001001d000000000001043500000a320100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000001d04000029000000c00240003900000016030000290000000000320435000000a0024000390000001c03000029000000000032043500000080024000390000001a03000029000000000032043500000060024000390000001b03000029000000000032043500000040024000390000000000120435000000c0010000390000000000140435000009c40040009c000000460000213d0000001d02000029000000e001200039000000400010043f0000001901000029000009b60010009c000009b60100804100000040011002100000000002020433000009b60020009c000009b6020080410000006002200210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b00000017020000290000000000120435000000400100043d0000002002000039000000000221043600000018030000290000000003030433000009bb0330019700000000003204350000000d020000290000000002020433000009ba02200197000000400310003900000000002304350000000e020000290000000002020433000009ba022001970000006003100039000000000023043500000010020000290000000002020433000009bb022001970000008003100039000000000023043500000012020000290000000002020433000000a00310003900000000002304350000000f020000290000000002020433000000000002004b0000000002000039000000010200c039000000c003100039000000000023043500000013020000290000000002020433000009bb02200197000000e003100039000000000023043500000014020000290000000002020433000009ba022001970000010003100039000000000023043500000011020000290000000002020433000001200310003900000000002304350000000c0200002900000000020204330000014003100039000001a0040000390000000000430435000001c00510003900000000430204340000000000350435000001e002100039000000000003004b0000194a0000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000035004b000019430000413d000000000423001900000000000404350000001f0330003900000a7c043001970000000b0300002900000000030304330000016005100039000001c0064000390000000000650435000000000224001900000000040304330000000002420436000000000004004b000019640000613d0000000005000019000000200330003900000000060304330000000076060434000009ba0660019700000000066204360000000007070433000000000076043500000040022000390000000105500039000000000045004b000019590000413d0000000003120049000000200430008a000000150300002900000000030304330000018005100039000000000045043500000000040304330000000000420435000000050540021000000000055200190000002007500039000000000004004b00001c030000c13d00000017020000290000000002020433000001a00310003900000000002304350000000002170049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c70000800d02000039000000010300003900000a540400004126d326c90000040f0000000100200190000000410000613d00000017010000290000000001010433000007640000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019930000c13d00000a1b0000013d00000002030003670000002402300370000000000402043b0000002407400039000000000273034f000000000202043b0000000405400039000000000400003100000000065400490000001f0660008a000009c308600197000009c309200197000000000a89013f000000000089004b0000000009000019000009c309004041000000000062004b000000000b000019000009c30b008041000009c300a0009c00000000090bc019000000000009004b000000410000c13d0000000009520019000000000293034f000000000202043b000009bb0020009c000000410000213d000000000a24004900000020099000390000000000a9004b000000000b000019000009c30b002041000009c30aa00197000009c309900197000000000ca9013f0000000000a9004b0000000009000019000009c309004041000009c300c0009c00000000090bc019000000000009004b000000410000c13d0000002007700039000000000773034f000000000707043b000009c309700197000000000a89013f000000000089004b0000000008000019000009c308004041000000000067004b0000000006000019000009c306008041000009c300a0009c000000000806c019000000000008004b000000410000c13d0000000005570019000000000353034f000000000303043b000009bb0030009c000000410000213d000000060630021000000000046400490000002005500039000000000045004b0000000006000019000009c306002041000009c304400197000009c305500197000000000745013f000000000045004b0000000004000019000009c304004041000009c30070009c000000000406c019000000000004004b000000410000c13d00000180043000c9000000000003004b000019ef0000613d000009bf03300197000009bf0540019700000000033500d9000001800030008c000004ea0000c13d0000001702200029000000000242001900000220022000390000000a030000290000ffff0430018f000009bf0520019700000000034200a9000009bf0230019700000000025200d9000000000024004b000004ea0000c13d0000000502000039000000000202041a000000e004200270000000000334001a00000f730000613d0000000904000029000000700440027000000a740440019800000f730000613d00000000011400a900000000033100a900000a75013000d100000000033100d900000a750030009c000004ea0000c13d00000f740000013d0000001c01000029000000000010043f0000000d01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a000009bb00100198000013270000c13d000000400200043d00000a47010000410000000000120435001d00000002001d00000004012000390000001c02000029000000000021043500000a3201000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f00000001002001900000212f0000613d000000000201043b0000000001000414000009ba02200197000000040020008c00001abb0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001ae50000013d00000a5203000041000000000031043500000004031000390000000000230435000008500000013d0000001b05000029000000800650027000000000056400a900000000044500d9000000000064004b000004ea0000c13d000000000015001a000004ea0000413d00000000011500190000001d0400002900000a3f044001970000008003300210000009ca03300197000000000343019f0000000304000039000000000034041b000000000012004b00000000010240190000001a0020006c00001a5d0000813d000000400100043d00000024031000390000001a04000029000000000043043500000a4403000041000000000031043500000004031000390000000000230435000006140000013d0000001a0210006c00001a740000813d0000001b020000290000008002200272000004ea0000613d0000001a03100069000000010420008a000000000034001a000004ea0000413d0000000003340019000000400400043d0000002405400039000000000015043500000a4301000041000000000014043500000000012300d900000004024000390000000000120435000009b60040009c000009b6040080410000004001400210000009e6011001c7000026d500010430000009bf012001970000000303000039000000000203041a00000a4102200197000000000112019f000000000013041b000000400100043d0000001a020000290000000000210435000009b60010009c000009b60100804100000040011002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009f7011001c70000800d02000039000000010300003900000a420400004126d326c90000040f000000010020019000000eb00000c13d000000410000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001a940000c13d00000a1b0000013d000000000112001900000000013100d9000007640000013d000000400400043d001d00000004001d00000a4a020000410000000000240435000000040240003900000020030000390000000000320435000000240240003926d321cc0000040f0000001d020000290000000001210049000009b60010009c000009b601008041000009b60020009c000009b60200804100000060011002100000004002200210000000000121019f000026d5000104300000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001ab60000c13d00000a1b0000013d0000001d03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001d0570002900001ad40000613d000000000801034f0000001d09000029000000008a08043c0000000009a90436000000000059004b00001ad00000c13d000000000006004b00001ae10000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001c210000613d0000001f01400039000000600210018f0000001d01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001d010000290000000001010433001d00000001001d000009bb0010009c000000410000213d0000001c01000029000000000010043f0000000d01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000201041a00000a48022001970000001d022001af000000000021041b000013270000013d000000000300041a000009c6033001970000000005000411000000000353019f000000000030041b0000000001010433000300000001001d000000000001004b0000000001000039000000010100c039000200000001001d0000000601000029000009c20010009c000000460000213d0000000001040433000500000001001d0000000001020433000009bf031001970000000602000029000000a001200039000000400010043f000400000003001d0000000001320436000100000001001d000009c70100004100000000001004430000000001000414000009b60010009c000009b601008041000000c001100210000009c8011001c70000800b0200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b0000000505000029000009bf02500197000000060400002900000080034000390000000000230435000000400240003900000002030000290000000000320435000009b60210019700000001030000290000000000230435000000600240003900000004040000290000000000420435000000030000006b0000000002000019000009c90200c0410000008001100210000009ca01100197000000000112019f0000000302000039000000000302041a000009cb03300197000000000131019f000000000141019f000000000012041b0000008001500210000000000114019f0000000402000039000000000012041b00000007010000290000000001010433000009ba0010019800001bac0000613d0000001d010000290000000001010433000009bb0110019800001bac0000613d0000001c020000290000000002020433000009bb0320019800001bac0000613d0000001b020000290000000002020433000009bb0020019800001bac0000613d00000018020000290000000002020433000009ba0020019800001bac0000613d00000016020000290000000002020433000009ba0020019800001bac0000613d000000400200043d000000600420003900000000003404350000004003200039000000000013043500000080010000390000000001120436000000800320003900000000040004100000000000430435000009cc030000410000000000310435000009c20020009c000000460000213d000000a003200039000000400030043f000009b60010009c000009b60100804100000040011002100000000002020433000009b60020009c000009b6020080410000006002200210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f00000007030000290000000100200190000000410000613d000000000101043b000000800010043f0000000001030433000009ba01100197000000e00010043f0000001d020000290000000002020433000009bb02200197000001000020043f0000001c030000290000000003030433000009bb03300197000001200030043f0000001b040000290000000004040433000009bb04400197000000a00040043f0000001a050000290000000005050433000009bc05500197000000c00050043f00000019060000290000000006060433000009ba06600197000001400060043f00000018070000290000000007070433000009ba07700197000001600070043f00000016080000290000000008080433000009ba08800197000001800080043f0000000f090000290000000009090433000009ba0090019800001c2d0000c13d000000400100043d00000a0302000041000008410000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bb60000c13d00000a1b0000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bc20000c13d00000a1b0000013d001d001b0000002d0000001c01000029000000000101043300000a52020000410000001d030000290000000000230435000009ba0110019700000004023000390000000000120435000009b60030009c000009b6030080410000004001300210000009ec011001c7000026d5000104300000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bdc0000c13d00000a1b0000013d0000001c010000290000000001010433000000400200043d00000a51030000410000115f0000013d000000000600001900001bf00000013d000000000978001900000000000904350000001f0880003900000a7c0880019700000000077800190000000106600039000000000046004b000018a60000813d0000000008170049000000600880008a000000200550003900000000008504350000002003300039000000000803043300000000980804340000000007870436000000000008004b00001be80000613d000000000a000019000000000b7a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000008a004b00001bfb0000413d00001be80000013d0000000005000019000000000602001900001c0e0000013d000000000978001900000000000904350000001f0880003900000a7c0880019700000000077800190000000105500039000000000045004b000019710000813d0000000008270049000000200880008a000000200660003900000000008604350000002003300039000000000803043300000000980804340000000007870436000000000008004b00001c060000613d000000000a000019000000000b7a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000008a004b00001c190000413d00001c060000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c280000c13d00000a1b0000013d000000170a000029000000000a0a0433000009ba0aa00197000000150b000029000000000b0b0433000000a00bb00210000009ce0bb00197000000000aab019f000000140b000029000000000b0b0433000000b00bb00210000009cf0bb00197000000000aba019f000000130b000029000000000b0b0433000000d00bb00210000009d00bb00197000000000aba019f000000120b000029000000000b0b0433000000e00bb00210000000000aba019f000000050b0000390000000000ab041b0000002009900210000009d109900197000000110a000029000000000a0a04330000ffff0aa0018f00000000099a019f000000100a000029000000000a0a0433000000100aa00210000009d20aa001970000000009a9019f0000000e0a000029000000000a0a0433000000c00aa00210000009d30aa001970000000009a9019f0000000d0a000029000000000a0a0433000000e00aa002100000000009a9019f000000060a00003900000000009a041b0000000c0900002900000000090904330000ffff0990018f000000070a000039000000000b0a041a000009d40bb0019700000000099b019f0000000b0b000029000000000b0b0433000000100bb00210000009d50bb001970000000009b9019f0000000a0b000029000000000b0b043300000000000b004b000009d60b000041000000000b0060190000000009b9019f00000000009a041b000000400a00043d000009b900a0009c000000460000213d0000010009a00039000000400090043f000000e009a000390000000000890435000000c008a000390000000000780435000000a007a0003900000000006704350000008006a0003900000000005604350000006005a0003900000000004504350000004004a0003900000000003404350000002003a00039000000000023043500000000001a0435000000400200043d00000000011204360000000003030433000009bb0330019700000000003104350000000001040433000009bb01100197000000400320003900000000001304350000000001050433000009bb01100197000000600320003900000000001304350000000001060433000009bc01100197000000800320003900000000001304350000000001070433000009ba01100197000000a00320003900000000001304350000000001080433000009ba01100197000000c00320003900000000001304350000000001090433000009ba01100197000000e003200039000000000013043500000017010000290000000001010433000009ba0110019700000100032000390000000000130435000000150100002900000000010104330000ffff0110018f0000012003200039000000000013043500000014010000290000000001010433000009b60110019700000140032000390000000000130435000000130100002900000000010104330000ffff0110018f0000016003200039000000000013043500000012010000290000000001010433000009b60110019700000180032000390000000000130435000000110100002900000000010104330000ffff0110018f000001a0032000390000000000130435000000100100002900000000010104330000ffff0110018f000001c00320003900000000001304350000000f010000290000000001010433000009ba01100197000001e00320003900000000001304350000000e010000290000000001010433000009b601100197000002000320003900000000001304350000000d010000290000000001010433000009b601100197000002200320003900000000001304350000000c0100002900000000010104330000ffff0110018f000002400320003900000000001304350000000b010000290000000001010433000009b601100197000002600320003900000000001304350000000a010000290000000001010433000000000001004b0000000001000039000000010100c03900000280032000390000000000130435000009b60020009c000009b60200804100000040012002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009d7011001c70000800d020000390000000103000039000009d80400004126d326c90000040f0000000100200190000000410000613d00000009010000290000000001010433000000000001004b00001d440000613d001d00000000001d000000400100043d001c00000001001d000009d90010009c000000460000213d0000001d01000029000000050110021000000008011000290000000001010433000000400210003900000000020204330000002003100039000000000303043300000060041000390000000004040433000000800510003900000000050504330000001c070000290000008006700039000000400060043f000000000005004b0000000005000039000000010500c0390000006006700039001b00000006001d0000000000560435000009bb044001970000004005700039001a00000005001d0000000000450435000009b6033001970000000003370436000009bb02200197001900000003001d00000000002304350000000001010433000009ba01100197000000000010043f0000000b01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001c020000290000000002020433000009b602200197000000000101043b000000000301041a000009cb03300197000000000223019f000000190300002900000000030304330000002003300210000009db03300197000000000232019f0000001a0300002900000000030304330000006003300210000009dc03300197000000000232019f0000001b030000290000000003030433000000000003004b000009c9030000410000000003006019000000000232019f000000000021041b0000001d02000029001d00010020003d000000090100002900000000010104330000001d0010006b00001cf60000413d000000400100043d000000200200003900000000022104360000000903000029000000000303043300000000003204350000004002100039000000000003004b00001d6b0000613d0000003304000029000000000500001900000000460404340000000087060434000009ba0770019700000000077204360000000008080433000009b608800197000000000087043500000040076000390000000007070433000009bb077001970000004008200039000000000078043500000060076000390000000007070433000009bb077001970000006008200039000000000078043500000080066000390000000006060433000000000006004b0000000006000039000000010600c03900000080072000390000000000670435000000a0022000390000000105500039000000000035004b00001d4f0000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009dd0400004126d326c90000040f0000000100200190000000410000613d000000400100043d001a00000001001d000009de0010009c000000460000213d0000001a020000290000002001200039001d00000001001d000000400010043f00000000000204350000003201000029001300000001001d0000000021010434001200000002001d000000000001004b00001e000000613d001b00000000001d0000001b0100002900000005011002100000001201100029000000400200043d001c00000002001d0000000001010433000000a0021000390000000002020433000009b6022001970000001f0020008c00001eba0000a13d0000001c03000029000009c40030009c000000460000213d00000040031000390000000003030433000000200410003900000000040404330000006005100039000000000505043300000080061000390000000006060433000000c00710003900000000070704330000001c09000029000000e008900039000000400080043f000000c00a900039000000010800003900190000000a001d00000000008a0435000000000007004b0000000007000039000000010700c039000000a008900039001800000008001d00000000007804350000008007900039001700000007001d0000000000270435000009b6026001970000006006900039001600000006001d00000000002604350000ffff0250018f0000004005900039001500000005001d0000000000250435000009b6024001970000000004290436000009b602300197001400000004001d00000000002404350000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001c020000290000000002020433000009b602200197000000000101043b000000000301041a000009c603300197000000000223019f000000140300002900000000030304330000002003300210000009df03300197000000000232019f000000150300002900000000030304330000004003300210000009e003300197000000000232019f000000160300002900000000030304330000005003300210000009e103300197000000000232019f000000170300002900000000030304330000007003300210000009e203300197000000000232019f00000018030000290000000003030433000000000003004b000009e3030000410000000003006019000000000232019f00000019030000290000000003030433000000000003004b000009e4030000410000000003006019000000000232019f000000000021041b0000001b02000029001b00010020003d000000130100002900000000010104330000001b0010006b00001d8f0000413d000000400100043d000000200200003900000000022104360000001303000029000000000303043300000000003204350000004002100039000000000003004b00001e310000613d0000003104000029000000000500001900000000460404340000000087060434000009ba0770019700000000077204360000000008080433000009b608800197000000000087043500000040076000390000000007070433000009b60770019700000040082000390000000000780435000000600760003900000000070704330000ffff0770018f0000006008200039000000000078043500000080076000390000000007070433000009b60770019700000080082000390000000000780435000000a0076000390000000007070433000009b607700197000000a0082000390000000000780435000000c0066000390000000006060433000000000006004b0000000006000039000000010600c039000000c0072000390000000000670435000000e0022000390000000105500039000000000035004b00001e0b0000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009e70400004126d326c90000040f0000000100200190000000410000613d0000001a010000290000000001010433000000000001004b00001e8b0000613d001c00000000001d0000001c0100002900000005011002100000001d011000290000000001010433000009ba01100197000000000010043f0000000c01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b0000001c02000029001c00010020003d0000001a0100002900000000010104330000001c0010006b00001e4a0000413d000000000001004b00001e8b0000613d000000400100043d000000200200003900000000022104360000001a03000029000000000303043300000000003204350000004002100039000000000003004b00001e770000613d00000000040000190000001d060000290000000065060434001d00000006001d000009ba0550019700000000025204360000000104400039000000000034004b00001e6f0000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d020000390000000103000039000009e80400004126d326c90000040f0000000100200190000000410000613d0000003001000029001700000001001d0000000021010434001300000002001d001600000001001d000000400010008c0000075d0000213d0000000e01000039000000000101041a000009bc021001970000006001100270000009b601100197001200000001001d000000010110008a001c00000002001d000000000021004b00001ffc0000813d000000000100041a000009ba011001970000000002000411000000000012004b00001ec20000613d0000000201000039000000000101041a000009ba01100197000000000012004b00001ec20000613d0000000001000411000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a000000000001004b00001ec20000c13d000000400100043d000009e902000041000008410000013d00000000010104330000001c0400002900000024034000390000000000230435000009e5020000410000000000240435000009ba0110019700001a6d0000013d000000e00200043d000000400300043d000009eb010000410000000000130435001d00000003001d0000000401300039000000000300041000000000003104350000000001000414000009ba02200197000000040020008c00001ed30000c13d0000000103000031000000200030008c0000002004000039000000000403401900001efd0000013d0000001d03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000001d0570002900001eec0000613d000000000801034f0000001d09000029000000008a08043c0000000009a90436000000000059004b00001ee80000c13d000000000006004b00001ef90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001f1e0000613d0000001f01400039000000600210018f0000001d01200029000000000021004b00000000020000390000000102004039000009bb0010009c000000460000213d0000000100200190000000460000c13d000000400010043f000000200030008c000000410000413d0000001d0200002900000000030204330000001c0230006a000009c304200197000009c305300197000000000654013f000000000054004b0000000004000019000009c304002041000000000032004b0000000003000019000009c30300a041000009c30060009c000000000403c019000000000004004b000004ea0000613d000009c30020009c00001f2a0000413d00000a0202000041000008410000013d0000001f0530018f000009b806300198000000400200043d000000000462001900000a1b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001f250000c13d00000a1b0000013d0000000801000039000000000101041a001100000001001d000000000001004b00001f310000c13d001b001c0000002d00001ff70000013d001a00000000001d001b001c0000002d0000000801000039000000000101041a0000001a0010006c000021300000a13d0000001a01000029000009ed0110009a000000000101041a001d00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000201041a0000001c012000b90000001c031000fa000000000032004b000004ea0000c13d00000012011000fa001509bc0010019b0000001b01000029000009bc01100197000000150110006a001b00000001001d000009bc0010009c000004ea0000213d0000001d01000029000009ba05100197000000400200043d0000004401200039000000e00300043d000000150400002900000000004104350000002001200039000009ee0400004100000000004104350000002404200039001000000005001d000000000054043500000044040000390000000000420435000009ef0020009c000000460000213d000009ba05300197000000c003200039000000400030043f000000a004200039000009f003000041001d00000004001d000000000034043500000080042000390000002003000039000f00000004001d000000000034043500000000030204330000000002000414001400000005001d000000040050008c00001f790000c13d0000000101000031000000010200003900001f8b0000013d000009b60010009c000009b6010080410000004001100210000009b60030009c000009b6030080410000006003300210000000000113019f000009b60020009c000009b602008041000000c002200210000000000121019f000000140200002926d326c90000040f000000010220018f00030000000103550000006001100270000109b60010019d000009b601100197000000000001004b001900800000003d001800600000003d00001fb80000613d0000001f0310003900000a7c033001970000003f0330003900000a7c03300197000000400400043d0000000003340019001800000004001d000000000043004b00000000040000390000000104004039000009bb0030009c000000460000213d0000000100400190000000460000c13d000000400030043f0000001803000029000000000513043600000a7c04100198001900000005001d0000000003450019000000030500036700001fab0000613d000000000605034f0000001907000029000000006806043c0000000007870436000000000037004b00001fa70000c13d0000001f0110019000001fb80000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f000000000013043500000018010000290000000001010433000000000002004b0000213c0000613d000000000001004b00001fd20000c13d000009f1010000410000000000100443000000140100002900000004001004430000000001000414000009b60010009c000009b601008041000000c001100210000009f2011001c7000080020200003926d326ce0000040f00000001002001900000212f0000613d000000000101043b000000000001004b000021600000613d00000018010000290000000001010433000000000001004b00001fdf0000613d000009c10010009c000000410000213d000000200010008c000000410000413d00000019010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000410000c13d000000000001004b000021710000613d000000400100043d00000015020000290000000000210435000009b60010009c000009b60100804100000040011002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009f7011001c70000800d020000390000000203000039000009f804000041000000100500002926d326c90000040f0000000100200190000000410000613d0000001a020000290000000102200039001a00000002001d000000110020006c00001f330000413d0000000e02000039000000000102041a000009fb011001970000001b011001af000000000012041b0000000801000039000000000101041a000000000001004b000020730000613d001b0001001000920000000802000039000000000202041a0000001b0020006c000021300000a13d000009fc0110009a000000000101041a001d00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001d01000029000009ba01100197001c00000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b0000001c01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a001d00000001001d000000000001004b000020700000613d0000000801000039000000000201041a000000000002004b000004ea0000613d0000001d03000029000000010130008a000000000023004b0000205c0000613d000000000012004b000021300000a13d0000001d01000029000009fc0110009a000009fc0220009a000000000202041a000000000021041b000000000020043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b0000001d02000029000000000021041b0000000801000039000000000101041a001d00000001001d000000000001004b000021360000613d0000001d01000029000000010110008a0000001d02000029000009fc0220009a000000000002041b0000000802000039000000000012041b0000001c01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000001041b0000001b01000029000000000001004b000020000000c13d000000160000006b001c00000000001d000020d20000613d001b00000000001d001c00000000001d000000170100002900000000010104330000001b0010006c000021300000a13d0000001b010000290000000501100210000000130110002900000000010104330000000012010434001d09ba0020019c000021850000613d000000e00200043d000009ba022001970000001d0020006b000021850000613d0000000001010433001a00000001001d0000001d01000029000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d0000001a020000290000ffff0220018f000000000101043b001a00000002001d000000000021041b0000001d01000029000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b000000000101041a000000000001004b000020c70000c13d0000000801000039000000000101041a000009bb0010009c000000460000213d00000001021000390000000803000039000000000023041b000009ed0110009a0000001d02000029000000000021041b000000000103041a001900000001001d000000000020043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000000410000613d000000000101043b0000001902000029000000000021041b0000001c01000029000009b6011001970000001a01100029001c00000001001d000009b60010009c000004ea0000213d0000001b020000290000000102200039001b00000002001d000000160020006c000020780000413d0000000e03000039000000000103041a000009fe011001970000001c040000290000006002400210000009ff02200197000000000112019f000000000013041b000000400100043d000000200210003900000040030000390000000000320435000000000041043500000017020000290000000003020433000000400210003900000000003204350000006002100039000000000003004b000020f30000613d0000002f04000029000000000500001900000000460404340000000076060434000009ba06600197000000000662043600000000070704330000ffff0770018f000000000076043500000040022000390000000105500039000000000035004b000020e80000413d0000000002120049000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000121019f000009cd011001c70000800d02000039000000010300003900000a000400004126d326c90000040f0000000100200190000000410000613d000000800100043d00000140000004430000016000100443000000a00100043d00000020030000390000018000300443000001a000100443000000c00100043d0000004002000039000001c000200443000001e000100443000000e00100043d000000600200003900000200002004430000022000100443000001000100043d000000800200003900000240002004430000026000100443000000a001000039000001200200043d0000028000100443000002a000200443000000c001000039000001400200043d000002c000100443000002e000200443000000e001000039000001600200043d000003000010044300000320002004430000010001000039000001800200043d0000034000100443000003600020044300000100003004430000000901000039000001200010044300000a0101000041000026d40001042e000000000001042f00000a6201000041000000000010043f0000003201000039000000040010043f000009ec01000041000026d50001043000000a6201000041000000000010043f0000003101000039000000040010043f000009ec01000041000026d500010430000000000001004b000021880000c13d000000400100043d000009f50200004100000000002104350000000402100039000000200300003900000000003204350000000f020000290000000002020433000000240310003900000000002304350000004403100039000000000002004b000021530000613d000000000400001900000000053400190000001d06400029000000000606043300000000006504350000002004400039000000000024004b0000214c0000413d0000001f0420003900000a7c04400197000000000232001900000000000204350000004402400039000009b60020009c000009b6020080410000006002200210000009b60010009c000009b6010080410000004001100210000000000112019f000026d500010430000000400100043d0000004402100039000009f903000041000000000032043500000024021000390000001d030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009fa011001c7000026d500010430000000400100043d0000006402100039000009f30300004100000000003204350000004402100039000009f403000041000000000032043500000024021000390000002a030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009f6011001c7000026d500010430000000400100043d000009fd0200004100000cb70000013d0000001902000029000009b60020009c000009b6020080410000004002200210000009b60010009c000009b6010080410000006001100210000000000121019f000026d5000104300000000043010434000009ba0330019700000000033204360000000004040433000009bb04400197000000000043043500000040031000390000000003030433000009bb033001970000004004200039000000000034043500000060031000390000000003030433000009bb033001970000006004200039000000000034043500000080031000390000000003030433000009bc0330019700000080042000390000000000340435000000a0031000390000000003030433000009ba03300197000000a0042000390000000000340435000000c0031000390000000003030433000009ba03300197000000c0042000390000000000340435000000e002200039000000e0011000390000000001010433000009ba011001970000000000120435000000000001042d00000a7d0010009c000021bb0000813d000000e001100039000000400010043f000000000001042d00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d50001043000000a7e0010009c000021c60000813d0000008001100039000000400010043f000000000001042d00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d50001043000000000430104340000000001320436000000000003004b000021d80000613d000000000200001900000000051200190000000006240019000000000606043300000000006504350000002002200039000000000032004b000021d10000413d000000000213001900000000000204350000001f0230003900000a7c022001970000000001210019000000000001042d0000000043010434000009ba03300197000000000332043600000000040404330000ffff0440018f000000000043043500000040031000390000000003030433000009b60330019700000040042000390000000000340435000000600310003900000000030304330000ffff0330018f0000006004200039000000000034043500000080031000390000000003030433000009b60330019700000080042000390000000000340435000000a00310003900000000030304330000ffff0330018f000000a0042000390000000000340435000000c00310003900000000030304330000ffff0330018f000000c0042000390000000000340435000000e0031000390000000003030433000009ba03300197000000e004200039000000000034043500000100031000390000000003030433000009b6033001970000010004200039000000000034043500000120031000390000000003030433000009b60330019700000120042000390000000000340435000001400310003900000000030304330000ffff0330018f0000014004200039000000000034043500000160031000390000000003030433000009b60330019700000160042000390000000000340435000001800220003900000180011000390000000001010433000000000001004b0000000001000039000000010100c0390000000000120435000000000001042d000000000301001900000000040104330000000001420436000000000004004b000022300000613d0000000002000019000000200330003900000000050304330000000065050434000009ba05500197000000000551043600000000060604330000ffff0660018f000000000065043500000040011000390000000102200039000000000042004b000022240000413d000000000001042d0001000000000002000000400300043d00000a4c020000410000000000230435000009ba01100197000100000003001d0000000402300039000000000012043500000a3201000041000000000010044300000000010004120000000400100443000001000100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f0000000100200190000022910000613d000000000201043b0000000001000414000009ba02200197000000040020008c000022530000c13d0000000103000031000000200030008c00000020040000390000000004034019000000010b0000290000227e0000013d0000000103000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f000000010b0000290000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000226d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000022690000c13d000000000006004b0000227a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000022980000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000009bb0010009c000022920000213d0000000100200190000022920000c13d000000400010043f0000001f0030008c0000228f0000a13d00000000010b0433000009ba0010009c0000228f0000213d000000000001042d0000000001000019000026d500010430000000000001042f00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d5000104300000001f0530018f000009b806300198000000400200043d0000000004620019000022a30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000229f0000c13d000000000005004b000022b00000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000009b60020009c000009b6020080410000004002200210000000000112019f000026d5000104300001000000000002000000400200043d000009eb010000410000000000120435000100000002001d00000004012000390000000002000410000000000021043500000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f0000000100200190000023230000613d000000000201043b0000000001000414000009ba02200197000000040020008c000022d80000c13d0000000103000031000000200030008c00000020040000390000000004034019000000010b000029000023030000013d0000000103000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f000000010b0000290000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000022f20000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000022ee0000c13d000000000006004b000022ff0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000023320000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000009bb0010009c000023240000213d0000000100200190000023240000c13d000000400010043f0000001f0030008c0000232a0000a13d00000000020b04330000000e01000039000000000101041a000009bc011001970000000001120049000009c303100197000009c304200197000000000543013f000000000043004b0000000003000019000009c303002041000000000021004b0000000002000019000009c30200a041000009c30050009c000000000302c019000000000003004b0000232c0000613d000000000001042d000000000001042f00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d5000104300000000001000019000026d50001043000000a6201000041000000000010043f0000001101000039000000040010043f000009ec01000041000026d5000104300000001f0530018f000009b806300198000000400200043d00000000046200190000233d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023390000c13d000000000005004b0000234a0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000009b60020009c000009b6020080410000004002200210000000000112019f000026d500010430000a000000000002000000000100041a000009ba021001970000000001000411000000000021004b0000236b0000613d0000000202000039000000000202041a000009ba02200197000000000021004b0000236b0000613d000000000010043f0000000901000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f0000000100200190000024ca0000613d000000000101043b000000000101041a000000000001004b0000254b0000613d000000400300043d0000000e01000039000000000101041a0000006002100270000009b602200198000025220000613d000009bc01100197000300000002001d000500000001001d000000000021004b000025240000413d000009eb010000410000000000130435000a00000003001d00000004013000390000000002000410000000000021043500000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f0000000100200190000025100000613d000000000201043b0000000001000414000009ba02200197000000040020008c000023960000c13d0000000103000031000000200030008c000000200400003900000000040340190000000a0b000029000023c10000013d0000000a03000029000009b60030009c000009b6030080410000004003300210000009b60010009c000009b601008041000000c001100210000000000131019f000009ec011001c726d326ce0000040f0000000a0b0000290000006003100270000009b603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000023b00000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000023ac0000c13d000000000006004b000023bd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000252d0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000009bb0010009c000024cc0000213d0000000100200190000024cc0000c13d000000400010043f000000200030008c000024ca0000413d00000000030b04330000000e02000039000000000202041a000009bc022001970000000002230049000009c304200197000009c305300197000000000654013f000000000054004b0000000004000019000009c304002041000000000032004b0000000003000019000009c30300a041000009c30060009c000000000403c019000000000004004b000024d20000613d000009c30020009c0000252b0000813d0000000801000039000000000101041a000400000001001d00000a3201000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f0000000100200190000025100000613d000000000101043b000000040000006b000024c30000613d000609ba0010019b0000000002000019000a00050000002d0000000801000039000000000101041a000000000021004b000024d80000a13d000800000002001d000009ed0120009a000000000101041a000900000001001d000000000010043f0000000a01000039000000200010043f0000000001000414000009b60010009c000009b601008041000000c001100210000009da011001c7000080100200003926d326ce0000040f00000001002001900000000609000029000024ca0000613d000000000101043b000000000201041a00000005012000b900000005031000fa000000000023004b000024d20000c13d00000003011000fa000009bc0b1001970000000a01000029000009bc011001970000000001b10049000a00000001001d000009bc0010009c000024d20000213d0000000901000029000009ba05100197000000400200043d00000044012000390000000000b104350000002001200039000009ee0300004100000000003104350000002403200039000000000053043500000044030000390000000000320435000009d90020009c000024cc0000213d000000800c2000390000004000c0043f000009ef0020009c000024cc0000213d000000c003200039000000400030043f000000200300003900000000003c0435000000a003200039000009f004000041000000000043043500000000030204330000000002000414000000040090008c0000243d0000c13d00000001010000310000000102000039000024560000013d000009b60010009c000009b6010080410000004001100210000009b60030009c000009b6030080410000006003300210000000000113019f000009b60020009c000009b602008041000000c002200210000000000121019f0000000002090019000900000005001d00070000000b001d00020000000c001d26d326c90000040f000000020c000029000000070b00002900000009050000290000000609000029000000010220018f00030000000103550000006001100270000109b60010019d000009b601100197000000000001004b000000800d000039000000600e000039000024820000613d000009bb0010009c000024cc0000213d0000001f0310003900000a7c033001970000003f0330003900000a7c03300197000000400e00043d00000000033e00190000000000e3004b00000000040000390000000104004039000009bb0030009c000024cc0000213d0000000100400190000024cc0000c13d000000400030043f000000000d1e043600000a7c0410019800000000034d0019000000030a000367000024750000613d00000000060a034f00000000070d0019000000006806043c0000000007870436000000000037004b000024710000c13d0000001f01100190000024820000613d00000000044a034f0000000301100210000000000603043300000000061601cf000000000616022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000161019f000000000013043500000000030e0433000000000002004b000024de0000613d000000000003004b000024a10000c13d00020000000e001d00010000000d001d00070000000b001d000900000005001d000009f101000041000000000010044300000004009004430000000001000414000009b60010009c000009b601008041000000c001100210000009f2011001c7000080020200003926d326ce0000040f0000000100200190000025100000613d000000000101043b000000000001004b0000000201000029000025110000613d0000000003010433000000000003004b0000000905000029000000070b000029000000010d000029000024ad0000613d000009c10030009c000024ca0000213d000000200030008c000024ca0000413d00000000010d0433000000000001004b0000000002000039000000010200c039000000000021004b000024ca0000c13d000000000001004b000024f40000613d000000400100043d0000000000b10435000009b60010009c000009b60100804100000040011002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009f7011001c70000800d020000390000000203000039000009f80400004126d326c90000040f0000000100200190000024ca0000613d00000008020000290000000102200039000000040020006c000023fa0000413d000024c40000013d000a00050000002d0000000e02000039000000000102041a000009fb011001970000000a011001af000000000012041b000000000001042d0000000001000019000026d50001043000000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d50001043000000a6201000041000000000010043f0000001101000039000000040010043f000009ec01000041000026d50001043000000a6201000041000000000010043f0000003201000039000000040010043f000009ec01000041000026d500010430000000000003004b000025080000c13d00000000010c0019000000400400043d000a00000004001d000009f5020000410000000000240435000000040340003900000020020000390000000000230435000000240240003926d321cc0000040f0000000a020000290000000001210049000009b60010009c000009b601008041000009b60020009c000009b60200804100000060011002100000004002200210000000000121019f000026d500010430000000400100043d0000006402100039000009f30300004100000000003204350000004402100039000009f403000041000000000032043500000024021000390000002a030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009f6011001c7000026d500010430000009b600d0009c000009b60d0080410000004002d00210000009b60030009c000009b6030080410000006001300210000000000121019f000026d500010430000000000001042f000000400100043d0000004402100039000009f903000041000000000032043500000024021000390000001d030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009fa011001c7000026d50001043000000a8001000041000025250000013d00000a7f010000410000000000130435000009b60030009c000009b6030080410000004001300210000009ea011001c7000026d50001043000000a02020000410000254d0000013d0000001f0530018f000009b806300198000000400200043d0000000004620019000025380000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025340000c13d000000000005004b000025450000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000009b60020009c000009b6020080410000004002200210000000000112019f000026d500010430000000400100043d000009e9020000410000000000210435000009b60010009c000009b6010080410000004001100210000009ea011001c7000026d5000104300001000000000002000000400300043d00000a810030009c000025aa0000813d0000004004300039000000400040043f000000200430003900000000000404350000000000030435000000000002004b000025770000613d0000000303200210000000200330008900000a820430021f000000040020008c00000a82040080410000000203000367000000000513034f000000000505043b000000000445016f00000a830040009c000025920000613d00000a840040009c000025b30000c13d00000a850220009a00000a860020009c000025b00000413d000000400400043d000009c50040009c000025aa0000213d0000004002400039000000400020043f0000000401100039000000000113034f000000000101043b0000258f0000013d000000400100043d000009c50010009c000025aa0000213d000100000001001d0000004001100039000000400010043f00000a3201000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000009b60010009c000009b601008041000000c00110021000000a33011001c7000080050200003926d326ce0000040f0000000100200190000025b20000613d000000000101043b000009bb01100197000000010400002900000000001404350000000001000019000025a60000013d00000a850220009a00000a870020009c000025b00000413d000000400400043d000009c50040009c000025aa0000213d0000004002400039000000400020043f0000000402100039000000000223034f000000000202043b00000000002404350000002401100039000000000113034f000000000101043b000000000001004b0000000002000039000000010200c039000000000021004b000025b00000c13d000000200240003900000000001204350000000001040019000000000001042d00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d5000104300000000001000019000026d500010430000000000001042f000000400100043d00000a88020000410000000000210435000009b60010009c000009b6010080410000004001100210000009ea011001c7000026d5000104300002000000000002000000400400043d000000440540003900000000003504350000002003400039000009ee050000410000000000530435000009ba02200197000000240540003900000000002504350000004402000039000000000024043500000a7e0040009c000026490000813d0000008009400039000000400090043f000009ef0040009c000026490000213d000009ba0a100197000000c001400039000000400010043f00000020010000390000000000190435000000a001400039000009f0020000410000000000210435000000000204043300000000010004140000000400a0008c000026070000c13d00000001020000390000000101000031000000000001004b0000261f0000613d000009bb0010009c000026490000213d0000001f0410003900000a7c044001970000003f0440003900000a7c04400197000000400c00043d00000000044c00190000000000c4004b00000000050000390000000105004039000009bb0040009c000026490000213d0000000100500190000026490000c13d000000400040043f000000000b1c043600000a7c031001980000001f0410018f00000000013b00190000000305000367000025f90000613d000000000605034f00000000070b0019000000006806043c0000000007870436000000000017004b000025f50000c13d000000000004004b000026210000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000026210000013d000009b60030009c000009b6030080410000004003300210000009b60020009c000009b6020080410000006002200210000000000232019f000009b60010009c000009b601008041000000c001100210000000000112019f00000000020a0019000200000009001d00010000000a001d26d326c90000040f000000010a0000290000000209000029000000010220018f00030000000103550000006001100270000109b60010019d000009b601100197000000000001004b000025dd0000c13d000000600c000039000000800b00003900000000030c0433000000000002004b000026510000613d000000000003004b0000263c0000c13d00020000000c001d00010000000b001d000009f10100004100000000001004430000000400a004430000000001000414000009b60010009c000009b601008041000000c001100210000009f2011001c7000080020200003926d326ce0000040f0000000100200190000026830000613d000000000101043b000000000001004b0000000201000029000026840000613d0000000003010433000000000003004b000000010b000029000026480000613d000009c10030009c0000264f0000213d0000001f0030008c0000264f0000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b0000264f0000c13d000000000001004b000026670000613d000000000001042d00000a6201000041000000000010043f0000004101000039000000040010043f000009ec01000041000026d5000104300000000001000019000026d500010430000000000003004b0000267b0000c13d0000000001090019000000400400043d000200000004001d000009f5020000410000000000240435000000040340003900000020020000390000000000230435000000240240003926d321cc0000040f00000002020000290000000001210049000009b60010009c000009b601008041000009b60020009c000009b60200804100000060011002100000004002200210000000000121019f000026d500010430000000400100043d0000006402100039000009f30300004100000000003204350000004402100039000009f403000041000000000032043500000024021000390000002a030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009f6011001c7000026d500010430000009b600b0009c000009b60b0080410000004002b00210000009b60030009c000009b6030080410000006001300210000000000121019f000026d500010430000000000001042f000000400100043d0000004402100039000009f903000041000000000032043500000024021000390000001d030000390000000000320435000009f5020000410000000000210435000000040210003900000020030000390000000000320435000009b60010009c000009b6010080410000004001100210000009fa011001c7000026d500010430000000000001042f000009b60010009c000009b6010080410000004001100210000009b60020009c000009b6020080410000006002200210000000000112019f0000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f000009cd011001c7000080100200003926d326ce0000040f0000000100200190000026a90000613d000000000101043b000000000001042d0000000001000019000026d50001043000000000050100190000000000200443000000050030008c000026b90000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000026b10000413d000009b60030009c000009b60300804100000060013002100000000002000414000009b60020009c000009b602008041000000c002200210000000000112019f00000a89011001c7000000000205001926d326ce0000040f0000000100200190000026c80000613d000000000101043b000000000001042d000000000001042f000026cc002104210000000102000039000000000001042d0000000002000019000000000001042d000026d1002104230000000102000039000000000001042d0000000002000019000000000001042d000026d300000432000026d40001042e000026d5000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000fffffffffffffeff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000fffffffffffffe5f000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000ffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff5f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff1f000000000000000000000000000000000000000000000000ffffffffffffffbfffffffffffffffffffffffff0000000000000000000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000ffffffffffffffffffffff0000000000000000000000000000000000000000008acd72527118c8324937b1a42e02cd246697c3b633f1742f3cae11de233722b3020000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff00000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffff000000000000ffffffff000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000100000000000002000000000000000000000000000000000002a000000000000000000000000045b5ad483aa608464c2c7f278bd413d284d7790cdc836e40652e23a027708220000000000000000000000000000000000000000000000000ffffffffffffff7f02000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000ffffffffffffffff000000000000000000000000067924bf9277d905a9a4631a06d959bc032ace86b3caa835ae7e403d4f39010e000000000000000000000000000000000000000000000000ffffffffffffffdf000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000024ecdc02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000f5791bc457b3bb990493cf5f655db46c25ccf5764c9b99b8969b4c72ea7df9d0fb95a0042158e60a33e7b5bec100f3d95407b1a71bee6633bd54b8887449750b195db95800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000070a082310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000c085601c9b05546c4de925af5cdebeab0dd5f5d4bea4dc57b37e961749c911da9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000006f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e08c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000020000000000000000000000000000000000002000000000000000000000000055fdec2aab60a41fa5abb106670eb1006f5aeaee1ba7afea2bc89b5b3ec7678f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000000000000000000000000000000000000000000064000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000c085601c9b05546c4de925af5cdebeab0dd5f5d4bea4dc57b37e961749c911e4de938d100000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff00000000000000000000000000000000ffffffff0000000000000000000000008c337bff38141c507abd25c547606bdde78fe8c12e941ab613f3a565fea6cd240000000200000000000000000000000000000280000001000000000000000000f4d678b80000000000000000000000000000000000000000000000000000000035be3ac80000000000000000000000000000000000000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f0000000000000000000000000000000000000000000000000000000000000000000000007437ff9e00000000000000000000000000000000000000000000000000000000c92b283100000000000000000000000000000000000000000000000000000000eff7cc4700000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fbca3b7400000000000000000000000000000000000000000000000000000000eff7cc4800000000000000000000000000000000000000000000000000000000f25561fd00000000000000000000000000000000000000000000000000000000c92b283200000000000000000000000000000000000000000000000000000000d09dc33900000000000000000000000000000000000000000000000000000000df0aa9e900000000000000000000000000000000000000000000000000000000856c8246000000000000000000000000000000000000000000000000000000009a113c35000000000000000000000000000000000000000000000000000000009a113c3600000000000000000000000000000000000000000000000000000000b06d41bc00000000000000000000000000000000000000000000000000000000856c8247000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000007437ff9f0000000000000000000000000000000000000000000000000000000076f6ae760000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000048a98aa300000000000000000000000000000000000000000000000000000000549e946e00000000000000000000000000000000000000000000000000000000599f643000000000000000000000000000000000000000000000000000000000599f643100000000000000000000000000000000000000000000000000000000704b6c0200000000000000000000000000000000000000000000000000000000549e946f0000000000000000000000000000000000000000000000000000000054b714680000000000000000000000000000000000000000000000000000000048a98aa400000000000000000000000000000000000000000000000000000000504bffe000000000000000000000000000000000000000000000000000000000546719cd0000000000000000000000000000000000000000000000000000000020487dec0000000000000000000000000000000000000000000000000000000020487ded000000000000000000000000000000000000000000000000000000004120fccd000000000000000000000000000000000000000000000000000000004816f4f70000000000000000000000000000000000000000000000000000000006285c69000000000000000000000000000000000000000000000000000000001772047e00000000000000000000000000000000000000000000000000000000181f5a779e7177c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000004f6e6c792063616c6c61626c65206279206f776e6572000000000000000000000000000000000000000000000000000000000064000000800000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c660000000000000000002cbc26bb000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000002400000080000000000000000053ad11d8000000000000000000000000000000000000000000000000000000001c0a352900000000000000000000000000000000000000000000000000000000d9a9cd680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000ff000000000000000000000000000000000000d02641a00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400009a655f7b000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff9725942a00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000001871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690a15279c0800000000000000000000000000000000000000000000000000000000f94ebcd1000000000000000000000000000000000000000000000000000000005cf04449000000000000000000000000000000000000000000000000000000000041e5be00000000000000000000000000000000000000000000000000000000856c824700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffbff8d666f6000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffbbe4f6db0000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000aff2afbf000000000000000000000000000000000000000000000000000000009a4575b900000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000036f536ca00000000000000000000000000000000000000000000000000000000bf16aab600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffedfd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd0000000000000000000000000000000000000020000000000000000000000000e5c7a491000000000000000000000000000000000000000000000000000000008693378900000000000000000000000000000000000000000000000000000000a4ec747900000000000000000000000000000000000000000000000000000000f6cd5620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000e00000000000000000ffffffffffffffffffffff00ffffffff0000000000000000000000000000000002000000000000000000000000000000000000600000000000000000000000009ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000008000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04e487b7100000000000000000000000000000000000000000000000000000000b5a10cfa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a0000003c0000000000000000002000000000000000000000000000000000000200000008000000000000000008fe72c3e0020beb3234e76ae6676fa576fbfcae600af1c4fea44784cf0db329cfbdb8e560000000000000000000000000000000000000000000000000000000002075e0000000000000000000000000000000000000000000000000000000000232cb97f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000640000022000000000000000000000000000000000000000000000000000000004000002200000000000000000ee433e9900000000000000000000000000000000000000000000000000000000a7499d2000000000000000000000000000000000000000000000000000000000ffdb4b3700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000ffffffdf4ab35b0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000005af3107a40004c056b6a000000000000000000000000000000000000000000000000000000004c4fc93a0000000000000000000000000000000000000000000000000000000045564d3245564d4f6e52616d7020312e352e30000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000100000002800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff20000000000000000000000000000000000000000000000000ffffffffffffff808d0f71d800000000000000000000000000000000000000000000000000000000990e30bf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc0ffffffff00000000000000000000000000000000000000000000000000000000181dcf100000000000000000000000000000000000000000000000000000000097a657c9000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000405247fdce0000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000005e7b9793a663e708e92314ad76f4a3ef0640790771a3c2d7b93ee8e15f133b39") + type GetNops struct { NopsAndWeights []EVM2EVMOnRampNopAndWeight WeightsTotal *big.Int @@ -2317,6 +2338,82 @@ func (_EVM2EVMOnRamp *EVM2EVMOnRamp) Address() common.Address { return _EVM2EVMOnRamp.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *EVM2EVMOnRamp, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(EVM2EVMOnRampZkBin) + fmt.Println("deploying") + EVM2EVMOnRampAbi, err := EVM2EVMOnRampMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := EVM2EVMOnRampAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := EVM2EVMOnRampMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &EVM2EVMOnRamp{address: address, abi: *parsed, EVM2EVMOnRampCaller: EVM2EVMOnRampCaller{contract: contractBind}, EVM2EVMOnRampTransactor: EVM2EVMOnRampTransactor{contract: contractBind}, EVM2EVMOnRampFilterer: EVM2EVMOnRampFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type EVM2EVMOnRampInterface interface { CurrentRateLimiterState(opts *bind.CallOpts) (RateLimiterTokenBucket, error) diff --git a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go index 6688a60686..e7477c2e58 100644 --- a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go +++ b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go @@ -4,6 +4,7 @@ package fee_quoter import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -163,7 +168,21 @@ var FeeQuoterABI = FeeQuoterMetaData.ABI var FeeQuoterBin = FeeQuoterMetaData.Bin -func DeployFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig FeeQuoterStaticConfig, priceUpdaters []common.Address, feeTokens []common.Address, tokenPriceFeeds []FeeQuoterTokenPriceFeedUpdate, tokenTransferFeeConfigArgs []FeeQuoterTokenTransferFeeConfigArgs, premiumMultiplierWeiPerEthArgs []FeeQuoterPremiumMultiplierWeiPerEthArgs, destChainConfigArgs []FeeQuoterDestChainConfigArgs) (common.Address, *types.Transaction, *FeeQuoter, error) { +func DeployFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend, staticConfig FeeQuoterStaticConfig, priceUpdaters []common.Address, feeTokens []common.Address, tokenPriceFeeds []FeeQuoterTokenPriceFeedUpdate, tokenTransferFeeConfigArgs []FeeQuoterTokenTransferFeeConfigArgs, premiumMultiplierWeiPerEthArgs []FeeQuoterPremiumMultiplierWeiPerEthArgs, destChainConfigArgs []FeeQuoterDestChainConfigArgs) (common.Address, *CustomTransaction, *FeeQuoter, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncFeeQuoter(auth, backend, staticConfig, priceUpdaters, feeTokens, tokenPriceFeeds, tokenTransferFeeConfigArgs, premiumMultiplierWeiPerEthArgs, destChainConfigArgs) + } + parsed, err := FeeQuoterMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -176,7 +195,7 @@ func DeployFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend, stat if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &FeeQuoter{address: address, abi: *parsed, FeeQuoterCaller: FeeQuoterCaller{contract: contract}, FeeQuoterTransactor: FeeQuoterTransactor{contract: contract}, FeeQuoterFilterer: FeeQuoterFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &FeeQuoter{address: address, abi: *parsed, FeeQuoterCaller: FeeQuoterCaller{contract: contract}, FeeQuoterTransactor: FeeQuoterTransactor{contract: contract}, FeeQuoterFilterer: FeeQuoterFilterer{contract: contract}}, nil } type FeeQuoter struct { @@ -2794,6 +2813,8 @@ func (_FeeQuoter *FeeQuoterFilterer) ParseUsdPerUnitGasUpdated(log types.Log) (* return event, nil } +var FeeQuoterZkBin string = ("0x0003000000000002002c0000000000020002000000010355000000600310027000000a1a0030019d00000a1a033001970000000100200190000000bf0000c13d0000008002000039000000400020043f000000040030008c000000e00000413d000000000401043b000000e00440027000000a620040009c000000e20000213d00000a780040009c000002460000a13d00000a790040009c000002ab0000213d00000a7f0040009c000005910000213d00000a820040009c000007130000613d00000a830040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000504043b00000a200050009c000001140000213d00000005045002100000003f0440003900000a210440019700000ab10040009c000001140000213d0000008004400039000000400040043f000000800050043f0000002402200039000000a0045000c90000000004240019000000000034004b000000e00000213d000000000005004b00000ce60000c13d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b00000a020000613d002400000000001d00000024010000290000000501100210000000a00110003900000000040104330000004001400039002100000001001d000000000101043300000ab3021001970000000053040434002300000004001d0000006001400039002200000001001d0000000004010433002000000005001d0000000005050433000000400100043d0000008006100039000000000026043500000ab4025001970000006005100039000000000025043500000a1f024001970000004004100039000000000024043500000a1f03300197000000200210003900000000003204350000008003000039000000000031043500000ab50010009c000001140000213d000000a003100039000000400030043f00000a1a0020009c00000a1a020080410000004002200210000000000101043300000a1a0010009c00000a1a010080410000006001100210000000000121019f000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a31011001c700008010020000392863285e0000040f00000001002001900000002303000029000000e00000613d000000000101043b0000008002300039001e00000002001d0000000002020433001d00000002001d001f00000001001d000000000010043f0000000401000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f00000023040000290000000100200190000000e00000613d000000000101043b000000000201041a00000acd022001970000001d0000006b000000010220c1bf000000000021041b000000000104043300000a1f01100197000000400200043d00000000011204360000002003000029000000000303043300000ab40330019700000000003104350000002101000029000000000101043300000ab301100197000000400320003900000000001304350000002201000029000000000101043300000a1f01100197000000600320003900000000001304350000001e010000290000000001010433000000000001004b0000000001000039000000010100c0390000008003200039000000000013043500000a1a0020009c00000a1a020080410000004001200210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000ac5011001c70000800d02000039000000020300003900000ac6040000410000001f05000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d000000800100043d000000240010006b000000430000413d00000a020000013d000000e004000039000000400040043f0000000002000416000000000002004b000000e00000c13d0000001f0230003900000a1b02200197000000e002200039000000400020043f0000001f0530018f00000a1c06300198000000e002600039000000d10000613d000000000701034f000000007807043c0000000004840436000000000024004b000000cd0000c13d000000000005004b000000de0000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000001200030008c000001100000813d0000000001000019000028650001043000000a630040009c000002620000a13d00000a640040009c000002d10000213d00000a6a0040009c000005d90000213d00000a6d0040009c0000077a0000613d00000a6e0040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b002400000001001d00000a1f0010009c000000e00000213d286324230000040f0000002401000029000000000010043f0000000701000039000000200010043f00000040020000390000000001000019286328260000040f002400000001001d000000400100043d002300000001001d28631fe70000040f0000002401000029000000000101041a000000a002100270000000ff0220018f00000023040000290000002003400039000000000023043500000a1f0110019700000000001404350000000002040019000000400100043d002400000001001d286320b90000040f00000ac50000013d000000400100043d002400000001001d00000a1d0010009c0000011a0000a13d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000024010000290000006001100039000000400010043f000000e00100043d00000a1e0010009c000000e00000213d00000024020000290000000001120436002300000001001d000001000100043d00000a1f0010009c000000e00000213d00000023020000290000000000120435000001200100043d00000a1a0010009c000000e00000213d00000024020000290000004002200039002200000002001d0000000000120435000001400200043d00000a200020009c000000e00000213d000000e001300039000000ff04200039000000000014004b000000e00000813d000000e004200039000000000404043300000a200040009c000001140000213d00000005054002100000003f0650003900000a2106600197000000400700043d0000000006670019002100000007001d000000000076004b0000000007000039000000010700403900000a200060009c000001140000213d0000000100700190000001140000c13d000000400060043f0000002106000029000000000046043500000100022000390000000005250019000000000015004b000000e00000213d000000000004004b000001580000613d0000002104000029000000002602043400000a1f0060009c000000e00000213d00000020044000390000000000640435000000000052004b000001510000413d000001600200043d00000a200020009c000000e00000213d0000001f04200039000000000034004b000000000500001900000a220500804100000a2204400197000000000004004b000000000600001900000a220600404100000a220040009c000000000605c019000000000006004b000000e00000c13d000000e004200039000000000404043300000a200040009c000001140000213d00000005054002100000003f0650003900000a2106600197000000400700043d0000000006670019002000000007001d000000000076004b0000000007000039000000010700403900000a200060009c000001140000213d0000000100700190000001140000c13d000000400060043f00000020060000290000000006460436001c00000006001d00000100022000390000000005250019000000000015004b000000e00000213d000000000004004b0000018a0000613d0000002004000029000000002602043400000a1f0060009c000000e00000213d00000020044000390000000000640435000000000052004b000001830000413d000001800200043d00000a200020009c000000e00000213d0000001f04200039000000000034004b000000000500001900000a220500804100000a2204400197000000000004004b000000000600001900000a220600404100000a220040009c000000000605c019000000000006004b000000e00000c13d000000e004200039000000000504043300000a200050009c000001140000213d00000005045002100000003f0440003900000a2104400197000000400600043d0000000004460019001b00000006001d000000000064004b0000000006000039000000010600403900000a200040009c000001140000213d0000000100600190000001140000c13d000000400040043f0000001b040000290000000004540436001a00000004001d000001000220003900000060045000c90000000004240019000000000014004b000000e00000213d000000000005004b000013050000c13d000001a00200043d00000a200020009c000000e00000213d0000001f04200039000000000034004b000000000500001900000a220500804100000a2204400197000000000004004b000000000600001900000a220600404100000a220040009c000000000605c019000000000006004b000000e00000c13d000000e004200039001f00000004001d000000000704043300000a200070009c000001140000213d00000005067002100000003f0460003900000a2105400197000000400400043d0000000005540019000000000045004b0000000008000039000000010800403900000a200050009c000001140000213d0000000100800190000001140000c13d000000400050043f002c00000004001d00000000007404350000010005200039001e00000056001d0000001e0010006b000000e00000213d000000000007004b000013fe0000c13d000001c00200043d00000a200020009c000000e00000213d0000001f04200039000000000034004b000000000500001900000a220500404100000a2204400197000000000004004b000000000600001900000a220600204100000a220040009c000000000605c019000000000006004b000000e00000613d000000e004200039000000000504043300000a200050009c000001140000213d00000005045002100000003f0440003900000a2104400197000000400600043d0000000004460019001800000006001d000000000064004b0000000006000039000000010600403900000a200040009c000001140000213d0000000100600190000001140000c13d000000400040043f0000001804000029002b00000004001d0000000000540435000001000220003900000006045002100000000004240019000000000014004b000000e00000213d000000000005004b000016d60000c13d000001e00200043d00000a200020009c000000e00000213d0000001f04200039000000000034004b000000000300001900000a220300404100000a2204400197000000000004004b000000000500001900000a220500204100000a220040009c000000000503c019000000000005004b000000e00000613d000000e003200039000000000403043300000a200040009c000001140000213d00000005034002100000003f0330003900000a2103300197000000400500043d0000000003350019001700000005001d000000000053004b0000000005000039000000010500403900000a200030009c000001140000213d0000000100500190000001140000c13d000000400030043f00000017030000290000000003430436001600000003001d000001000220003900000240034000c90000000003230019000000000013004b000000e00000213d000000000004004b000017d40000c13d000000400100043d001d00000001001d0000000001000411000000000001004b00001a9c0000c13d0000001d03000029000000440130003900000a5f02000041000000000021043500000024013000390000001802000039000000000021043500000a60010000410000000000130435000000040130003900000020020000390000000000210435000017320000013d00000a840040009c0000037d0000a13d00000a850040009c000004970000213d00000a880040009c000006560000613d00000a890040009c000000e00000c13d0000000001000416000000000001004b000000e00000c13d0000000202000039000000000102041a000000800010043f000000000020043f000000000001004b000008740000613d000000a00400003900000ac90200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b0000025a0000413d00000abe0000013d00000a6f0040009c000003c00000a13d00000a700040009c000004c10000213d00000a730040009c0000066a0000613d00000a740040009c000000e00000c13d000000440030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002401100370000000000101043b002400000001001d00000a1f0010009c000000e00000213d0000014001000039000000400010043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000000000020043f0000000a01000039000000200010043f00000040020000390000000001000019286328260000040f0000002402000029286323f50000040f002400000001001d000000400100043d002300000001001d28631ff20000040f0000002401000029000000000101041a00000a98001001980000000002000039000000010200c0390000002304000029000000a0034000390000000000230435000000700210027000000a1a0220019700000080034000390000000000230435000000500210027000000a1a022001970000006003400039000000000023043500000040021002700000ffff0220018f00000040034000390000000000230435000000200210027000000a1a022001970000002003400039000000000023043500000a1a0110019700000000001404350000000002040019000000400100043d002400000001001d2863209b0000040f00000ac50000013d00000a7a0040009c000005f00000213d00000a7d0040009c000007d80000613d00000a7e0040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b002400000001001d00000a200010009c000000e00000213d286324230000040f0000002401000029000000000010043f0000000501000039000000200010043f00000040020000390000000001000019286328260000040f002400000001001d000000400100043d002300000001001d28631fe70000040f0000002401000029000000000101041a00000023040000290000002002400039000000e003100270000000000032043500000a270110019700000000001404350000000001040019000005e70000013d00000a650040009c000006270000213d00000a680040009c000007e30000613d00000a690040009c000000e00000c13d000000440030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b002400000002001d00000a200020009c000000e00000213d0000002401100370000000000101043b002300000001001d00000a200010009c000000e00000213d000000230130006a00000a230010009c000000e00000213d000000a40010008c000000e00000413d0000002401000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d00000a260020009c000001140000213d000000000101043b0000022003200039000000400030043f000000000301041a000000d80430027000000a1a044001970000014005200039002200000005001d0000000000450435000000c8043002700000ffff0440018f0000012005200039002100000005001d0000000000450435000000b8043002700000ffff0440018f0000010005200039001c00000005001d0000000000450435000000a8043002700000ffff0440018f000000e005200039001300000005001d0000000000450435000000880430027000000a1a04400197000000c005200039001400000005001d000000000045043500000078043002700000ffff0440018f000000a005200039001600000005001d0000000000450435000000580430027000000a1a044001970000008005200039001500000005001d0000000000450435000000380430027000000a1a044001970000006005200039001900000005001d0000000000450435000000180430027000000a1a044001970000004005200039002000000005001d000000000045043500000008043002700000ffff0440018f0000002005200039001f00000005001d0000000000450435000000ff033001900000000004000039000000010400c03900000000004204350000000101100039000000000101041a000001600520003900000a1a04100197001700000005001d0000000000450435000000380410021000000a38044001970000020005200039001e00000005001d000000000045043500000a36001001980000000004000039000000010400c039000001e005200039001800000005001d0000000000450435000000800410027000000a1a04400197000001c005200039001d00000005001d0000000000450435000000600410027000000a1a04400197000001a005200039001b00000005001d00000000004504350000018002200039000000200110027000000a2001100197001a00000002001d0000000000120435000000000003004b00000dbc0000613d00000023010000290000006401100039001200000001001d0000000201100367000000000101043b00000a1f0010009c000000e00000213d000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d0000000202000367000000000101043b000000000101041a000000000001004b00000f1d0000c13d0000001201200360000000000101043b00000a1f0010009c000000e00000213d000000400200043d00000aae0300004100000000003204350000000403200039000000000013043500000a1a0020009c00000a1a02008041000000400120021000000a4e011001c7000028650001043000000a8a0040009c00000a040000613d00000a8b0040009c000009d30000613d00000a8c0040009c000000e00000c13d0000000001000416000000000001004b000000e00000c13d000000e001000039000000400010043f000000800000043f000000a00000043f000000c00000043f28631fdc0000040f0000000001000412002a00000001001d002900000000003d0000800501000039000000440300003900000000040004150000002a0440008a000000050440021000000a9b020000412863283b0000040f00000a1e01100197002400000001001d000000e00010043f0000000001000412002800000001001d002700200000003d0000000004000415000000280440008a0000000504400210000080050100003900000a9b0200004100000044030000392863283b0000040f00000a1f01100197000001000010043f0000000001000412002600000001001d002500400000003d0000000004000415000000260440008a0000000504400210000080050100003900000a9b0200004100000044030000392863283b0000040f00000a1a01100197000001200010043f000000400100043d00000024020000290000000002210436000001000300043d00000a1f033001970000000000320435000001200200043d00000a1a022001970000004003100039000000000023043500000a1a0010009c00000a1a01008041000000400110021000000acc011001c7000028640001042e00000a750040009c00000a1c0000613d00000a760040009c000009e70000613d00000a770040009c000000e00000c13d000000440030008c000000e00000413d0000000004000416000000000004004b000000e00000c13d0000000404100370000000000404043b00000a200040009c000000e00000213d0000002305400039000000000035004b000000e00000813d0000000405400039000000000551034f000000000605043b00000a200060009c000001140000213d00000005056002100000003f0750003900000a210770019700000ab10070009c000001140000213d0000008007700039000000400070043f000000800060043f00000024044000390000000005450019000000000035004b000000e00000213d000000000006004b000003ee0000613d000000000641034f000000000606043b00000a1f0060009c000000e00000213d000000200220003900000000006204350000002004400039000000000054004b000003e50000413d0000002402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000000500001900000a220500804100000a2204400197000000000004004b000000000600001900000a220600404100000a220040009c000000000605c019000000000006004b000000e00000c13d0000000404200039000000000441034f000000000404043b00000a200040009c000001140000213d00000005054002100000003f0650003900000a2106600197000000400700043d0000000006670019002000000007001d000000000076004b0000000007000039000000010700403900000a200060009c000001140000213d0000000100700190000001140000c13d000000400060043f00000020060000290000000006460436001f00000006001d00000024022000390000000005250019000000000035004b000000e00000213d000000000004004b000004240000613d0000002003000029000000000421034f000000000404043b00000a1f0040009c000000e00000213d000000200330003900000000004304350000002002200039000000000052004b0000041b0000413d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b000010700000c13d00000020010000290000000001010433000000000001004b00000a020000613d002400000000001d000004380000013d0000002402000029002400010020003d00000020010000290000000001010433000000240010006b00000a020000813d000000240100002900000005011002100000001f01100029002200000001001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000301041a000000000003004b000004320000613d0000000b01000039000000000201041a000000000002004b000017680000613d000000010130008a000000000023004b000004710000613d000000000012004b00001ed50000a13d00000a330130009a00000a330220009a000000000202041a000000000021041b000000000020043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c70000801002000039002100000003001d2863285e0000040f00000021030000290000000100200190000000e00000613d000000000101043b000000000031041b0000000b01000039000000000301041a000000000003004b00001edb0000613d000000010130008a00000a330230009a000000000002041b0000000b02000039000000000012041b0000002301000029000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b00000020010000290000000001010433000000240010006c00001ed50000a13d00000022010000290000000001010433000000000200041400000a1f0510019700000a1a0020009c00000a1a02008041000000c00120021000000a31011001c70000800d02000039000000020300003900000a3404000041286328590000040f0000000100200190000004320000c13d000000e00000013d00000a860040009c000007040000613d00000a870040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b001e00000001001d00000a200010009c000000e00000213d0000001e0130006a00000a230010009c000000e00000213d000000440010008c000000e00000413d0000000001000411000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000000001004b00000b050000c13d000000400100043d00000ac802000041000000000021043500000004021000390000000003000411000006500000013d00000a710040009c0000070b0000613d00000a720040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d000000000423004900000a230040009c000000e00000213d000000440040008c000000e00000413d000000c005000039000000400050043f0000000404200039000000000641034f000000000606043b00000a200060009c000000e00000213d00000000062600190000002307600039000000000037004b000000e00000813d0000000407600039000000000771034f000000000807043b00000a200080009c000001140000213d00000005078002100000003f0970003900000a210990019700000a250090009c000001140000213d000000c009900039000000400090043f000000c00080043f00000024066000390000000007670019000000000037004b000000e00000213d000000000008004b000004fa0000613d000000000861034f000000000808043b00000a1f0080009c000000e00000213d000000200550003900000000008504350000002006600039000000000076004b000004f10000413d000000c005000039000000800050043f0000002004400039000000000441034f000000000404043b00000a200040009c000000e00000213d00000000022400190000002304200039000000000034004b000000000500001900000a220500804100000a2204400197000000000004004b000000000600001900000a220600404100000a220040009c000000000605c019000000000006004b000000e00000c13d0000000404200039000000000441034f000000000404043b00000a200040009c000001140000213d00000005054002100000003f0650003900000a2106600197000000400700043d0000000006670019002100000007001d000000000076004b0000000007000039000000010700403900000a200060009c000001140000213d0000000100700190000001140000c13d000000400060043f00000021060000290000000004460436002000000004001d00000024022000390000000004250019000000000034004b000000e00000213d000000000042004b000005340000813d0000002103000029000000000521034f000000000505043b00000a1f0050009c000000e00000213d000000200330003900000000005304350000002002200039000000000042004b0000052b0000413d0000002101000029000000a00010043f000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d00000021010000290000000001010433000000000001004b0000129e0000c13d000000800100043d002100000001001d0000000021010434002200000002001d000000000001004b00000a020000613d002400000000001d000000240100002900000005011002100000002201100029000000000101043300000a1f0110019800001b830000613d002300000001001d000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000000001004b000005780000c13d0000000201000039000000000101041a00000a200010009c000001140000213d00000001021000390000000203000039000000000023041b00000a2e0110009a0000002302000029000000000021041b000000000103041a002000000001001d000000000020043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002002000029000000000021041b000000400100043d0000002302000029000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000010300003900000a2f04000041286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d00000021010000290000000001010433000000240010006b000005460000413d00000a020000013d00000a800040009c000007ea0000613d00000a810040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000141034f000000000101043b001f00000001001d00000a200010009c000000e00000213d001e00240020003d0000001f0100002900000005021002100000001e01200029000000000031004b000000e00000213d0000003f0120003900000a210310019700000ab10030009c000001140000213d0000008001300039000000400010043f0000001f04000029000000800040043f000000000004004b00000d190000c13d00000020020000390000000003210436000000800200043d00000000002304350000004004100039000000000002004b000005d00000613d000000800300003900000000050000190000000006010019000000000704001900000020033000390000000004030433000000008404043400000a270440019700000000004704350000006004600039000000000608043300000a1a06600197000000000064043500000040047000390000000105500039000000000025004b0000000006070019000005c10000413d000000000214004900000a1a0020009c00000a1a02008041000000600220021000000a1a0010009c00000a1a010080410000004001100210000000000112019f000028640001042e00000a6b0040009c0000086b0000613d00000a6c0040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b00000a1f0010009c000000e00000213d286324860000040f000000400200043d002400000002001d2863203d0000040f000000240100002900000a1a0010009c00000a1a01008041000000400110021000000a8d011001c7000028640001042e00000a7b0040009c000008760000613d00000a7c0040009c000000e00000c13d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b002400000001001d00000a200010009c000000e00000213d2863200f0000040f00000200021000390000000000020435000001e0021000390000000000020435000001c0021000390000000000020435000001a00210003900000000000204350000018002100039000000000002043500000160021000390000000000020435000001400210003900000000000204350000012002100039000000000002043500000100021000390000000000020435000000e0021000390000000000020435000000c0021000390000000000020435000000a0021000390000000000020435000000800210003900000000000204350000006002100039000000000002043500000040021000390000000000020435000000000101043600000000000104350000002401000029286324050000040f286324320000040f0000000002010019000000400100043d002400000001001d286320440000040f00000ac50000013d00000a660040009c000009b90000613d00000a670040009c000000e00000c13d000000440030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b002400000002001d00000a1f0020009c000000e00000213d0000002401100370000000000101043b002300000001001d00000a200010009c000000e00000213d0000002301000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000ff0010019000000bf40000c13d000000400100043d00000a8e02000041000000000021043500000004021000390000002303000029000000000032043500000a1a0010009c00000a1a01008041000000400110021000000a4e011001c700002865000104300000000001000416000000000001004b000000e00000c13d000000c001000039000000400010043f0000001301000039000000800010043f00000aca01000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e0020000392863201b0000040f000000c00110008a00000a1a0010009c00000a1a01008041000000600110021000000acb011001c7000028640001042e000000440030008c000000e00000413d0000000004000416000000000004004b000000e00000c13d0000000404100370000000000604043b00000a200060009c000000e00000213d0000002304600039000000000034004b000000e00000813d0000000405600039000000000451034f000000000404043b00000a200040009c000000e00000213d00000000064600190000002406600039000000000036004b000000e00000213d0000002406100370000000000606043b00000a200060009c000000e00000213d0000002307600039000000000037004b000000e00000813d002200040060003d0000002207100360000000000707043b002300000007001d00000a200070009c000000e00000213d0000002406600039002100000006001d002400230060002d000000240030006b000000e00000213d0000001f0340003900000ace033001970000003f0330003900000ace0330019700000ab10030009c000001140000213d0000008003300039000000400030043f0000002003500039000000000331034f000000800040043f00000ace054001980000001f0640018f000000a001500039000006a60000613d000000a007000039000000000803034f000000008908043c0000000007970436000000000017004b000006a20000c13d000000000006004b000006b30000613d000000000353034f0000000305600210000000000601043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000310435000000a0014000390000000000010435000000de0100043d002000000001001d00000ab303100197000000400100043d0000008004100039000000ca0500043d000000c00600043d0000000000340435001f00000006001d00000ab40360019700000060041000390000000000340435000000000221043600000060045002700000004003100039001e00000004001d0000000000430435000000000300041100000a1f03300197000000000032043500000ab50010009c000001140000213d000000a003100039000000400030043f00000a1a0020009c00000a1a020080410000004002200210000000000101043300000a1a0010009c00000a1a010080410000006001100210000000000121019f000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a31011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000010043f0000000401000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000ff00100190000010bc0000c13d000000400200043d002400000002001d00000aba010000410000000000120435000000040120003900000000020004110000001e030000290000001f040000290000002005000029286327c30000040f0000002402000029000000000121004900000a1a0010009c00000a1a01008041000000600110021000000a1a0020009c00000a1a020080410000004002200210000000000121019f00002865000104300000000001000416000000000001004b000000e00000c13d0000002401000039000000800010043f00000aaf01000041000028640001042e0000000001000416000000000001004b000000e00000c13d000000000100041a00000a1f01100197000000800010043f00000aaf01000041000028640001042e000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000504043b00000a200050009c000001140000213d00000005045002100000003f0440003900000a210440019700000ab10040009c000001140000213d0000008004400039000000400040043f000000800050043f000000240220003900000060045000c90000000004240019000000000034004b000000e00000213d000000000005004b00000c0e0000c13d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b00000a020000613d002400000000001d00000024010000290000000501100210000000a001100039000000000101043300000020021000390000000002020433002200000002001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000201041a00000a3502200197000000220500002900000020035000390000000004030433000000a00440021000000a3604400197000000000242019f000000000405043300000a1f04400197000000000242019f000000000021041b000000400100043d00000000024104360000000003030433000000ff0330018f000000000032043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2a011001c70000800d02000039000000020300003900000a37040000410000002305000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d000000800100043d000000240010006b0000073c0000413d00000a020000013d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000504043b00000a200050009c000001140000213d00000005045002100000003f0440003900000a210440019700000ab10040009c000001140000213d0000008004400039000000400040043f000000800050043f000000240220003900000006045002100000000004240019000000000034004b000000e00000213d000000000005004b00000c350000c13d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b00000a020000613d002400000000001d00000024010000290000000501100210000000a001100039000000000101043300000020021000390000000002020433002200000002001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000801000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000220200002900000a2002200197000000000101043b000000000301041a00000a4f03300197000000000323019f000000000031041b000000400100043d000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000020300003900000a50040000410000002305000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d000000800100043d000000240010006b000007a30000413d00000a020000013d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b00000a1f0010009c000000e00000213d286326190000040f00000a150000013d0000000001000416000000000001004b000000e00000c13d0000001201000039000000800010043f00000aaf01000041000028640001042e000000c40030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b002400000002001d00000a200020009c000000e00000213d0000002402100370000000000202043b002300000002001d00000a1f0020009c000000e00000213d0000006402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000404043b002200000004001d00000a200040009c000000e00000213d0000002404200039001f00000004001d001e00220040002d0000001e0030006b000000e00000213d0000008402100370000000000202043b002100000002001d00000a200020009c000000e00000213d00000021020000290000002302200039000000000032004b000000e00000813d00000021020000290000000402200039000000000221034f000000000202043b001d00000002001d00000a200020009c000000e00000213d000000210200002900000024042000390000001d020000290000000502200210002000000004001d001c00000002001d0000000002420019000000000032004b000000e00000213d000000a402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000404043b001b00000004001d00000a200040009c000000e00000213d001a00240020003d0000001b0200002900000006022002100000001a02200029000000000032004b000000e00000213d0000004401100370000000000101043b001600000001001d00000a9b0100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f000000010020019000001a9b0000613d000000000301043b000000230130014f00000a1f00100198000008510000613d00000023010000290000001602000029286320c10000040f001600000001001d00000a9b010000410000000000100443000000000100041200000004001004430000002400000443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b00000a1e01100197000000160010006b000013280000a13d000000400200043d0000002403200039000000000013043500000ac201000041000000000012043500000004012000390000001603000029000012980000013d0000000001000416000000000001004b000000e00000c13d0000000b02000039000000000102041a000000800010043f000000000020043f000000000001004b00000ab40000c13d000000200200003900000abf0000013d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000e00000813d0000000404200039000000000441034f000000000504043b00000a200050009c000001140000213d00000005045002100000003f0440003900000a210440019700000ab10040009c000001140000213d0000008004400039000000400040043f000000800050043f000000240220003900000240045000c90000000004240019000000000034004b000000e00000213d000000000005004b00000c500000c13d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b00000a020000613d002400000000001d00000024010000290000000501100210000000a0011000390000000001010433000000001201043400000a200420019800000f170000613d00000000030104330000016001300039002300000001001d000000000101043300000a1a0110019800000f170000613d0000020002300039002200000002001d000000000202043300000a380220019700000a390020009c00000f170000c13d0000006002300039002000000002001d000000000202043300000a1a02200197000000000021004b00000f170000213d001f00000003001d000000000040043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c70000801002000039002100000004001d2863285e0000040f0000000100200190000000e00000613d0000002106000029000000000101043b0000000101100039000000000101041a0000001f050000290000000042050434000000000002004b0000000003000039000000010300c039000000400200043d0000000003320436001e00000004001d00000000040404330000ffff0440018f00000000004304350000004003500039001d00000003001d000000000303043300000a1a03300197000000400420003900000000003404350000002003000029000000000303043300000a1a03300197000000600420003900000000003404350000008003500039001c00000003001d000000000303043300000a1a0330019700000080042000390000000000340435000000a003500039001b00000003001d00000000030304330000ffff0330018f000000a0042000390000000000340435000000c003500039001a00000003001d000000000303043300000a1a03300197000000c0042000390000000000340435000000e003500039001900000003001d00000000030304330000ffff0330018f000000e00420003900000000003404350000010003500039001800000003001d00000000030304330000ffff0330018f000001000420003900000000003404350000012003500039001600000003001d00000000030304330000ffff0330018f000001200420003900000000003404350000014003500039001400000003001d000000000303043300000a1a03300197000001400420003900000000003404350000002303000029000000000303043300000a1a03300197000001600420003900000000003404350000018003500039001700000003001d000000000303043300000a200330019700000180042000390000000000340435000001a003500039001500000003001d000000000303043300000a1a03300197000001a0042000390000000000340435000001c003500039001300000003001d000000000303043300000a1a03300197000001c0042000390000000000340435000001e003500039001200000003001d0000000003030433000000000003004b0000000003000039000000010300c039000001e00420003900000000003404350000002203000029000000000303043300000a38033001970000020004200039000000000034043500000a1a0020009c00000a1a02008041000000400220021000000a3a001001980000093d0000613d000000000100041400000a1a0010009c00000a1a01008041000000c001100210000000000121019f00000abe011001c70000800d02000039000000020300003900000a3b04000041000009460000013d000000000100041400000a1a0010009c00000a1a01008041000000c001100210000000000121019f00000abe011001c70000800d02000039000000020300003900000a3c040000410000000005060019286328590000040f0000000100200190000000e00000613d0000002101000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d0000001f020000290000000002020433000000000002004b000000000101043b000000000201041a00000a3d02200197000000010220c1bf0000001e030000290000000003030433000000080330021000000a3e03300197000000000232019f0000001d030000290000000003030433000000180330021000000a3f03300197000000000232019f00000020030000290000000003030433000000380330021000000a4003300197000000000232019f0000001c030000290000000003030433000000580330021000000a4103300197000000000232019f0000001b030000290000000003030433000000780330021000000a4203300197000000000232019f0000001a030000290000000003030433000000880330021000000a4303300197000000000232019f00000019030000290000000003030433000000a80330021000000a4403300197000000000232019f00000018030000290000000003030433000000b80330021000000a4503300197000000000232019f00000016030000290000000003030433000000c80330021000000a4603300197000000000232019f00000014030000290000000003030433000000d80330021000000a4703300197000000000232019f000000000021041b00000001011000390000002302000029000000000202043300000a1a02200197000000000301041a00000a4803300197000000000223019f00000017030000290000000003030433000000200330021000000a4903300197000000000232019f00000015030000290000000003030433000000600330021000000a4a03300197000000000232019f00000013030000290000000003030433000000800330021000000a4b03300197000000000232019f00000012030000290000000003030433000000000003004b00000a4c030000410000000003006019000000000232019f00000022030000290000000003030433000000380330027000000a3a03300197000000000232019f000000000021041b0000002402000029002400010020003d000000800100043d000000240010006b0000089f0000413d00000a020000013d000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000601043b00000a1f0060009c000000e00000213d000000000100041a00000a1f011001970000000005000411000000000015004b00000ad90000c13d000000000056004b00000ae30000c13d00000a6001000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f00000a9201000041000000c40010043f00000a90010000410000286500010430000000240030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000401100370000000000101043b00000a1f0010009c000000e00000213d000000000010043f0000000801000039000000200010043f00000040020000390000000001000019286328260000040f000000000101041a00000a2001100197000000800010043f00000aaf01000041000028640001042e0000000001000416000000000001004b000000e00000c13d0000000101000039000000000201041a00000a1f032001970000000006000411000000000036004b00000acf0000c13d000000000300041a00000a2804300197000000000464019f000000000040041b00000a2802200197000000000021041b000000000100041400000a1f0530019700000a1a0010009c00000a1a01008041000000c00110021000000a31011001c70000800d02000039000000030300003900000abd04000041286328590000040f0000000100200190000000e00000613d0000000001000019000028640001042e000000640030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000402043b00000a1f0040009c000000e00000213d0000004402100370000000000302043b00000a1f0030009c000000e00000213d0000002401100370000000000201043b0000000001040019286320c10000040f000000400200043d000000000012043500000a1a0020009c00000a1a02008041000000400120021000000aa9011001c7000028640001042e000000440030008c000000e00000413d0000000002000416000000000002004b000000e00000c13d0000000402100370000000000202043b002300000002001d00000a200020009c000000e00000213d00000023020000290000002302200039000000000032004b000000e00000813d00000023020000290000000402200039000000000221034f000000000202043b00000a200020009c000001140000213d00000005052002100000003f0450003900000a210440019700000ab10040009c000001140000213d0000008004400039000000400040043f000000800020043f00000023040000290000002404400039002200000045001d000000220030006b000000e00000213d000000000002004b00000d2a0000c13d0000002402100370000000000202043b00000a200020009c000000e00000213d0000002304200039000000000034004b000000000500001900000a220500404100000a2204400197000000000004004b000000000600001900000a220600204100000a220040009c000000000605c019000000000006004b000000e00000613d0000000404200039000000000441034f000000000504043b00000a200050009c000001140000213d00000005045002100000003f0440003900000a2104400197000000400600043d0000000004460019001e00000006001d000000000064004b0000000006000039000000010600403900000a200040009c000001140000213d0000000100600190000001140000c13d000000400040043f0000001e040000290000000004540436001d00000004001d000000240220003900000006045002100000000004240019000000000034004b000000e00000213d000000000005004b000010540000c13d000000000100041a00000a1f011001970000000002000411000000000012004b00000af40000c13d000000800100043d000000000001004b000011c90000c13d0000001e010000290000000001010433000000000001004b00000a020000613d002400000000001d000000240100002900000005011002100000001d01100029000000000101043300000020021000390000000002020433002300000002001d000000000101043300000a2001100197002200000001001d000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000230200002900000a1f02200197000000000101043b002300000002001d000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a31011001c70000800d02000039000000030300003900000a5b0400004100000022050000290000002306000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d0000001e010000290000000001010433000000240010006b00000a790000413d00000a020000013d000000a00400003900000ab00200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b00000ab70000413d000000600250008a000000800100003928631ffd0000040f000000400100043d002400000001001d00000080020000392863202d0000040f0000002402000029000000000121004900000a1a0010009c00000a1a01008041000000600110021000000a1a0020009c00000a1a020080410000004002200210000000000121019f000028640001042e00000a6001000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f00000abc01000041000000c40010043f00000a9001000041000028650001043000000a6001000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f00000a8f01000041000000c40010043f00000a900100004100002865000104300000000101000039000000000201041a00000a2802200197000000000262019f000000000021041b000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a31011001c70000800d02000039000000030300003900000a9104000041286328590000040f0000000100200190000000e00000613d00000a020000013d000000400100043d000000440210003900000a8f03000041000000000032043500000024021000390000001603000039000000000032043500000a6002000041000000000021043500000004021000390000002003000039000000000032043500000a1a0010009c00000a1a01008041000000400110021000000a61011001c700002865000104300000001e04000029002400040040003d00000002020003670000002401200360000000000301043b00000000010000310000000004410049000000230440008a00000a220540019700000a2206300197000000000756013f000000000056004b000000000500001900000a2205004041000000000043004b000000000400001900000a220400804100000a220070009c000000000504c019000000000005004b000000e00000c13d0000002403300029000000000232034f000000000202043b001b00000002001d00000a200020009c000000e00000213d0000001b02000029000000060220021000000000012100490000002002300039000000000012004b000000000300001900000a220300204100000a220110019700000a2202200197000000000412013f000000000012004b000000000100001900000a220100404100000a220040009c000000000103c019000000000001004b000000e00000c13d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b001c00000001001d001d0a1a0010019b0000001b0000006b00000fcf0000c13d0000002401000029001b00200010003d00000002020003670000001b01200360000000000301043b00000000010000310000001e0410006a000000230440008a00000a220540019700000a2206300197000000000756013f000000000056004b000000000500001900000a2205004041000000000043004b000000000400001900000a220400804100000a220070009c000000000504c019000000000005004b000000e00000c13d0000002403300029000000000232034f000000000202043b001a00000002001d00000a200020009c000000e00000213d0000001a02000029000000060220021000000000012100490000002002300039000000000012004b000000000300001900000a220300204100000a220110019700000a2202200197000000000412013f000000000012004b000000000100001900000a220100404100000a220040009c000000000103c019000000000001004b000000e00000c13d0000001a0000006b00000a020000613d000000000900001900000002010003670000001b02100360000000000302043b00000000020000310000001e0420006a000000230440008a00000a220540019700000a2206300197000000000756013f000000000056004b000000000500001900000a2205004041000000000043004b000000000400001900000a220400804100000a220070009c000000000504c019000000000005004b000000e00000c13d0000002404300029000000000341034f000000000303043b00000a200030009c000000e00000213d00000006053002100000000005520049000000200440003900000a220650019700000a2207400197000000000867013f000000000067004b000000000600001900000a2206004041000000000054004b000000000500001900000a220500204100000a220080009c000000000605c019000000000006004b000000e00000c13d000000000039004b00001ed50000813d00000006039002100000000003340019000000000232004900000a230020009c000000e00000213d000000400020008c000000e00000413d000000400400043d00000a240040009c000001140000213d0000004002400039000000400020043f000000000231034f000000000202043b00000a200020009c000000e00000213d00000000052404360000002002300039000000000121034f000000000101043b00000a270010009c000000e00000213d002300000005001d0000000000150435000000400300043d00000a240030009c000001140000213d0000004002300039000000400020043f002000000003001d00000000021304360000001d01000029001f00000002001d0000000000120435000000000104043300000a2001100197000000000010043f0000000501000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c70000801002000039002100000009001d002200000004001d2863285e0000040f000000220400002900000001002001900000002305000029000000e00000613d0000002002000029000000000202043300000a27022001970000001f030000290000000003030433000000e003300210000000000223019f000000000101043b000000000021041b00000000020404330000000001050433000000400300043d00000020043000390000001c05000029000000000054043500000a2701100197000000000013043500000a1a0030009c00000a1a030080410000004001300210000000000300041400000a1a0030009c00000a1a03008041000000c003300210000000000113019f00000a2a011001c700000a20052001970000800d02000039000000020300003900000ac704000041286328590000040f00000021090000290000000100200190000000e00000613d00000001099000390000001a0090006c00000b700000413d00000a020000013d0000002401000029286326190000040f0000002302000029000000000020043f0000000902000039000000200020043f002400000001001d00000040020000390000000001000019286328260000040f0000000101100039000000000101041a000000800110027000000a1a021001970000002301000029286327d00000040f000000400200043d000000200320003900000000001304350000002401000029000000000012043500000a1a0020009c00000a1a02008041000000400120021000000a8d011001c7000028640001042e000000a005000039000000000623004900000a230060009c000000e00000213d000000600060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000000721034f000000000707043b00000a1f0070009c000000e00000213d0000000007760436000000400800043d00000a240080009c000001140000213d0000004009800039000000400090043f0000002009200039000000000a91034f000000000a0a043b00000a1f00a0009c000000e00000213d000000000aa804360000002009900039000000000991034f000000000909043b000000ff0090008c000000e00000213d00000000009a0435000000000087043500000000056504360000006002200039000000000042004b00000c0f0000413d000007330000013d000000a005000039000000000623004900000a230060009c000000e00000213d000000400060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000000721034f000000000707043b00000a1f0070009c000000e00000213d00000000077604360000002008200039000000000881034f000000000808043b00000a200080009c000000e00000213d000000000087043500000000056504360000004002200039000000000042004b00000c360000413d0000079a0000013d000000a005000039000000000623004900000a230060009c000000e00000213d000002400060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000000721034f000000000707043b00000a200070009c000000e00000213d0000000007760436000000400800043d00000a260080009c000001140000213d0000022009800039000000400090043f0000002009200039000000000a91034f000000000a0a043b00000000000a004b000000000b000039000000010b00c0390000000000ba004b000000e00000c13d000000000aa804360000002009900039000000000b91034f000000000b0b043b0000ffff00b0008c000000e00000213d0000000000ba04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000000400b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000000600b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000000800b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b0000ffff00a0008c000000e00000213d000000a00b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000000c00b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b0000ffff00a0008c000000e00000213d000000e00b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b0000ffff00a0008c000000e00000213d000001000b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b0000ffff00a0008c000000e00000213d000001200b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000001400b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000001600b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a2000a0009c000000e00000213d000001800b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000001a00b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000a1a00a0009c000000e00000213d000001c00b8000390000000000ab04350000002009900039000000000a91034f000000000a0a043b00000000000a004b000000000b000039000000010b00c0390000000000ba004b000000e00000c13d000001e00b8000390000000000ab04350000002009900039000000000991034f000000000909043b00000a2700900198000000e00000c13d000002000a80003900000000009a0435000000000087043500000000056504360000024002200039000000000042004b00000c510000413d000008960000013d000000a005000039000000000623004900000a230060009c000000e00000213d000000a00060008c000000e00000413d000000400600043d00000ab50060009c000001140000213d000000a007600039000000400070043f000000000721034f000000000707043b00000a1f0070009c000000e00000213d00000000087604360000002007200039000000000971034f000000000909043b00000ac300900198000000e00000c13d00000000009804350000002007700039000000000871034f000000000808043b00000ac400800198000000e00000c13d000000400960003900000000008904350000002007700039000000000871034f000000000808043b00000a1f0080009c000000e00000213d000000600960003900000000008904350000002007700039000000000771034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b000000e00000c13d000000800860003900000000007804350000000005650436000000a002200039000000000042004b00000ce70000413d0000003a0000013d00000a250030009c000001140000213d00000000030000190000004004100039000000400040043f000000200410003900000000000404350000000000010435000000a00430003900000000001404350000002003300039000000000023004b00000dc20000813d000000400100043d00000a240010009c00000d1c0000a13d000001140000013d000000a006000039002100240030009200000d330000013d00000024020000290000000000a2043500000000068604360000002004400039000000220040006c00000a3f0000813d000000000241034f000000000202043b00000a200020009c000000e00000213d0000002302200029000000210520006900000a230050009c000000e00000213d000000400050008c000000e00000413d000000400800043d00000a240080009c000001140000213d0000004005800039000000400050043f0000002405200039000000000751034f000000000707043b00000a200070009c000000e00000213d0000000007780436002400000007001d0000002005500039000000000551034f000000000505043b00000a200050009c000000e00000213d00000000022500190000004305200039000000000035004b000000000700001900000a220700804100000a2205500197000000000005004b000000000900001900000a220900404100000a220050009c000000000907c019000000000009004b000000e00000c13d0000002405200039000000000551034f000000000c05043b00000a2000c0009c000001140000213d0000000505c002100000003f0550003900000a2105500197000000400a00043d000000000b5a00190000000000ab004b0000000005000039000000010500403900000a2000b0009c000001140000213d0000000100500190000001140000c13d0000004000b0043f0000000000ca0435000000440b200039000000e002c000c9000000000cb2001900000000003c004b000000e00000213d0000000000cb004b00000d2d0000813d000000000d0a00190000000002b3004900000a230020009c000000e00000213d000000e00020008c000000e00000413d000000400e00043d00000a2400e0009c000001140000213d0000004002e00039000000400020043f0000000002b1034f000000000202043b00000a1f0020009c000000e00000213d000000000f2e0436000000400200043d00000a250020009c000001140000213d000000c005200039000000400050043f0000002005b00039000000000751034f000000000707043b00000a1a0070009c000000e00000213d00000000077204360000002005500039000000000951034f000000000909043b00000a1a0090009c000000e00000213d00000000009704350000002005500039000000000751034f000000000707043b0000ffff0070008c000000e00000213d000000400920003900000000007904350000002005500039000000000751034f000000000707043b00000a1a0070009c000000e00000213d000000600920003900000000007904350000002005500039000000000751034f000000000707043b00000a1a0070009c000000e00000213d000000800920003900000000007904350000002005500039000000000551034f000000000505043b000000000005004b0000000007000039000000010700c039000000000075004b000000e00000c13d000000200dd00039000000a007200039000000000057043500000000002f04350000000000ed0435000000e00bb000390000000000cb004b00000d760000413d00000d2d0000013d000000400100043d00000a8e02000041000000000021043500000004021000390000002403000029000006500000013d0000000002000019002100000002001d0000000502200210002000000002001d0000001e012000290000000201100367000000000101043b002300000001001d00000a1f0010009c000000e00000213d000000400100043d00000a240010009c000001140000213d0000004002100039000000400020043f0000002002100039000000000002043500000000000104350000002301000029000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400300043d00000a240030009c000001140000213d000000000101043b0000004002300039000000400020043f000000000101041a00000a2702100197002400000003001d0000000002230436000000e001100270002200000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b0022002200100074000017680000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b00000a1a01100197000000220010006b00000f030000413d0000002301000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d00000a240020009c0000002404000029000001140000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f000000000013043500000f040000613d002300000003001d000000400100043d00000a240010009c000001140000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400b00043d00000a9d0100004100000000051b0436000000000100041400000a1f02200197000000040020008c00000e400000c13d0000000103000031000000a00030008c000000a004000039000000000403401900000e6e0000013d001d00000005001d00000a1a00b0009c00000a1a0300004100000000030b4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c7002200000002001d00240000000b001d2863285e0000040f000000240b000029000000600310027000000a1a03300197000000a00030008c000000a0040000390000000004034019000000e00640019000000000056b001900000e5c0000613d000000000701034f00000000080b0019000000007907043c0000000008980436000000000058004b00000e580000c13d0000001f0740019000000e690000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0000000100200190000012670000613d00000022020000290000001d050000290000001f01400039000001e00110018f000000000ab1001900000000001a004b0000000001000039000000010100403900000a2000a0009c000001140000213d0000000100100190000001140000c13d0000004000a0043f000000a00030008c000000e00000413d00000000010b043300000a9e0010009c000000e00000213d0000008001b00039000000000101043300000a9e0010009c000000e00000213d000000000505043300000a220050009c000012580000813d00000a9f0100004100000000001a04350000000001000414000000040020008c000000200400003900000eb70000613d002200000005001d00000a1a00a0009c00000a1a0300004100000000030a4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c700240000000a001d2863285e0000040f000000240a000029000000600310027000000a1a03300197000000200030008c00000020040000390000000004034019000000200640019000000000056a001900000ea60000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00000ea20000c13d0000001f0740019000000eb30000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0000000100200190000012730000613d00000022050000290000001f01400039000000600110018f0000000001a1001900000a200010009c000001140000213d002400000001001d000000400010043f000000200030008c000000e00000413d00000000010a0433000000ff0010008c000000e00000213d00000023020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c000017680000213d000000240120008c00000edd0000213d000000010100003900000ed60000613d00000024022000890000000a03000039000000010020019000000000043300a9000000010300603900000000011300a90000000102200272000000000304001900000ecf0000c13d000000000005004b00000f120000613d00000000025100a900000000035200d9000000000013004b00000eeb0000613d000017680000013d0000004d0010008c000017680000213d00000001020000390000000a03000039000000010010019000000000043300a9000000010300603900000000022300a90000000101100272000000000304001900000ee10000c13d000000000002004b00001f7c0000613d00000000022500d900000a270020009c0000125f0000213d000000240300002900000a240030009c000001140000213d0000004001300039000000400010043f0000000001230436002300000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b00000a1a01100197000000230200002900000000001204350000002404000029000000800100043d0000002102000029000000000021004b00001ed50000a13d0000002001000029000000a0011000390000000000410435000000800100043d000000000021004b00001ed50000a13d00000001022000390000001f0020006c00000dc30000413d000010ba0000013d0000000002000019000000240300002900000a240030009c00000ef00000a13d000001140000013d000000400100043d00000a4d02000041000000000021043500000004021000390000000000420435000006510000013d00000023010000290000000405100039000000120100002900100020001000920000001001200360000000000401043b0000000003000031001100000005001d00000000015300490000001f0110008a00000a220510019700000a2206400197000000000756013f000000000056004b000000000600001900000a2206004041000000000014004b000000000800001900000a220800804100000a220070009c000000000608c019000000000006004b000000e00000c13d0000001104400029000000000642034f000000000606043b000f00000006001d00000a200060009c000000e00000213d0000000f06000029000000060660021000000000066300490000002004400039000000000064004b000000000700001900000a220700204100000a220660019700000a2204400197000000000864013f000000000064004b000000000400001900000a220400404100000a220080009c000000000407c019000000000004004b000000e00000c13d0000001004000029000000200640008a000000000462034f000000000404043b00000a2207400197000000000857013f000000000057004b000000000700001900000a2207004041000000000014004b000000000900001900000a220900804100000a220080009c000000000709c019000000000007004b000000e00000c13d0000001107400029000000000472034f000000000404043b00000a200040009c000000e00000213d00000000084300490000002007700039000000000087004b000000000900001900000a220900204100000a220880019700000a2207700197000000000a87013f000000000087004b000000000700001900000a220700404100000a2200a0009c000000000709c019000000000007004b000000e00000c13d000000200660008a000000000662034f000000000606043b00000a2207600197000000000857013f000000000057004b000000000500001900000a2205004041000000000016004b000000000100001900000a220100804100000a220080009c000000000501c019000000000005004b000000e00000c13d0000001101600029000000000512034f000000000605043b00000a200060009c000000e00000213d0000000005630049000000200710003900000a220150019700000a2208700197000000000918013f000000000018004b000000000100001900000a2201004041000000000057004b000000000500001900000a220500204100000a220090009c000000000105c019000000000001004b000000e00000c13d0000001f0160003900000ace011001970000003f0110003900000ace05100197000000400100043d0000000005510019000000000015004b0000000008000039000000010800403900000a200050009c000001140000213d0000000100800190000001140000c13d000000400050043f00000000056104360000000008760019000000000038004b000000e00000213d000000000772034f00000ace086001980000001f0960018f000000000385001900000faf0000613d000000000a07034f000000000b05001900000000ac0a043c000000000bcb043600000000003b004b00000fab0000c13d000000000009004b00000fbc0000613d000000000787034f0000000308900210000000000903043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f0000000000730435000000000365001900000000000304350000002003000029000000000303043300000a1a03300197000000000043004b000015d10000813d000000400100043d0000002402100039000000000042043500000aad0200004100000000002104350000000402100039000000000032043500000a1a0010009c00000a1a01008041000000400110021000000a5a011001c70000286500010430000000000900001900000002010003670000002402100360000000000302043b00000000020000310000001e0420006a000000230440008a00000a220540019700000a2206300197000000000756013f000000000056004b000000000500001900000a2205004041000000000043004b000000000400001900000a220400804100000a220070009c000000000504c019000000000005004b000000e00000c13d0000002404300029000000000341034f000000000303043b00000a200030009c000000e00000213d00000006053002100000000005520049000000200440003900000a220650019700000a2207400197000000000867013f000000000067004b000000000600001900000a2206004041000000000054004b000000000500001900000a220500204100000a220080009c000000000605c019000000000006004b000000e00000c13d000000000039004b00001ed50000813d00000006039002100000000003340019000000000232004900000a230020009c000000e00000213d000000400020008c000000e00000413d000000400400043d00000a240040009c000001140000213d0000004002400039000000400020043f000000000231034f000000000202043b00000a1f0020009c000000e00000213d00000000052404360000002002300039000000000121034f000000000101043b00000a270010009c000000e00000213d002300000005001d0000000000150435000000400300043d00000a240030009c000001140000213d0000004002300039000000400020043f002000000003001d00000000021304360000001d01000029001f00000002001d0000000000120435000000000104043300000a1f01100197000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c70000801002000039002100000009001d002200000004001d2863285e0000040f000000220400002900000001002001900000002305000029000000e00000613d0000002002000029000000000202043300000a27022001970000001f030000290000000003030433000000e003300210000000000223019f000000000101043b000000000021041b00000000020404330000000001050433000000400300043d00000020043000390000001c05000029000000000054043500000a2701100197000000000013043500000a1a0030009c00000a1a030080410000004001300210000000000300041400000a1a0030009c00000a1a03008041000000c003300210000000000113019f00000a2a011001c700000a1f052001970000800d02000039000000020300003900000ab804000041286328590000040f00000021090000290000000100200190000000e00000613d00000001099000390000001b0090006c00000fd00000413d00000b410000013d0000001e05000029000000000623004900000a230060009c000000e00000213d000000400060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000000721034f000000000707043b00000a200070009c000000e00000213d00000000077604360000002008200039000000000881034f000000000808043b00000a1f0080009c000000e00000213d0000002005500039000000000087043500000000006504350000004002200039000000000042004b000010550000413d00000a6c0000013d0000000002000019000010770000013d00000024020000290000000102200039000000800100043d000000000012004b0000042c0000813d002400000002001d0000000501200210000000a001100039002200000001001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000000001004b000010720000c13d0000000b03000039000000000103041a00000a200010009c000001140000213d0000000102100039000000000023041b00000a300110009a0000002302000029000000000021041b000000000103041a002100000001001d000000000020043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002102000029000000000021041b000000800100043d000000240010006c00001ed50000a13d00000022010000290000000001010433000000000200041400000a1f0510019700000a1a0020009c00000a1a02008041000000c00120021000000a31011001c70000800d02000039000000020300003900000a3204000041286328590000040f0000000100200190000010720000c13d000000e00000013d000000400100043d000005b70000013d0000002301000029000000200010008c000000e00000413d000000220100002900000020021000390000000201000367000000000221034f000000000202043b00000a200020009c000000e00000213d00000021022000290000001f03200039000000240030006c000000e00000813d000000000321034f000000000403043b00000a200040009c000001140000213d00000005034002100000003f0330003900000a2103300197000000400500043d0000000003350019002300000005001d000000000053004b0000000005000039000000010500403900000a200030009c000001140000213d0000000100500190000001140000c13d000000400030043f00000023030000290000000003430436001e00000003001d000000200220003900000060034000c90000000003230019000000240030006c000000e00000213d000000000004004b00000a020000613d0000002304000029000000240520006900000a230050009c000000e00000213d000000600050008c000000e00000413d000000400500043d00000a1d0050009c000001140000213d0000006006500039000000400060043f000000000621034f000000000606043b00000a1f0060009c000000e00000213d00000000076504360000002006200039000000000861034f000000000808043b00000a270080009c000000e00000213d00000000008704350000002006600039000000000661034f000000000606043b00000a1a0060009c000000e00000213d00000020044000390000004007500039000000000067043500000000005404350000006002200039000000000032004b000010e70000413d00000023010000290000000001010433000000000001004b00000a020000613d002400000000001d000000240100002900000005011002100000001e01100029002200000001001d0000000001010433000000000101043300000a1f01100197000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a00000a3600100198000017040000613d00000023020000290000000002020433000000240020006c00001ed50000a13d00000ab60210019700000ab70020009c000017680000213d000000a003100270000000220100002900000000010104330000002002100039000000000202043300000a27022001970000001203300039000000ff0430018f000000240340008c000011470000213d0000000103000039000011400000613d00000024044000890000000a05000039000000010040019000000000065500a9000000010500603900000000033500a900000001044002720000000005060019000011390000c13d000000000002004b000011c70000613d00000000042300a900000000022400d9000000000032004b000011550000613d000017680000013d0000004d0030008c000017680000213d00000001040000390000000a05000039000000010030019000000000065500a9000000010500603900000000044500a9000000010330027200000000050600190000114b0000c13d000000000004004b00001f7c0000613d00000000044200d9002100000004001d00000a270040009c000017370000213d00000040021000390000000002020433002000000002001d000000000101043300000a1f01100197000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000200200002900000a1a02200197000000000101043b000000000101041a000000e001100270000000000012004b0000170e0000413d00000023010000290000000001010433000000240010006c00001ed50000a13d000000400100043d002000000001001d00000a240010009c000001140000213d000000220100002900000000010104330000004001100039000000000101043300000020030000290000004002300039000000400020043f0000002102000029000000000223043600000a1a01100197001f00000002001d000000000012043500000023010000290000000001010433000000240010006c00001ed50000a13d00000022010000290000000001010433000000000101043300000a1f01100197000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d0000002002000029000000000202043300000a27022001970000001f030000290000000003030433000000e003300210000000000223019f000000000101043b000000000021041b00000023010000290000000001010433000000240010006c00001ed50000a13d0000002201000029000000000101043300000000020104330000004001100039000000000101043300000a1a01100197000000400300043d000000200430003900000000001404350000002101000029000000000013043500000a1a0030009c00000a1a030080410000004001300210000000000300041400000a1a0030009c00000a1a03008041000000c003300210000000000113019f00000a1f0520019700000a2a011001c70000800d02000039000000020300003900000ab804000041286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d00000023010000290000000001010433000000240010006b0000110d0000413d00000a020000013d002100000000001d000011580000013d0000000005000019000011ce0000013d0000000105500039000000000015004b00000a740000813d0000000502500210000000a00220003900000000030204330000002002300039001f00000002001d00000000020204330000000004020433000000000004004b000011cb0000613d001c00000005001d000000000103043300230a200010019b0000000003000019002000000003001d0000000501300210000000000112001900000020011000390000000001010433000000002101043400240a1f0010019b0000000001020433002100000001001d0000008001100039002200000001001d000000000101043300000a1a011001970000001f0010008c000012910000a13d0000002301000029000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f00000001002001900000002403000029000000e00000613d000000000101043b000000000030043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f00000024060000290000000100200190000000e00000613d000000000101043b000000000201041a00000a5102200197000000210a0000290000002003a000390000000004030433000000200440021000000a5204400197000000000242019f0000004004a000390000000005040433000000400550021000000a5305500197000000000252019f0000006005a000390000000007050433000000500770021000000a5407700197000000000272019f00000022090000290000000007090433000000700770021000000a5507700197000000000272019f000000a008a000390000000007080433000000000007004b00000a56070000410000000007006019000000000272019f00000000070a043300000a1a07700197000000000272019f000000000021041b000000400100043d0000000002710436000000000303043300000a1a03300197000000000032043500000000020404330000ffff0220018f00000040031000390000000000230435000000000205043300000a1a0220019700000060031000390000000000230435000000000209043300000a1a02200197000000800310003900000000002304350000000002080433000000000002004b0000000002000039000000010200c039000000a003100039000000000023043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a57011001c70000800d02000039000000030300003900000a58040000410000002305000029286328590000040f0000000100200190000000e00000613d000000200300002900000001033000390000001f0100002900000000020104330000000001020433000000000013004b000011db0000413d000000800100043d0000001c05000029000011cb0000013d00000aa00100004100000000001a043500000a1a00a0009c00000a1a0a0080410000004001a0021000000a5e011001c7000028650001043000000aa0010000410000002402000029000000000012043500000a1a0020009c00000a1a02008041000000400120021000000a5e011001c700002865000104300000001f0530018f00000a1c06300198000000400200043d00000000046200190000127e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000126e0000c13d0000127e0000013d0000001f0530018f00000a1c06300198000000400200043d00000000046200190000127e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000127a0000c13d000000000005004b0000128b0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000a1a0020009c00000a1a020080410000004002200210000000000112019f0000286500010430000000400200043d0000002403200039000000000013043500000a5901000041000000000012043500000004012000390000002403000029000000000031043500000a1a0020009c00000a1a02008041000000400120021000000a5a011001c700002865000104300000000002000019000012a60000013d0000002302000029000000010220003900000021010000290000000001010433000000000012004b0000053f0000813d002300000002001d00000005012002100000002001100029000000000101043300000a1f01100197002400000001001d000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a002200000001001d000000000001004b000012a00000613d0000000201000039000000000201041a000000000002004b000017680000613d0000002203000029000000010130008a000000000032004b000012df0000613d000000000012004b00001ed50000a13d00000a2b0130009a00000a2b0220009a000000000202041a000000000021041b000000000020043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002202000029000000000021041b0000000201000039000000000301041a000000000003004b00001edb0000613d000000010130008a00000a2b0230009a000000000002041b0000000202000039000000000012041b0000002401000029000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b000000400100043d0000002402000029000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000010300003900000a2d04000041286328590000040f0000000100200190000012a00000c13d000000e00000013d0000001a05000029000000000621004900000a230060009c000000e00000213d000000600060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000009702043400000a1f0070009c000000e00000213d0000000007760436000000400800043d00000a240080009c000001140000213d000000400a8000390000004000a0043f000000000909043300000a1f0090009c000000e00000213d0000000009980436000000400a200039000000000a0a0433000000ff00a0008c000000e00000213d0000000000a90435000000000087043500000000056504360000006002200039000000000042004b000013060000413d000001b50000013d0000002401000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000400200043d00000a240020009c000001140000213d0000000101100039000000000101041a0000004003200039000000400030043f000000200320003900000000000304350000000000020435000000220000006b000013b30000c13d000000400200043d001500000002001d00000a240020009c000001140000213d00000a1a0110019700000015030000290000004002300039000000400020043f0000000000130435001300000000001d000000000100001900000015020000290000002002200039001400000002001d00000000001204350000002401000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000001c020000290000003f0220003900000a2102200197000000400300043d0000000002230019001900000003001d000000000032004b0000000003000039000000010300403900000a200020009c000001140000213d0000000100300190000001140000c13d0000000101100039000000000101041a000000400020043f0000001d0200002900000019030000290000000003230436001800000003001d000000000002004b000014810000c13d000000400400043d000000200240003900000aa6010000410000000000120435000000150100002900000000010104330000002403400039000000000013043500000014010000290000000001010433000000000001004b0000000001000039000000010100c039000000440340003900000000001304350000004401000039000000000014043500000ab10040009c000001140000213d0000008001400039000000400010043f000000c003400039000000800500003900000000005304350000001303000029000000010330018f000000a0054000390000000000350435000000160300002900000000003104350000010003400039000000000504043300000000005304350000012003400039000000000005004b000013a10000613d000000000600001900000000073600190000000008260019000000000808043300000000008704350000002006600039000000000056004b0000139a0000413d000000000235001900000000000204350000001f0550003900000ace0550019700000000033500190000000005130049000000e0044000390000000000540435000000190400002900000000040404330000000000430435000000050540021000000000055300190000002007500039000000000004004b000016a40000c13d0000000002170049000005d10000013d00000022020000290000000301200210000000200110008900000a380310021f000000040020008c00000a380300804100000002050003670000001f01500360000000000401043b000000040620008c000000e00000413d00000022010000290000001b0110003900000ace011001970000003f0110003900000ace02100197000000400100043d0000000002210019000000000012004b0000000007000039000000010700403900000a200020009c000001140000213d0000000100700190000001140000c13d000000400020043f00000000026104360000001e09000029000000000090007c000000e00000213d0000001f070000290000000407700039000000000775034f00000ace086001980000001f0660018f0000000005820019000013de0000613d000000000907034f000000000a020019000000009b09043c000000000aba043600000000005a004b000013da0000c13d000000000334016f000000000006004b000013ec0000613d000000000487034f0000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500000022041000290000001c04400039000000000004043500000aa60030009c000015d90000613d00000aa70030009c00001c410000c13d000000000101043300000a230010009c000000e00000213d000000200010008c000000e00000413d000000400100043d001500000001001d00000a240010009c000001140000213d0000000001020433000013470000013d001d00c00030003d000014050000013d00000020044000390000000000a9043500000000008404350000001e0050006c000001de0000813d000000005205043400000a200020009c000000e00000213d0000001f022000290000001d0620006900000a230060009c000000e00000213d000000400060008c000000e00000413d000000400800043d00000a240080009c000001140000213d0000004006800039000000400060043f0000002006200039000000000606043300000a200060009c000000e00000213d00000000096804360000004006200039000000000606043300000a200060009c000000e00000213d00000000022600190000003f06200039000000000016004b000000000700001900000a220700804100000a2206600197000000000006004b000000000a00001900000a220a00404100000a220060009c000000000a07c01900000000000a004b000000e00000c13d0000002006200039000000000c06043300000a2000c0009c000001140000213d0000000506c002100000003f0660003900000a2106600197000000400a00043d00000000066a00190000000000a6004b0000000007000039000000010700403900000a200060009c000001140000213d0000000100700190000001140000c13d000000400060043f0000000000ca0435000000400b200039000000e002c000c9000000000cb2001900000000001c004b000000e00000213d0000000000cb004b000014000000813d000000000d0a00190000000002b1004900000a230020009c000000e00000213d000000e00020008c000000e00000413d000000400e00043d00000a2400e0009c000001140000213d0000004002e00039000000400020043f00000000620b043400000a1f0020009c000000e00000213d000000000f2e0436000000400200043d00000a250020009c000001140000213d000000c007200039000000400070043f000000000606043300000a1a0060009c000000e00000213d00000000066204360000004007b00039000000000707043300000a1a0070009c000000e00000213d00000000007604350000006006b0003900000000060604330000ffff0060008c000000e00000213d000000400720003900000000006704350000008006b00039000000000606043300000a1a0060009c000000e00000213d00000060072000390000000000670435000000a006b00039000000000606043300000a1a0060009c000000e00000213d00000080072000390000000000670435000000c006b000390000000006060433000000000006004b0000000007000039000000010700c039000000000076004b000000e00000c13d000000200dd00039000000a007200039000000000067043500000000002f04350000000000ed0435000000e00bb000390000000000cb004b000014430000413d000014000000013d0000006002000039000000000300001900000018050000290000001c06000029000000000453001900000000002404350000002003300039000000000063004b000014850000413d00170a3a0010019b00000000040000190000001b0040006c00001ed50000813d002200000004001d00000006014002100000001a011000290000000202000367000000000112034f000000000101043b001f00000001001d00000a1f0010009c000000e00000213d00000022010000290000000501100210001e00000001001d001c00200010002d0000001c01200360000000000101043b0000000003000031000000200430006a0000009f0440008a00000a220540019700000a2206100197000000000756013f000000000056004b000000000500001900000a2205004041000000000041004b000000000600001900000a220600804100000a220070009c000000000506c019000000000005004b000000e00000c13d00000020051000290000004006500039000000000662034f000000000606043b00000000075300490000001f0770008a00000a220870019700000a2209600197000000000a89013f000000000089004b000000000800001900000a2208004041000000000076004b000000000700001900000a220700804100000a2200a0009c000000000807c019000000000008004b000000e00000c13d0000000005560019000000000652034f000000000606043b002300000006001d00000a200060009c000000e00000213d000000230630006a0000002005500039000000000065004b000000000700001900000a220700204100000a220660019700000a2205500197000000000865013f000000000065004b000000000500001900000a220500404100000a220080009c000000000507c019000000000005004b000000e00000c13d0000002305000029000000200050008c000014fe0000a13d0000002401000029000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000001f02000029000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000700110027000000a1a01100197000000230010006b0000173a0000213d0000000003000031000000210130006a00000002020003670000001c05200360000000c30410008a000000000105043b000000000041004b000000000500001900000a220500804100000a220440019700000a2206100197000000000746013f000000000046004b000000000400001900000a220400404100000a220070009c000000000405c019000000000004004b000000e00000c13d00000020011000290000002004100039000000000442034f000000000404043b00000000051300490000001f0550008a00000a220650019700000a2207400197000000000867013f000000000067004b000000000600001900000a2206004041000000000054004b000000000500001900000a220500804100000a220080009c000000000605c019000000000006004b000000e00000c13d0000000001140019000000000412034f000000000504043b00000a200050009c000000e00000213d0000000004530049000000200610003900000a220140019700000a2207600197000000000817013f000000000017004b000000000100001900000a2201004041000000000046004b000000000400001900000a220400204100000a220080009c000000000104c019000000000001004b000000e00000c13d0000001f0150003900000ace011001970000003f0110003900000ace04100197000000400100043d0000000004410019000000000014004b0000000007000039000000010700403900000a200040009c000001140000213d0000000100700190000001140000c13d000000400040043f00000000045104360000000007650019000000000037004b000000e00000213d000000000362034f00000ace0650019800000000026400190000154e0000613d000000000703034f0000000008040019000000007907043c0000000008980436000000000028004b0000154a0000c13d0000001f075001900000155b0000613d000000000363034f0000000306700210000000000702043300000000076701cf000000000767022f000000000303043b0000010006600089000000000363022f00000000036301cf000000000373019f000000000032043500000000025400190000000000020435000000170200002900000ac00020009c000015670000c13d0000000002010433000000200020008c000016c30000c13d0000000002040433000004000220008a00000a940020009c000017400000813d0000002401000029000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000001f02000029000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d00000a250020009c000001140000213d000000000101043b000000c003200039000000400030043f000000000101041a000000700310027000000a1a033001970000008004200039000000000034043500000040031002700000ffff0330018f00000040042000390000000000340435000000200310027000000a1a033001970000002004200039000000000034043500000a1a03100197000000000032043500000a98001001980000000003000039000000010300c039000000a004200039002300000004001d00000000003404350000006002200039000000500110027000000a1a01100197001f00000002001d00000000001204350000002401000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b00000023020000290000000002020433000000000002004b000015b60000613d0000001f010000290000000001010433000015b80000013d000000000101041a000000d80110027000000a1a02100197000000400100043d000000200310003900000000002304350000002002000039000000000021043500000a240010009c000001140000213d0000004002100039000000400020043f000000190300002900000000020304330000002204000029000000000042004b00001ed50000a13d0000001e05000029000000180250002900000000001204350000000001030433000000000041004b00001ed50000a13d00000001044000390000001d0040006c0000148c0000413d000013750000013d0000001f0300002900000000030304330000ffff0330018f0000000f0030006c000015f00000813d000000400100043d00000aac0200004100001b850000013d000000000301043300000a230030009c000000e00000213d000000400030008c000000e00000413d000000400300043d001500000003001d00000a240030009c000001140000213d00000015040000290000004003400039000000400030043f0000000002020433000000000024043500000040011000390000000001010433000000000001004b0000000002000039000000010200c039001300000002001d000000000021004b000000e00000c13d0000134d0000013d0000001e03000029000000000303043300000a380330019700000a390030009c000015fc0000c13d0000000003010433000000200030008c000016c30000c13d0000000003050433000004000330008a00000a940030009c000016ef0000813d0000001201200360000000000101043b00000a1f0010009c000000e00000213d286326190000040f0000001d020000290000000002020433002000000002001d0000002402000029000000000020043f0000000502000039000000200020043f000400000001001d000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d001f00000002001d00000a240020009c000001140000213d0000002002000029001e0a1a0020019c000000000101043b0000001f030000290000004002300039000000400020043f000000000101041a0000002002300039000000e004100270002000000004001d000000000042043500000a2701100197000100000001001d00000000001304350000175a0000c13d0000000f0000006b0000185c0000c13d0000001b01000029000000000101043300000a1a0110019700200a99001000d5001b00000000001d001d00000000001d0000000002000031000000110320006a0000001201000029000000400610008a0000000201000367000000000461034f0000001f0530008a000000000404043b0000001c0300002900000000030304330000ffff03300190002400000000001d0000176e0000c13d000000000054004b000000000300001900000a220300804100000a220750019700000a2208400197000000000978013f000000000078004b000000000800001900000a220800404100000a220090009c000000000803c019000000000008004b000000e00000c13d000000150300002900000000030304330000001104400029000000000841034f000000000808043b00000a200080009c000000e00000213d00000000098200490000002004400039000000000094004b000000000a00001900000a220a00204100000a220990019700000a2204400197000000000b94013f000000000094004b000000000400001900000a220400404100000a2200b0009c00000000040ac019000000000004004b000000e00000c13d000000160400002900000000040404330000ffff0940018f00000000048900a9000000000008004b000016680000613d00000aa50880019700000aa50a40019700000000088a00d9000000000089004b000017680000c13d0000006006600039000000000661034f000000000606043b00000a2208600197000000000978013f000000000078004b000000000700001900000a2207004041000000000056004b000000000500001900000a220500804100000a220090009c000000000705c019000000000007004b000000e00000c13d0000001106600029000000000561034f000000000505043b00000a200050009c000000e00000213d0000000007520049000000200860003900000a220670019700000a2209800197000000000a69013f000000000069004b000000000600001900000a2206004041000000000078004b000000000700001900000a220700204100000a2200a0009c000000000607c019000000000006004b000000e00000c13d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000200760003900000000000704350000000000060435000000400700043d00000a240070009c000001140000213d000000170600002900000000060604330000004009700039000000400090043f000000200970003900000000000904350000000000070435000000000005004b00001bf80000c13d000000400500043d00000a240050009c000001140000213d00000a1a0260019700001c3c0000013d00000000050000190000000006030019000000190d000029000016b00000013d000000000987001900000000000904350000001f0880003900000ace0880019700000000078700190000000105500039000000000045004b000013b10000813d0000000008370049000000200880008a00000020066000390000000000860435000000200dd0003900000000080d043300000000980804340000000007870436000000000008004b000016a80000613d000000000a000019000000000b7a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000008a004b000016bb0000413d000016a80000013d000000400400043d002400000004001d00000a9302000041000000000024043500000004024000390000002003000039000000000032043500000024024000392863201b0000040f0000002402000029000000000121004900000a1a0010009c00000a1a0100804100000a1a0020009c00000a1a0200804100000060011002100000004002200210000000000121019f00002865000104300000001805000029000000000621004900000a230060009c000000e00000213d000000400060008c000000e00000413d000000400600043d00000a240060009c000001140000213d0000004007600039000000400070043f000000008702043400000a1f0070009c000000e00000213d0000000007760436000000000808043300000a200080009c000000e00000213d0000002005500039000000000087043500000000006504350000004002200039000000000042004b000016d70000413d000002090000013d000000400200043d00000a930300004100000000003204350000000403200039000000200400003900000000004304350000000001010433000000240320003900000000001304350000004403200039000000000001004b000017540000613d000000000400001900000000063400190000000007540019000000000707043300000000007604350000002004400039000000000014004b000016fc0000413d000017540000013d00000023010000290000002402000029286324160000040f00000000010104330000000001010433000000400200043d00000aa103000041000000000032043500000a1f01100197000003760000013d00000023010000290000002402000029002400000002001d286324160000040f00000000010104330000000001010433002200000001001d00000023010000290000002402000029286324160000040f000000000101043300000040011000390000000001010433002100000001001d00000023010000290000002402000029286324160000040f0000000001010433000000000101043300000a1f01100197286323e40000040f000000210200002900000a1a02200197000000000101041a000000400300043d00000024043000390000000000240435000000e0011002700000004402300039000000000012043500000ab9010000410000000000130435000000220100002900000a1f011001970000000402300039000000000012043500000a1a0030009c00000a1a03008041000000400130021000000a61011001c70000286500010430000000400100043d00000aa00200004100001b850000013d000000400100043d00000ac102000041000000000021043500000004021000390000001f03000029000006500000013d000000400200043d00000a930300004100000000003204350000000403200039000000200500003900000000005304350000000001010433000000240320003900000000001304350000004403200039000000000001004b000017540000613d000000000500001900000000063500190000000007450019000000000707043300000000007604350000002005500039000000000015004b0000174d0000413d0000001f0410003900000ace04400197000000000131001900000000000104350000004401400039000006fc0000013d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b000000200110006c000017c20000813d00000abb01000041000000000010043f0000001101000039000000040010043f00000a4e010000410000286500010430000000000054004b000000000700001900000a220700804100000a220850019700000a2209400197000000000a89013f000000000089004b000000000800001900000a220800404100000a2200a0009c000000000807c019000000000008004b000000e00000c13d0000001108400029000000000781034f000000000707043b00000a200070009c000000e00000213d00000000097200490000002008800039000000000098004b000000000a00001900000a220a00204100000a220990019700000a2208800197000000000b98013f000000000098004b000000000800001900000a220800404100000a2200b0009c00000000080ac019000000000008004b000000e00000c13d0000000f0900002900000120089000c9000000000009004b000017960000613d0000000f098000fa000001200090008c000017680000c13d000001c007700039000000000087001a000017680000413d00000000078700190000001d0070002a000017680000413d0000001d0870002a000000130700002900000000070704330000ffff0970018f00000000078900a9000017a50000613d00000000088700d9000000000098004b000017680000c13d0000001408000029000000000808043300000a1a08800197000000000078001a000017680000413d000000000878001a002400000000001d0000163a0000613d0000000107000029000000700970027000000000079800a900000000088700d9000000000098004b000017680000c13d000000000007004b002400000000001d0000163a0000613d00000000083700a900000000077800d9000000000037004b000017680000c13d000000000008004b002400000000001d0000163a0000613d00240aa4008000d500000024038000f900000aa40030009c0000163a0000613d000017680000013d0000001e0010006c000018570000a13d000000400200043d0000004403200039000000000013043500000024012000390000001e03000029000000000031043500000a9701000041000000000012043500000004012000390000002403000029000000000031043500000a1a0020009c00000a1a02008041000000400120021000000a61011001c700002865000104300000001604000029000000000521004900000a230050009c000000e00000213d000002400050008c000000e00000413d000000400500043d00000a240050009c000001140000213d0000004006500039000000400060043f000000008602043400000a200060009c000000e00000213d0000000006650436000000400700043d00000a260070009c000001140000213d0000022009700039000000400090043f0000000008080433000000000008004b0000000009000039000000010900c039000000000098004b000000e00000c13d0000000008870436000000400920003900000000090904330000ffff0090008c000000e00000213d00000000009804350000006008200039000000000808043300000a1a0080009c000000e00000213d000000400970003900000000008904350000008008200039000000000808043300000a1a0080009c000000e00000213d00000060097000390000000000890435000000a008200039000000000808043300000a1a0080009c000000e00000213d00000080097000390000000000890435000000c00820003900000000080804330000ffff0080008c000000e00000213d000000a0097000390000000000890435000000e008200039000000000808043300000a1a0080009c000000e00000213d000000c0097000390000000000890435000001000820003900000000080804330000ffff0080008c000000e00000213d000000e0097000390000000000890435000001200820003900000000080804330000ffff0080008c000000e00000213d00000100097000390000000000890435000001400820003900000000080804330000ffff0080008c000000e00000213d000001200970003900000000008904350000016008200039000000000808043300000a1a0080009c000000e00000213d000001400970003900000000008904350000018008200039000000000808043300000a1a0080009c000000e00000213d00000160097000390000000000890435000001a008200039000000000808043300000a200080009c000000e00000213d00000180097000390000000000890435000001c008200039000000000808043300000a1a0080009c000000e00000213d000001a0097000390000000000890435000001e008200039000000000808043300000a1a0080009c000000e00000213d000001c009700039000000000089043500000200082000390000000008080433000000000008004b0000000009000039000000010900c039000000000098004b000000e00000c13d000001e00970003900000000008904350000022008200039000000000808043300000a2700800198000000e00000c13d00000200097000390000000000890435000000000076043500000000045404360000024002200039000000000032004b000017d50000413d000002340000013d0000001f01000029000000000101043300010a270010019b0000000f0000006b000016270000613d00000002010003670000001202100360000000000202043b000600000002001d00000a1f0020009c000000e00000213d0000001002100360000000000302043b0000000002000031000000230420006a000000230440008a00000a220540019700000a2206300197000000000756013f000000000056004b000000000500001900000a2205004041000000000043004b000000000400001900000a220400804100000a220070009c000000000504c019000000000005004b000000e00000c13d0000001103300029000000000131034f000000000101043b000a00000001001d00000a200010009c000000e00000213d0000000a0100002900000006011002100000000001120049000000200530003900000a220210019700000a2203500197000000000423013f000000000023004b000000000200001900000a2202004041000900000005001d000000000015004b000000000100001900000a220100204100000a220040009c000000000201c019000000000002004b000000e00000c13d0000000a0000006b001b00000000001d001d00000000001d002000000000001d0000162d0000613d001f00000000001d001d00000000001d001b00000000001d002000000000001d0000189b0000013d0000001f020000290000000102200039001f00000002001d0000000a0020006c0000162d0000813d0000001f0100002900000006011002100000000901100029000000000210007900000a230020009c000000e00000213d000000400020008c000000e00000413d000000400200043d002300000002001d00000a240020009c000001140000213d00000023020000290000004002200039000000400020043f0000000202000367000000000312034f000000000303043b00000a1f0030009c000000e00000213d000000230400002900000000033404360000002001100039000000000112034f000000000101043b000e00000003001d00000000001304350000002401000029000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002302000029000000000202043300000a1f02200197000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d001e00000002001d00000a250020009c000001140000213d000000000101043b0000001e04000029000000c002400039000000400020043f000000000201041a000000a00140003900000a98002001980000000003000039000000010300c039000000000031043500000a1a012001970000000003140436000000700120027000000a1a011001970000008005400039001000000005001d0000000000150435000000200120027000000a1a01100197000b00000003001d0000000000130435000000500120027000000a1a011001970000006003400039000d00000003001d0000000000130435000000400440003900000040022002700000ffff0320018f000c00000004001d0000000000340435000019040000613d000000000003004b0000191a0000613d0000002302000029000000000202043300000a1f04200197000800000004001d000000060040006c0000191c0000c13d000000040000006b000019940000613d0000000e010000290000000001010433000000040300002900001a660000013d000000210100002900000000010104330000ffff0110018f00000a99011000d1000000200010002a000017680000413d0000001b0200002900000a1a022001970000002203000029000000000303043300000a1a033001970000000002230019001b00000002001d00000a1a0020009c000017680000213d0000001d0200002900000a1a0220019700000a9a0020009c000017680000213d002000200010002d001d00200020003d000018960000013d000000000200001900001a720000013d000000400100043d00000a240010009c000001140000213d0000004002100039000000400020043f0000002002100039000000000002043500000000000104350000000801000029000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d002300000002001d00000a240020009c000001140000213d000000000101043b00000023030000290000004002300039000000400020043f000000000101041a00000a27021001970000000002230436000000e001100270000700000002001d000500000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b0005000500100074000017680000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b00000a1a01100197000000050010006b00001a5c0000413d0000000801000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000400200043d00000a240020009c000001140000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f000300000003001d000000000013043500001a5c0000613d000000400100043d00000a240010009c000001140000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400300043d00000a9d01000041002300000003001d0000000001130436000200000001001d000000000100041400000a1f02200197000500000002001d000000040020008c000019960000c13d0000000103000031000000a00030008c000000a0040000390000000004034019000019bf0000013d000000000200001900001a6e0000013d000000230200002900000a1a0020009c00000a1a02008041000000400220021000000a1a0010009c00000a1a01008041000000c001100210000000000121019f00000a5e011001c700000005020000292863285e0000040f000000600310027000000a1a03300197000000a00030008c000000a0040000390000000004034019000000e0064001900000002305600029000019af0000613d000000000701034f0000002308000029000000007907043c0000000008980436000000000058004b000019ab0000c13d0000001f07400190000019bc0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f000000010020019000001c440000613d0000001f01400039000001e00110018f0000002302100029000000000012004b00000000010000390000000101004039000700000002001d00000a200020009c000001140000213d0000000100100190000001140000c13d0000000701000029000000400010043f000000a00030008c000000e00000413d0000002301000029000000000101043300000a9e0010009c000000e00000213d00000023010000290000008001100039000000000101043300000a9e0010009c000000e00000213d00000002010000290000000001010433000200000001001d00000a220010009c00001c500000813d00000a9f010000410000000702000029000000000012043500000000010004140000000502000029000000040020008c000000200400003900001a0d0000613d000000070200002900000a1a0020009c00000a1a02008041000000400220021000000a1a0010009c00000a1a01008041000000c001100210000000000121019f00000a5e011001c700000005020000292863285e0000040f000000600310027000000a1a03300197000000200030008c0000002004000039000000000403401900000020064001900000000705600029000019fd0000613d000000000701034f0000000708000029000000007907043c0000000008980436000000000058004b000019f90000c13d0000001f0740019000001a0a0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f000000010020019000001c530000613d0000001f01400039000000600110018f0000000701100029002300000001001d00000a200010009c000001140000213d0000002301000029000000400010043f000000200030008c000000e00000413d00000007010000290000000001010433000000ff0010008c000000e00000213d00000003020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c000017680000213d000000240120008c00001a350000213d000000010100003900001a2e0000613d00000024022000890000000a03000039000000010020019000000000043300a9000000010300603900000000011300a90000000102200272000000000304001900001a270000c13d000000020000006b00001a960000613d00000002021000b900000002032000fa000000000013004b00001a430000613d000017680000013d0000004d0010008c000017680000213d00000001020000390000000a03000039000000010010019000000000043300a9000000010300603900000000022300a90000000101100272000000000304001900001a390000c13d000000000002004b00001f7c0000613d00000002022000f900000a270020009c00001c5f0000213d000000230100002900000a240010009c000001140000213d00000023030000290000004001300039000000400010043f0000000001230436000700000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f000000010020019000001a9b0000613d000000000101043b00000a1a01100197000000070200002900000000001204350000000701000029000000000101043300000a1a0010019800001bf20000613d0000002301000029000000000101043300000a270310019800001bf20000613d0000000e01000029000000000101043300000000023100a900000000033200d9000000000013004b000017680000c13d0000000d0100002900000000010104330000000c0300002900000000030304330000ffff0330018f00000aa20220012a00000000023200a900000aa30220012a0000001b0300002900000a1a0330019700000a1a011001970000000001310019001b00000001001d00000a1a0010009c000017680000213d0000001d0100002900000a1a011001970000001003000029000000000303043300000a1a033001970000000001130019001d00000001001d00000a1a0010009c000017680000213d0000001e01000029000000000101043300000a1a0110019700000a99011000d1000000000012004b00001a8e0000413d0000000b01000029000000000101043300000a1a0110019700000a99011000d1000000000012004b00001a920000a13d000000200010002a000017680000413d002000200010002d000018960000013d000000200020002a000017680000413d002000200020002d000018960000013d0000000002000019000000230100002900000a240010009c00001a480000a13d000001140000013d000000000001042f000000000200041a00000a2802200197000000000112019f000000000010041b0000001d0100002900000a290010009c000001140000213d0000001d010000290000002002100039001900000002001d000000400020043f0000000000010435000000400100043d001500000001001d00000a240010009c000001140000213d00000015030000290000004001300039000000400010043f00000020013000390000001d020000290000000000210435000000210100002900000000001304350000000001020433000000000001004b00001aca0000c13d00000021010000290000000001010433000000000001004b00001b350000c13d0000002301000029000000000101043300000a1f0110019800001ac70000613d0000002402000029000000000202043300000a1e0020019800001ac70000613d0000002202000029000000000202043300000a1a0020019800001b8f0000c13d000000400100043d00000a5d0200004100001b850000013d001f00000000001d00001ad20000013d0000001f02000029001f00010020003d0000001d0100002900000000010104330000001f0010006b00001b8b0000813d0000001f0100002900000005011002100000001901100029000000000101043300000a1f01100197001e00000001001d000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a002100000001001d000000000001004b00001acc0000613d0000000201000039000000000201041a000000000002004b000017680000613d0000002103000029000000010130008a000000000032004b00001b0e0000613d000000000012004b00001ed50000a13d000000210100002900000a2b0110009a00000a2b0220009a000000000202041a000000000021041b000000000020043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002102000029000000000021041b0000000201000039000000000101041a002100000001001d000000000001004b00001edb0000613d0000002101000029000000010110008a000000210200002900000a2b0220009a000000000002041b0000000202000039000000000012041b0000001e01000029000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b000000400100043d0000001e02000029000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000010300003900000a2d04000041286328590000040f000000010020019000001acc0000c13d000000e00000013d0000002101000029001d00200010003d001e00000000001d0000001e0100002900000005011002100000001d011000290000000001010433001f0a1f0010019c00001b830000613d0000001f01000029000000000010043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000000001004b00001b6a0000c13d0000000201000039000000000101041a00000a200010009c000001140000213d00000001021000390000000203000039000000000023041b00000a2e0110009a0000001f02000029000000000021041b000000000103041a001900000001001d000000000020043f0000000301000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000001902000029000000000021041b000000400100043d0000001f02000029000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000010300003900000a2f04000041286328590000040f0000000100200190000000e00000613d0000001e02000029001e00010020003d000000210100002900000000010104330000001e0010006b00001b380000413d00001abb0000013d000000400100043d00000ab202000041000000000021043500000a1a0010009c00000a1a01008041000000400110021000000a5e011001c7000028650001043000000015010000290000000001010433002100000001001d00001ab70000013d000000a00010043f0000002401000029000000000101043300000a1e01100197000000800010043f0000002201000029000000000101043300000a1a01100197000000c00010043f000000400100043d001f00000001001d00000a290010009c000001140000213d0000001f010000290000002002100039001e00000002001d000000400020043f000000000001043500000020010000290000000001010433000000000001004b00001c660000613d002400000000001d00001bad0000013d0000002402000029002400010020003d00000020010000290000000001010433000000240010006b00001c620000813d000000240100002900000005011002100000001c01100029002200000001001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a000000000001004b00001ba70000c13d0000000b01000039000000000101041a00000a200010009c000001140000213d00000001021000390000000b03000039000000000023041b00000a300110009a0000002302000029000000000021041b000000000103041a002100000001001d000000000020043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002102000029000000000021041b00000020010000290000000001010433000000240010006c00001ed50000a13d00000022010000290000000001010433000000000200041400000a1f0510019700000a1a0020009c00000a1a02008041000000c00120021000000a31011001c70000800d02000039000000020300003900000a3204000041286328590000040f000000010020019000001ba70000c13d000000e00000013d000000400100043d00000aa102000041000000000021043500000004021000390000000803000029000006500000013d000000000681034f0000000307500210000000200770008900000a380970021f000000040b50008c00000a3809008041000000000a06043b000000e00000413d0000001b0650003900000ace066001970000003f0660003900000ace07600197000000400600043d0000000007760019000000000067004b000000000c000039000000010c00403900000a200070009c000001140000213d0000000100c00190000001140000c13d000000400070043f0000000007b60436000000000c85001900000000002c004b000000e00000213d0000000402800039000000000821034f00000ace0cb001980000001f0bb0018f0000000002c7001900001c1e0000613d000000000d08034f000000000e07001900000000df0d043c000000000efe043600000000002e004b00001c1a0000c13d00000000099a016f00000000000b004b00001c2c0000613d0000000008c8034f000000030ab00210000000000b020433000000000bab01cf000000000bab022f000000000808043b000001000aa000890000000008a8022f0000000008a801cf0000000008b8019f000000000082043500000000026500190000001c02200039000000000002043500000aa60090009c00001e4c0000613d00000aa70090009c00001c410000c13d000000000206043300000a230020009c000000e00000213d000000200020008c000000e00000413d000000400500043d00000a240050009c000001140000213d00000000020704330000004006500039000000400060043f0000000000250435000000000600001900001e5f0000013d000000400100043d00000abf0200004100001b850000013d0000001f0530018f00000a1c06300198000000400200043d00000000046200190000127e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c4b0000c13d0000127e0000013d00000aa0010000410000000702000029000012610000013d0000001f0530018f00000a1c06300198000000400200043d00000000046200190000127e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c5a0000c13d0000127e0000013d00000aa0010000410000002302000029000012610000013d0000001f010000290000000001010433000000000001004b00001e690000c13d0000001b010000290000000001010433000000000001004b00001ca90000613d002400000000001d000000240100002900000005011002100000001a01100029000000000101043300000020021000390000000002020433002200000002001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000201041a00000a3502200197000000220500002900000020035000390000000004030433000000a00440021000000a3604400197000000000242019f000000000405043300000a1f04400197000000000242019f000000000021041b000000400100043d00000000024104360000000003030433000000ff0330018f000000000032043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2a011001c70000800d02000039000000020300003900000a37040000410000002305000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d0000001b010000290000000001010433000000240010006b00001c6b0000413d00000017010000290000000001010433000000000001004b00001d710000613d002200000000001d0000002201000029000000050110021000000016011000290000000001010433000000001201043400230a200020019c00001ee10000613d0000000001010433002400000001001d0000016001100039002000000001001d000000000101043300000a1a0110019800001ee10000613d00000024020000290000020002200039002100000002001d000000000202043300000a380220019700000a390020009c00001ee10000c13d00000024020000290000006002200039001f00000002001d000000000202043300000a1a02200197000000000021004b00001ee10000213d0000002301000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000000101100039000000000101041a001e00000001001d000000400100043d001d00000001001d000000240200002928631f850000040f0000001d02000029000000000121004900000a1a0020009c00000a1a0200804100000a1a0010009c00000a1a0100804100000040022002100000006001100210000000000121019f0000001e0200002900000a3a0020019800001cf50000613d000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a31011001c70000800d02000039000000020300003900000a3b0400004100001cfe0000013d000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a31011001c70000800d02000039000000020300003900000a3c040000410000002305000029286328590000040f0000000100200190000000e00000613d0000002301000029000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d00000024040000290000000032040434000000000002004b000000000101043b000000000201041a00000a3d02200197000000010220c1bf0000000003030433000000080330021000000a3e03300197000000000232019f00000040034000390000000003030433000000180330021000000a3f03300197000000000232019f0000001f030000290000000003030433000000380330021000000a4003300197000000000232019f00000080034000390000000003030433000000580330021000000a4103300197000000000232019f000000a0034000390000000003030433000000780330021000000a4203300197000000000232019f000000c0034000390000000003030433000000880330021000000a4303300197000000000232019f000000e0034000390000000003030433000000a80330021000000a4403300197000000000232019f00000100034000390000000003030433000000b80330021000000a4503300197000000000232019f00000120034000390000000003030433000000c80330021000000a4603300197000000000232019f00000140034000390000000003030433000000d80330021000000a4703300197000000000232019f000000000021041b00000001011000390000002002000029000000000202043300000a1a02200197000000000301041a00000a4803300197000000000223019f00000180034000390000000003030433000000200330021000000a4903300197000000000232019f000001a0034000390000000003030433000000600330021000000a4a03300197000000000232019f000001c0034000390000000003030433000000800330021000000a4b03300197000000000232019f000001e0034000390000000003030433000000000003004b00000a4c030000410000000003006019000000000232019f00000021030000290000000003030433000000380330027000000a3a03300197000000000232019f000000000021041b0000002202000029002200010020003d00000017010000290000000001010433000000220010006b00001cae0000413d0018002b0000002d00000018010000290000000001010433000000000001004b00001dad0000613d0000001801000029002100200010003d002400000000001d000000240100002900000005011002100000002101100029000000000101043300000020021000390000000002020433002200000002001d000000000101043300000a1f01100197002300000001001d000000000010043f0000000801000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000220200002900000a2002200197000000000101043b000000000301041a00000a4f03300197000000000323019f000000000031041b000000400100043d000000000021043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a2c011001c70000800d02000039000000020300003900000a50040000410000002305000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d00000018010000290000000001010433000000240010006b00001d780000413d000000400100043d001b00000001001d00000a290010009c000001140000213d0000001b010000290000002002100039001a00000002001d000000400020043f00000000000104350000002c01000029001c00000001001d0000000021010434001d00000002001d000000000001004b00001f230000613d001e00000000001d00001dc20000013d0000001e02000029001e00010020003d0000001e0010006b00001ee40000813d0000001e0200002900000005022002100000001d0220002900000000030204330000002002300039001f00000002001d00000000020204330000000004020433000000000004004b00001dbe0000613d000000000103043300220a200010019b002400000000001d00000024010000290000000501100210000000000112001900000020011000390000000001010433000000002101043400230a1f0010019b0000000001020433002000000001001d0000008001100039002100000001001d000000000101043300000a1a011001970000001f0010008c00001f330000a13d0000002201000029000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002302000029000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000201041a00000a5102200197000000200900002900000020039000390000000004030433000000200440021000000a5204400197000000000242019f00000040049000390000000005040433000000400550021000000a5305500197000000000252019f00000060059000390000000006050433000000500660021000000a5406600197000000000262019f00000021080000290000000006080433000000700660021000000a5506600197000000000262019f000000a0069000390000000007060433000000000007004b00000a56070000410000000007006019000000000272019f000000000709043300000a1a07700197000000000272019f000000000021041b000000400100043d0000000002710436000000000303043300000a1a03300197000000000032043500000000020404330000ffff0220018f00000040031000390000000000230435000000000205043300000a1a0220019700000060031000390000000000230435000000000208043300000a1a02200197000000800310003900000000002304350000000002060433000000000002004b0000000002000039000000010200c039000000a003100039000000000023043500000a1a0010009c00000a1a010080410000004001100210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a57011001c70000800d02000039000000030300003900000a580400004100000022050000290000002306000029286328590000040f0000000100200190000000e00000613d0000002403000029002400010030003d0000001f0100002900000000020104330000000001020433000000240010006b00001dcf0000413d0000001c01000029000000000101043300001dbe0000013d000000000206043300000a230020009c000000e00000213d000000400020008c000000e00000413d000000400500043d00000a240050009c000001140000213d0000004002500039000000400020043f0000000002070433000000000025043500000040066000390000000006060433000000000006004b0000000007000039000000010700c039000000000076004b000000e00000c13d000000200550003900000000006504350000001905000029000000000505043300000a1a05500197000000000052004b00001f3b0000a13d000000400100043d00000aab0200004100001b850000013d002400000000001d00001e710000013d0000002402000029002400010020003d0000001f010000290000000001010433000000240010006b00001c660000813d000000240100002900000005011002100000001e01100029002200000001001d000000000101043300000a1f01100197002100000001001d000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a002300000001001d000000000001004b00001e6b0000613d0000000b01000039000000000201041a000000000002004b000017680000613d0000002303000029000000010130008a000000000023004b00001eae0000613d000000000012004b00001ed50000a13d000000230100002900000a330110009a00000a330220009a000000000202041a000000000021041b000000000020043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b0000002302000029000000000021041b0000000b01000039000000000101041a002300000001001d000000000001004b00001edb0000613d0000002301000029000000010110008a000000230200002900000a330220009a000000000002041b0000000b02000039000000000012041b0000002101000029000000000010043f0000000c01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b0000001f010000290000000001010433000000240010006c00001ed50000a13d00000022010000290000000001010433000000000200041400000a1f0510019700000a1a0020009c00000a1a02008041000000c00120021000000a31011001c70000800d02000039000000020300003900000a3404000041286328590000040f000000010020019000001e6b0000c13d000000e00000013d00000abb01000041000000000010043f0000003201000039000000040010043f00000a4e01000041000028650001043000000abb01000041000000000010043f0000003101000039000000040010043f00000a4e010000410000286500010430000000400100043d00000a4d020000410000064d0000013d0000001b010000290000000001010433000000000001004b00001f230000613d002400000000001d000000240100002900000005011002100000001a01100029000000000101043300000020021000390000000002020433002300000002001d000000000101043300000a2001100197002200000001001d000000000010043f0000000a01000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000230200002900000a1f02200197000000000101043b002300000002001d000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000001041b000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a31011001c70000800d02000039000000030300003900000a5b0400004100000022050000290000002306000029286328590000040f0000000100200190000000e00000613d0000002402000029002400010020003d0000001b010000290000000001010433000000240010006b00001ee90000413d000000800100043d00000140000004430000016000100443000000a00100043d00000020020000390000018000200443000001a000100443000000c00100043d0000004003000039000001c000300443000001e00010044300000100002004430000000301000039000001200010044300000a5c01000041000028640001042e000000400200043d0000002403200039000000000013043500000a5901000041000000000012043500000004012000390000002303000029000012980000013d000000000006004b00001f440000c13d00000018050000290000000005050433000000000005004b00001f440000613d000000400100043d00000aaa0200004100001b850000013d00000a1a033001970000001b033000290000000003430019000000000032001a000017680000413d000000010400002900000aa804400198002300000000001d00001f5c0000613d000000000332001900000000024300a900000000044200d9000000000034004b000017680000c13d000000000002004b002300000000001d00001f5c0000613d0000001a03000029000000000303043300000a200330019700230000002300ad00000023022000f9000000000032004b000017680000c13d0000001201100360000000000101043b00000a1f0010009c000000e00000213d000000000010043f0000000801000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000000e00000613d000000000101043b000000000101041a00000a200210019700000020012000b9000000200000006b00001f750000613d00000020031000fa000000000023004b000017680000c13d000000230010002a000017680000413d0000002301100029000000240010002a000017680000413d000000040000006b00001f820000c13d00000abb01000041000000000010043f0000001201000039000000040010043f00000a4e010000410000286500010430000000240110002900000004011000fa00000a150000013d0000000043020434000000000003004b0000000003000039000000010300c039000000000331043600000000040404330000ffff0440018f00000000004304350000004003200039000000000303043300000a1a03300197000000400410003900000000003404350000006003200039000000000303043300000a1a03300197000000600410003900000000003404350000008003200039000000000303043300000a1a0330019700000080041000390000000000340435000000a00320003900000000030304330000ffff0330018f000000a0041000390000000000340435000000c003200039000000000303043300000a1a03300197000000c0041000390000000000340435000000e00320003900000000030304330000ffff0330018f000000e0041000390000000000340435000001000320003900000000030304330000ffff0330018f00000100041000390000000000340435000001200320003900000000030304330000ffff0330018f000001200410003900000000003404350000014003200039000000000303043300000a1a03300197000001400410003900000000003404350000016003200039000000000303043300000a1a03300197000001600410003900000000003404350000018003200039000000000303043300000a200330019700000180041000390000000000340435000001a003200039000000000303043300000a1a03300197000001a0041000390000000000340435000001c003200039000000000303043300000a1a03300197000001c0041000390000000000340435000001e0032000390000000003030433000000000003004b0000000003000039000000010300c039000001e00410003900000000003404350000020002200039000000000202043300000a3802200197000002000310003900000000002304350000022001100039000000000001042d00000acf0010009c00001fe10000813d0000006001100039000000400010043f000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000ad00010009c00001fec0000813d0000004001100039000000400010043f000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000ad10010009c00001ff70000813d000000c001100039000000400010043f000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e0100004100002865000104300000001f0220003900000ace022001970000000001120019000000000021004b0000000002000039000000010200403900000a200010009c000020090000213d0000000100200190000020090000c13d000000400010043f000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e010000410000286500010430000000400100043d00000ad20010009c000020150000813d0000022002100039000000400020043f000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000000430104340000000001320436000000000003004b000020270000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000020200000413d000000000231001900000000000204350000001f0230003900000ace022001970000000001210019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000003004b0000203c0000613d00000000040000190000002002200039000000000502043300000a1f0550019700000000015104360000000104400039000000000034004b000020350000413d000000000001042d000000003101043400000a27011001970000000001120436000000000203043300000a1a022001970000000000210435000000000001042d0000000043020434000000000003004b0000000003000039000000010300c039000000000331043600000000040404330000ffff0440018f00000000004304350000004003200039000000000303043300000a1a03300197000000400410003900000000003404350000006003200039000000000303043300000a1a03300197000000600410003900000000003404350000008003200039000000000303043300000a1a0330019700000080041000390000000000340435000000a00320003900000000030304330000ffff0330018f000000a0041000390000000000340435000000c003200039000000000303043300000a1a03300197000000c0041000390000000000340435000000e00320003900000000030304330000ffff0330018f000000e0041000390000000000340435000001000320003900000000030304330000ffff0330018f00000100041000390000000000340435000001200320003900000000030304330000ffff0330018f000001200410003900000000003404350000014003200039000000000303043300000a1a03300197000001400410003900000000003404350000016003200039000000000303043300000a1a03300197000001600410003900000000003404350000018003200039000000000303043300000a200330019700000180041000390000000000340435000001a003200039000000000303043300000a1a03300197000001a0041000390000000000340435000001c003200039000000000303043300000a1a03300197000001c0041000390000000000340435000001e0032000390000000003030433000000000003004b0000000003000039000000010300c039000001e00410003900000000003404350000020002200039000000000202043300000a3802200197000002000310003900000000002304350000022001100039000000000001042d000000004302043400000a1a033001970000000003310436000000000404043300000a1a044001970000000000430435000000400320003900000000030304330000ffff0330018f000000400410003900000000003404350000006003200039000000000303043300000a1a03300197000000600410003900000000003404350000008003200039000000000303043300000a1a0330019700000080041000390000000000340435000000a0022000390000000002020433000000000002004b0000000002000039000000010200c039000000a0031000390000000000230435000000c001100039000000000001042d000000003202043400000a1f0220019700000000022104360000000003030433000000ff0330018f00000000003204350000004001100039000000000001042d0007000000000002000300000003001d000600000002001d000000400200043d00000ad00020009c0000236d0000813d0000004003200039000000400030043f00000020032000390000000000030435000000000002043500000a1f01100197000200000001001d000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000023730000613d000000400300043d00000a240030009c0000236d0000213d000000000101043b0000004002300039000000400020043f000000000101041a00000a2702100197000700000003001d0000000002230436000000e001100270000500000002001d000400000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000023750000613d000000000101043b0004000400100074000023760000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f0000000100200190000023750000613d000000000101043b00000a1a01100197000000040010006b0000210c0000813d00000007040000290000000501000029000022090000013d0000000201000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000023730000613d000000400200043d00000a240020009c00000007040000290000236d0000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f00000000001304350000213d0000613d000500000003001d000000400100043d00000a240010009c0000236d0000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400c00043d00000a9d0100004100000000051c0436000000000100041400000a1f02200197000000040020008c0000213f0000c13d0000000103000031000000a00030008c000000a00400003900000000040340190000216e0000013d0000000501000029000022090000013d000100000005001d00000a1a00c0009c00000a1a0300004100000000030c4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c7000400000002001d00070000000c001d2863285e0000040f000000070c000029000000600310027000000a1a03300197000000a00030008c000000a00400003900000000040340190000001f0640018f000000e00740019000000000057c00190000215c0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000021580000c13d000000000006004b000021690000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000023a20000613d000000040200002900000001050000290000001f01400039000001e00110018f000000000bc1001900000000001b004b0000000001000039000000010100403900000a2000b0009c0000236d0000213d00000001001001900000236d0000c13d0000004000b0043f000000a00030008c000023730000413d00000000010c043300000a9e0010009c000023730000213d0000008001c00039000000000101043300000a9e0010009c000023730000213d000000000505043300000a220050009c0000238d0000813d00000a9f0100004100000000001b04350000000001000414000000040020008c0000218c0000c13d0000002004000039000021b90000013d000400000005001d00000a1a00b0009c00000a1a0300004100000000030b4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c700070000000b001d2863285e0000040f000000070b000029000000600310027000000a1a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000021a80000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000021a40000c13d000000000006004b000021b50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000023ae0000613d00000004050000290000001f01400039000000600110018f0000000001b1001900000a200010009c0000236d0000213d000700000001001d000000400010043f000000200030008c000023730000413d00000000010b0433000000ff0010008c000023730000213d00000005020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c000023760000213d000000240120008c000021d00000213d000021df0000c13d0000000101000039000021e90000013d0000004d0010008c000023760000213d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a900000001011002720000000003040019000021d40000c13d000000000002004b0000239c0000613d00000000022500d9000021ef0000013d0000000a0300003900000001010000390000002402200089000000010020019000000000043300a9000000010300603900000000011300a900000001022002720000000003040019000021e20000c13d000000000005004b000023640000613d00000000025100a900000000035200d9000000000013004b000023760000c13d00000a270020009c000023940000213d000000070300002900000a240030009c0000236d0000213d0000004001300039000000400010043f0000000001230436000500000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000023750000613d000000000101043b00000a1a011001970000000502000029000000000012043500000000010200190000000704000029000000000101043300000a1a001001980000237c0000613d000000000104043300000a27011001980000237c0000613d00050006001000bd000000060000006b000022160000613d000000060300002900000005023000f9000000000012004b000023760000c13d000000400100043d00000a240010009c0000236d0000213d0000004002100039000000400020043f000000200210003900000000000204350000000000010435000000030100002900000a1f01100197000300000001001d000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000023730000613d000000400300043d00000a240030009c0000236d0000213d000000000101043b0000004002300039000000400020043f000000000101041a00000a2702100197000700000003001d0000000002230436000000e001100270000600000002001d000400000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000023750000613d000000000101043b0004000400100074000023760000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f0000000100200190000023750000613d000000000101043b00000a1a01100197000000040010006b0000225f0000813d000000070400002900000006010000290000235c0000013d0000000301000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000023730000613d000000400200043d00000a240020009c00000007040000290000236d0000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f0000000000130435000022900000613d000600000003001d000000400100043d00000a240010009c0000236d0000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400c00043d00000a9d0100004100000000051c0436000000000100041400000a1f02200197000000040020008c000022920000c13d0000000103000031000000a00030008c000000a0040000390000000004034019000022c10000013d00000006010000290000235c0000013d000200000005001d00000a1a00c0009c00000a1a0300004100000000030c4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c7000400000002001d00070000000c001d2863285e0000040f000000070c000029000000600310027000000a1a03300197000000a00030008c000000a00400003900000000040340190000001f0640018f000000e00740019000000000057c0019000022af0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000022ab0000c13d000000000006004b000022bc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000023ba0000613d000000040200002900000002050000290000001f01400039000001e00110018f000000000bc1001900000000001b004b0000000001000039000000010100403900000a2000b0009c0000236d0000213d00000001001001900000236d0000c13d0000004000b0043f000000a00030008c000023730000413d00000000010c043300000a9e0010009c000023730000213d0000008001c00039000000000101043300000a9e0010009c000023730000213d000000000505043300000a220050009c0000238d0000813d00000a9f0100004100000000001b04350000000001000414000000040020008c000022df0000c13d00000020040000390000230c0000013d000400000005001d00000a1a00b0009c00000a1a0300004100000000030b4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c700070000000b001d2863285e0000040f000000070b000029000000600310027000000a1a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000022fb0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000022f70000c13d000000000006004b000023080000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000023c60000613d00000004050000290000001f01400039000000600110018f0000000001b1001900000a200010009c0000236d0000213d000700000001001d000000400010043f000000200030008c000023730000413d00000000010b0433000000ff0010008c000023730000213d00000006020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c000023760000213d000000240120008c000023230000213d000023320000c13d00000001010000390000233c0000013d0000004d0010008c000023760000213d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a900000001011002720000000003040019000023270000c13d000000000002004b0000239c0000613d00000000022500d9000023420000013d0000000a0300003900000001010000390000002402200089000000010020019000000000043300a9000000010300603900000000011300a900000001022002720000000003040019000023350000c13d000000000005004b000023690000613d00000000025100a900000000035200d9000000000013004b000023760000c13d00000a270020009c000023940000213d000000070300002900000a240030009c0000236d0000213d0000004001300039000000400010043f0000000001230436000600000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000023750000613d000000000101043b00000a1a011001970000000602000029000000000012043500000000010200190000000704000029000000000101043300000a1a00100198000023820000613d000000000104043300000a2701100198000023820000613d00000005011000f9000000000001042d0000000002000019000000070300002900000a240030009c000021f40000a13d0000236d0000013d0000000002000019000000070300002900000a240030009c000023470000a13d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000000010000190000286500010430000000000001042f00000abb01000041000000000010043f0000001101000039000000040010043f00000a4e010000410000286500010430000000400100043d00000aa102000041000000000021043500000004021000390000000203000029000023870000013d000000400100043d00000aa102000041000000000021043500000004021000390000000303000029000000000032043500000a1a0010009c00000a1a01008041000000400110021000000a4e011001c7000028650001043000000aa00100004100000000001b043500000a1a00b0009c00000a1a0b0080410000004001b0021000000a5e011001c7000028650001043000000aa0010000410000000702000029000000000012043500000a1a0020009c00000a1a02008041000000400120021000000a5e011001c7000028650001043000000abb01000041000000000010043f0000001201000039000000040010043f00000a4e0100004100002865000104300000001f0530018f00000a1c06300198000000400200043d0000000004620019000023d10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023a90000c13d000023d10000013d0000001f0530018f00000a1c06300198000000400200043d0000000004620019000023d10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023b50000c13d000023d10000013d0000001f0530018f00000a1c06300198000000400200043d0000000004620019000023d10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023c10000c13d000023d10000013d0000001f0530018f00000a1c06300198000000400200043d0000000004620019000023d10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023cd0000c13d000000000005004b000023de0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000a1a0020009c00000a1a020080410000004002200210000000000112019f000028650001043000000a1f01100197000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000023f30000613d000000000101043b000000000001042d0000000001000019000028650001043000000a1f02200197000000000020043f000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000024030000613d000000000101043b000000000001042d0000000001000019000028650001043000000a2001100197000000000010043f0000000901000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000024140000613d000000000101043b000000000001042d000000000100001900002865000104300000000003010433000000000023004b0000241d0000a13d000000050220021000000000012100190000002001100039000000000001042d00000abb01000041000000000010043f0000003201000039000000040010043f00000a4e010000410000286500010430000000400100043d00000ad00010009c0000242c0000813d0000004002100039000000400020043f000000200210003900000000000204350000000000010435000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e0100004100002865000104300000000002010019000000400100043d00000ad20010009c000024800000813d0000022003100039000000400030043f000000000302041a000000d80430027000000a1a0440019700000140051000390000000000450435000000c8043002700000ffff0440018f00000120051000390000000000450435000000b8043002700000ffff0440018f00000100051000390000000000450435000000a8043002700000ffff0440018f000000e0051000390000000000450435000000880430027000000a1a04400197000000c005100039000000000045043500000078043002700000ffff0440018f000000a0051000390000000000450435000000580430027000000a1a0440019700000080051000390000000000450435000000380430027000000a1a0440019700000060051000390000000000450435000000180430027000000a1a044001970000004005100039000000000045043500000008043002700000ffff0440018f00000020051000390000000000450435000000ff003001900000000003000039000000010300c03900000000003104350000000102200039000000000202041a000001600310003900000a1a042001970000000000430435000000380320021000000a38033001970000020004100039000000000034043500000a36002001980000000003000039000000010300c039000001e0041000390000000000340435000000800320027000000a1a03300197000001c0041000390000000000340435000000600320027000000a1a03300197000001a0041000390000000000340435000000200220027000000a200220019700000180031000390000000000230435000000000001042d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e0100004100002865000104300004000000000002000000400200043d00000ad00020009c000025cb0000813d0000004003200039000000400030043f00000020032000390000000000030435000000000002043500000a1f01100197000200000001001d000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000025d10000613d000000400300043d00000a240030009c000025cb0000213d000000000101043b0000004002300039000000400020043f000000000101041a00000a2702100197000400000003001d0000000002230436000000e001100270000300000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000025d30000613d000000000101043b0003000300100074000025d40000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f0000000100200190000025d30000613d000000000101043b00000a1a01100197000000030010006b000025c40000413d0000000201000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000025d10000613d000000400200043d00000a240020009c0000000404000029000025cb0000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f0000000000130435000025c50000613d000300000003001d000000400100043d00000a240010009c000025cb0000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400c00043d00000a9d0100004100000000051c0436000000000100041400000a1f02200197000000040020008c000024fc0000c13d0000000103000031000000a00030008c000000a00400003900000000040340190000252b0000013d000100000005001d00000a1a00c0009c00000a1a0300004100000000030c4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c7000200000002001d00040000000c001d2863285e0000040f000000040c000029000000600310027000000a1a03300197000000a00030008c000000a00400003900000000040340190000001f0640018f000000e00740019000000000057c0019000025190000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000025150000c13d000000000006004b000025260000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000025e90000613d000000020200002900000001050000290000001f01400039000001e00110018f000000000bc1001900000000001b004b0000000001000039000000010100403900000a2000b0009c000025cb0000213d0000000100100190000025cb0000c13d0000004000b0043f000000a00030008c000025d10000413d00000000010c043300000a9e0010009c000025d10000213d0000008001c00039000000000101043300000a9e0010009c000025d10000213d000000000505043300000a220050009c000025da0000813d00000a9f0100004100000000001b04350000000001000414000000040020008c000025490000c13d0000002004000039000025760000013d000200000005001d00000a1a00b0009c00000a1a0300004100000000030b4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c700040000000b001d2863285e0000040f000000040b000029000000600310027000000a1a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000025650000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025610000c13d000000000006004b000025720000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000025f50000613d00000002050000290000001f01400039000000600110018f0000000001b1001900000a200010009c000025cb0000213d000400000001001d000000400010043f000000200030008c000025d10000413d00000000010b0433000000ff0010008c000025d10000213d00000003020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c000025d40000213d000000240120008c0000258d0000213d0000259c0000c13d0000000101000039000025a60000013d0000004d0010008c000025d40000213d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a900000001011002720000000003040019000025910000c13d000000000002004b000026130000613d00000000022500d9000025ac0000013d0000000a0300003900000001010000390000002402200089000000010020019000000000043300a9000000010300603900000000011300a9000000010220027200000000030400190000259f0000c13d000000000005004b000025c70000613d00000000025100a900000000035200d9000000000013004b000025d40000c13d00000a270020009c000025e10000213d000000040300002900000a240030009c000025cb0000213d0000004001300039000000400010043f0000000001230436000300000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000025d30000613d000000000101043b00000a1a011001970000000302000029000000000012043500000004040000290000000001040019000000000001042d0000000002000019000000040300002900000a240030009c000025b10000a13d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000000010000190000286500010430000000000001042f00000abb01000041000000000010043f0000001101000039000000040010043f00000a4e01000041000028650001043000000aa00100004100000000001b043500000a1a00b0009c00000a1a0b0080410000004001b0021000000a5e011001c7000028650001043000000aa0010000410000000402000029000000000012043500000a1a0020009c00000a1a02008041000000400120021000000a5e011001c700002865000104300000001f0530018f00000a1c06300198000000400200043d0000000004620019000026000000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025f00000c13d000026000000013d0000001f0530018f00000a1c06300198000000400200043d0000000004620019000026000000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025fc0000c13d000000000005004b0000260d0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000a1a0020009c00000a1a020080410000004002200210000000000112019f000028650001043000000abb01000041000000000010043f0000001201000039000000040010043f00000a4e0100004100002865000104300005000000000002000000400200043d00000ad00020009c0000276a0000813d0000004003200039000000400030043f00000020032000390000000000030435000000000002043500000a1f01100197000200000001001d000000000010043f0000000601000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000027700000613d000000400300043d00000a240030009c0000276a0000213d000000000101043b0000004002300039000000400020043f000000000101041a00000a2702100197000500000003001d0000000002230436000000e001100270000400000002001d000300000001001d000000000012043500000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000027720000613d000000000101043b00030003001000740000277e0000413d00000a9b0100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a9c011001c700008005020000392863285e0000040f0000000100200190000027720000613d000000000101043b00000a1a01100197000000030010006b000026620000813d000000050400002900000004010000290000275f0000013d0000000201000029000000000010043f0000000701000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000027700000613d000000400200043d00000a240020009c00000005040000290000276a0000213d000000000101043b0000004003200039000000400030043f000000000101041a00000a1f031001980000000003320436000000a001100270000000ff0110018f0000000000130435000026930000613d000400000003001d000000400100043d00000a240010009c0000276a0000213d0000004003100039000000400030043f0000002003100039000000000003043500000000000104350000000002020433000000400c00043d00000a9d0100004100000000051c0436000000000100041400000a1f02200197000000040020008c000026950000c13d0000000103000031000000a00030008c000000a0040000390000000004034019000026c40000013d00000004010000290000275f0000013d000100000005001d00000a1a00c0009c00000a1a0300004100000000030c4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c7000300000002001d00050000000c001d2863285e0000040f000000050c000029000000600310027000000a1a03300197000000a00030008c000000a00400003900000000040340190000001f0640018f000000e00740019000000000057c0019000026b20000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000026ae0000c13d000000000006004b000026bf0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000027930000613d000000030200002900000001050000290000001f01400039000001e00110018f000000000bc1001900000000001b004b0000000001000039000000010100403900000a2000b0009c0000276a0000213d00000001001001900000276a0000c13d0000004000b0043f000000a00030008c000027700000413d00000000010c043300000a9e0010009c000027700000213d0000008001c00039000000000101043300000a9e0010009c000027700000213d000000000505043300000a220050009c000027840000813d00000a9f0100004100000000001b04350000000001000414000000040020008c000026e20000c13d00000020040000390000270f0000013d000300000005001d00000a1a00b0009c00000a1a0300004100000000030b4019000000400330021000000a1a0010009c00000a1a01008041000000c001100210000000000131019f00000a5e011001c700050000000b001d2863285e0000040f000000050b000029000000600310027000000a1a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000026fe0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000026fa0000c13d000000000006004b0000270b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000279f0000613d00000003050000290000001f01400039000000600110018f0000000001b1001900000a200010009c0000276a0000213d000500000001001d000000400010043f000000200030008c000027700000413d00000000010b0433000000ff0010008c000027700000213d00000004020000290000000002020433000000ff0220018f0000000002120019000000ff0020008c0000277e0000213d000000240120008c000027260000213d000027350000c13d00000001010000390000273f0000013d0000004d0010008c0000277e0000213d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a9000000010110027200000000030400190000272a0000c13d000000000002004b000027bd0000613d00000000022500d9000027450000013d0000000a0300003900000001010000390000002402200089000000010020019000000000043300a9000000010300603900000000011300a900000001022002720000000003040019000027380000c13d000000000005004b000027660000613d00000000025100a900000000035200d9000000000013004b0000277e0000c13d00000a270020009c0000278b0000213d000000050300002900000a240030009c0000276a0000213d0000004001300039000000400010043f0000000001230436000400000001001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f0000000100200190000027720000613d000000000101043b00000a1a011001970000000402000029000000000012043500000000010200190000000504000029000000000101043300000a1a00100198000027730000613d000000000104043300000a2701100198000027730000613d000000000001042d0000000002000019000000050300002900000a240030009c0000274a0000a13d00000abb01000041000000000010043f0000004101000039000000040010043f00000a4e01000041000028650001043000000000010000190000286500010430000000000001042f000000400100043d00000aa102000041000000000021043500000004021000390000000203000029000000000032043500000a1a0010009c00000a1a01008041000000400110021000000a4e011001c7000028650001043000000abb01000041000000000010043f0000001101000039000000040010043f00000a4e01000041000028650001043000000aa00100004100000000001b043500000a1a00b0009c00000a1a0b0080410000004001b0021000000a5e011001c7000028650001043000000aa0010000410000000502000029000000000012043500000a1a0020009c00000a1a02008041000000400120021000000a5e011001c700002865000104300000001f0530018f00000a1c06300198000000400200043d0000000004620019000027aa0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000279a0000c13d000027aa0000013d0000001f0530018f00000a1c06300198000000400200043d0000000004620019000027aa0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027a60000c13d000000000005004b000027b70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000a1a0020009c00000a1a020080410000004002200210000000000112019f000028650001043000000abb01000041000000000010043f0000001201000039000000040010043f00000a4e01000041000028650001043000000ab3055001970000006006100039000000000056043500000ab4044001970000004005100039000000000045043500000a1f033001970000002004100039000000000034043500000a1f0220019700000000002104350000008001100039000000000001042d0004000000000002000400000002001d00000a2001100197000100000001001d000000000010043f0000000501000039000000200010043f000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a2a011001c700008010020000392863285e0000040f0000000100200190000028070000613d000000400300043d00000ad00030009c000028090000813d000000000101043b0000004002300039000000400020043f000000000101041a0000002002300039000000e004100270000000000042043500000a27011001970000000000130435000000040200002900000a1a02200198000028060000613d000300000004001d000400000002001d000200000003001d00000a95010000410000000000100443000000000100041400000a1a0010009c00000a1a01008041000000c00110021000000a96011001c70000800b020000392863285e0000040f00000001002001900000280f0000613d000000000101043b000000030110006c0000000404000029000028100000413d000000000041004b0000000202000029000028160000213d000000000102043300000a2701100197000000000001042d0000000001000019000028650001043000000abb01000041000000000010043f0000004101000039000000040010043f00000a4e010000410000286500010430000000000001042f00000abb01000041000000000010043f0000001101000039000000040010043f00000a4e010000410000286500010430000000400200043d000000440320003900000000001304350000002401200039000000000041043500000a9701000041000000000012043500000004012000390000000103000029000000000031043500000a1a0020009c00000a1a02008041000000400120021000000a61011001c70000286500010430000000000001042f00000a1a0010009c00000a1a01008041000000400110021000000a1a0020009c00000a1a020080410000006002200210000000000112019f000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000a31011001c700008010020000392863285e0000040f0000000100200190000028390000613d000000000101043b000000000001042d0000000001000019000028650001043000000000050100190000000000200443000000050030008c000028490000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000028410000413d00000a1a0030009c00000a1a030080410000006001300210000000000200041400000a1a0020009c00000a1a02008041000000c002200210000000000112019f00000ad3011001c700000000020500192863285e0000040f0000000100200190000028580000613d000000000101043b000000000001042d000000000001042f0000285c002104210000000102000039000000000001042d0000000002000019000000000001042d00002861002104230000000102000039000000000001042d0000000002000019000000000001042d0000286300000432000028640001042e00002865000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffff9f0000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf000000000000000000000000000000000000000000000000ffffffffffffff3f000000000000000000000000000000000000000000000000fffffffffffffddf00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf0200000000000000000000000000000000000040000000000000000000000000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a5330200000000000000000000000000000000000020000000000000000000000000c3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda77580bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a532eb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdeffe8a4859c7bd88fc0f24184464406785daae8e84cb1860cc4a4eff72e05fe2470200000000000000000000000000000000000000000000000000000000000000df1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23fe8a4859c7bd88fc0f24184464406785daae8e84cb1860cc4a4eff72e05fe2481795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91ffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000008a5f7f5bb38a81d8e43aca13ecd76431dbf8816ae4699affff7b00b2fc1c464ffffffff000000000000000000000000000000000000000000000000000000002812d52c0000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000283b699f411baff8f1c29fe49f32a828c8151596244b8e7e4c164edd6569a835525e3d4e0c31cef19cf9426af8d2c0ddd2d576359ca26bed92aac5fadda46265ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff00000000000000000000000000000000000000000000000000000000ffff00000000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000ffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000c35aa79d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000bb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97dffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff0000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000002000000000000000000000000000000000000c000000000000000000000000094967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b524ecdc020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000004de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b0000000200000000000000000000000000000100000001000000000000000000d794ef9500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000770e2dc300000000000000000000000000000000000000000000000000000000a69c64bf00000000000000000000000000000000000000000000000000000000d63d3af100000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000ffdb4b3700000000000000000000000000000000000000000000000000000000d63d3af200000000000000000000000000000000000000000000000000000000d8694ccd00000000000000000000000000000000000000000000000000000000cdc73d5000000000000000000000000000000000000000000000000000000000cdc73d5100000000000000000000000000000000000000000000000000000000d02641a000000000000000000000000000000000000000000000000000000000a69c64c000000000000000000000000000000000000000000000000000000000bf78e03f00000000000000000000000000000000000000000000000000000000805f2131000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000091a2749a00000000000000000000000000000000000000000000000000000000805f21320000000000000000000000000000000000000000000000000000000082b49eb000000000000000000000000000000000000000000000000000000000770e2dc40000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000007afac32200000000000000000000000000000000000000000000000000000000407e1085000000000000000000000000000000000000000000000000000000004ab35b0a000000000000000000000000000000000000000000000000000000006cb5f3dc000000000000000000000000000000000000000000000000000000006cb5f3dd000000000000000000000000000000000000000000000000000000006def4ce7000000000000000000000000000000000000000000000000000000004ab35b0b00000000000000000000000000000000000000000000000000000000514e8cff00000000000000000000000000000000000000000000000000000000430d138b00000000000000000000000000000000000000000000000000000000430d138c0000000000000000000000000000000000000000000000000000000045ac924d00000000000000000000000000000000000000000000000000000000407e10860000000000000000000000000000000000000000000000000000000041ed29e700000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000325c868d00000000000000000000000000000000000000000000000000000000325c868e000000000000000000000000000000000000000000000000000000003937306f00000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000002451a627000000000000000000000000000000000000000000000000000000000041e5be00000000000000000000000000000000000000000000000000000000061877e30000000000000000000000000000000000000000000000000000000006285c69000000000000000000000000000000000000004000000000000000000000000099ac52f2000000000000000000000000000000000000000000000000000000004f6e6c792063616c6c61626c65206279206f776e6572000000000000000000000000000000000000000000000000000000000064000000800000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c660000000000000000008d666f6000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffc00796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000f08bcb3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000ffffffdf310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000feaf968c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff313ce5670000000000000000000000000000000000000000000000000000000010cb51d10000000000000000000000000000000000000000000000000000000006439c6b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000ffffffffffffffffffffffffffffffff181dcf100000000000000000000000000000000000000000000000000000000097a657c900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000ee433e99000000000000000000000000000000000000000000000000000000004c4fc93a000000000000000000000000000000000000000000000000000000004c056b6a0000000000000000000000000000000000000000000000000000000086933789000000000000000000000000000000000000000000000000000000002502348c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9000000000000000000000000000000000000000000000000ffffffffffffff7f8579befe00000000000000000000000000000000000000000000000000000000ffff000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f0000000000000000000000fe00000000000000000000000000000000000000000000000000000000000000ed000000000000000000000000000000000000000052f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a191ec70600000000000000000000000000000000000000000000000000000000097e17ff000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e002000000000000000000000000000000000002200000000000000000000000005247fdce00000000000000000000000000000000000000000000000000000000000000000000002812d52c00000000000000000000000000000000000000000036f536ca000000000000000000000000000000000000000000000000000000006a92a4830000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000a000000000000000000000000032a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a3dd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6ed86ad9cf00000000000000000000000000000000000000000000000000000000405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace46656551756f74657220312e362e302d646576000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000060000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffa0000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000ffffffffffffff40000000000000000000000000000000000000000000000000fffffffffffffde00200000200000000000000000000000000000000000000000000000000000000d854199a705ec63a2437c5f9f0eaf7eadb6f0a9abf94f7dec75ca1de173d55d7") + type GetTokenAndGasPrices struct { TokenPrice *big.Int GasPriceValue *big.Int @@ -2907,6 +2928,82 @@ func (_FeeQuoter *FeeQuoter) Address() common.Address { return _FeeQuoter.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *FeeQuoter, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(FeeQuoterZkBin) + fmt.Println("deploying") + FeeQuoterAbi, err := FeeQuoterMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := FeeQuoterAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := FeeQuoterMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &FeeQuoter{address: address, abi: *parsed, FeeQuoterCaller: FeeQuoterCaller{contract: contractBind}, FeeQuoterTransactor: FeeQuoterTransactor{contract: contractBind}, FeeQuoterFilterer: FeeQuoterFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type FeeQuoterInterface interface { FEEBASEDECIMALS(opts *bind.CallOpts) (*big.Int, error) diff --git a/core/gethwrappers/ccip/generated/link_token/link_token.go b/core/gethwrappers/ccip/generated/link_token/link_token.go new file mode 100644 index 0000000000..04d8b15fa8 --- /dev/null +++ b/core/gethwrappers/ccip/generated/link_token/link_token.go @@ -0,0 +1,2165 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package link_token + +import ( + "context" + "errors" + "fmt" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/event" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" +) + +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +var LinkTokenMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplyAfterMint\",\"type\":\"uint256\"}],\"name\":\"MaxSupplyExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderNotBurner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderNotMinter\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"BurnAccessGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"BurnAccessRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"MintAccessGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"MintAccessRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBurners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"grantBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"burnAndMinter\",\"type\":\"address\"}],\"name\":\"grantMintAndBurnRoles\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"grantMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"isBurner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"revokeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"revokeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040518060400160405280600f81526020016e21b430b4b72634b735902a37b5b2b760891b815250604051806040016040528060048152602001634c494e4b60e01b81525060126b033b2e3c9fd0803ce8000000338060008686818181600390816200007f91906200028c565b5060046200008e82826200028c565b5050506001600160a01b0384169150620000f190505760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600580546001600160a01b0319166001600160a01b0384811691909117909155811615620001245762000124816200013b565b50505060ff90911660805260a05250620003589050565b336001600160a01b03821603620001955760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000e8565b600680546001600160a01b0319166001600160a01b03838116918217909255600554604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200021257607f821691505b6020821081036200023357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028757600081815260208120601f850160051c81016020861015620002625750805b601f850160051c820191505b8181101562000283578281556001016200026e565b5050505b505050565b81516001600160401b03811115620002a857620002a8620001e7565b620002c081620002b98454620001fd565b8462000239565b602080601f831160018114620002f85760008415620002df5750858301515b600019600386901b1c1916600185901b17855562000283565b600085815260208120601f198616915b82811015620003295788860151825594840194600190910190840162000308565b5085821015620003485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611e4c6200038c60003960008181610447015281816108c301526108ed015260006102710152611e4c6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806379cc67901161010f578063c2e3273d116100a2578063d73dd62311610071578063d73dd6231461046b578063dd62ed3e1461047e578063f2fde38b146104c4578063f81094f3146104d757600080fd5b8063c2e3273d1461040c578063c630948d1461041f578063c64d0ebc14610432578063d5abeb011461044557600080fd5b80639dc29fac116100de5780639dc29fac146103c0578063a457c2d7146103d3578063a9059cbb146103e6578063aa271e1a146103f957600080fd5b806379cc67901461037557806386fe8b43146103885780638da5cb5b1461039057806395d89b41146103b857600080fd5b806340c10f19116101875780636618846311610156578063661884631461030f5780636b32810b1461032257806370a082311461033757806379ba50971461036d57600080fd5b806340c10f19146102c157806342966c68146102d65780634334614a146102e95780634f5632f8146102fc57600080fd5b806323b872dd116101c357806323b872dd14610257578063313ce5671461026a578063395093511461029b5780634000aea0146102ae57600080fd5b806301ffc9a7146101f557806306fdde031461021d578063095ea7b31461023257806318160ddd14610245575b600080fd5b6102086102033660046119b9565b6104ea565b60405190151581526020015b60405180910390f35b61022561061b565b6040516102149190611a5f565b610208610240366004611a9b565b6106ad565b6002545b604051908152602001610214565b610208610265366004611ac5565b6106c5565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610214565b6102086102a9366004611a9b565b6106e9565b6102086102bc366004611b30565b610735565b6102d46102cf366004611a9b565b610858565b005b6102d46102e4366004611c19565b61097f565b6102086102f7366004611c32565b6109cc565b6102d461030a366004611c32565b6109d9565b61020861031d366004611a9b565b610a35565b61032a610a48565b6040516102149190611c4d565b610249610345366004611c32565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102d4610a59565b6102d4610383366004611a9b565b610b5a565b61032a610ba9565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b610225610bb5565b6102d46103ce366004611a9b565b610bc4565b6102086103e1366004611a9b565b610bce565b6102086103f4366004611a9b565b610c9f565b610208610407366004611c32565b610cad565b6102d461041a366004611c32565b610cba565b6102d461042d366004611c32565b610d16565b6102d4610440366004611c32565b610d24565b7f0000000000000000000000000000000000000000000000000000000000000000610249565b6102d4610479366004611a9b565b610d80565b61024961048c366004611ca7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102d46104d2366004611c32565b610d8a565b6102d46104e5366004611c32565b610d9b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000148061057d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4000aea000000000000000000000000000000000000000000000000000000000145b806105c957507fffffffff0000000000000000000000000000000000000000000000000000000082167fe6599b4d00000000000000000000000000000000000000000000000000000000145b8061061557507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60606003805461062a90611cda565b80601f016020809104026020016040519081016040528092919081815260200182805461065690611cda565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000336106bb818585610df7565b5060019392505050565b6000336106d3858285610e2b565b6106de858585610efc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906106bb9082908690610730908790611d5c565b610df7565b60006107418484610c9f565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040516107a1929190611d6f565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff84163b156106bb576040517fa4c0ed3600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063a4c0ed369061081c90339087908790600401611d90565b600060405180830381600087803b15801561083657600080fd5b505af115801561084a573d6000803e3d6000fd5b505050505060019392505050565b61086133610cad565b61089e576040517fe2c8c9d50000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b813073ffffffffffffffffffffffffffffffffffffffff8216036108c157600080fd5b7f00000000000000000000000000000000000000000000000000000000000000001580159061092257507f00000000000000000000000000000000000000000000000000000000000000008261091660025490565b6109209190611d5c565b115b15610970578161093160025490565b61093b9190611d5c565b6040517fcbbf111300000000000000000000000000000000000000000000000000000000815260040161089591815260200190565b61097a8383610f2a565b505050565b610988336109cc565b6109c0576040517fc820b10b000000000000000000000000000000000000000000000000000000008152336004820152602401610895565b6109c98161101d565b50565b6000610615600983611027565b6109e1611056565b6109ec6009826110d9565b156109c95760405173ffffffffffffffffffffffffffffffffffffffff8216907f0a675452746933cefe3d74182e78db7afe57ba60eaa4234b5d85e9aa41b0610c90600090a250565b6000610a418383610bce565b9392505050565b6060610a5460076110fb565b905090565b60065473ffffffffffffffffffffffffffffffffffffffff163314610ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610895565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000008082163390811790935560068054909116905560405173ffffffffffffffffffffffffffffffffffffffff909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b610b63336109cc565b610b9b576040517fc820b10b000000000000000000000000000000000000000000000000000000008152336004820152602401610895565b610ba58282611108565b5050565b6060610a5460096110fb565b60606004805461062a90611cda565b610ba58282610b5a565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610895565b6106de8286868403610df7565b6000336106bb818585610efc565b6000610615600783611027565b610cc2611056565b610ccd60078261111d565b156109c95760405173ffffffffffffffffffffffffffffffffffffffff8216907fe46fef8bbff1389d9010703cf8ebb363fb3daf5bf56edc27080b67bc8d9251ea90600090a250565b610d1f81610cba565b6109c9815b610d2c611056565b610d3760098261111d565b156109c95760405173ffffffffffffffffffffffffffffffffffffffff8216907f92308bb7573b2a3d17ddb868b39d8ebec433f3194421abc22d084f89658c9bad90600090a250565b61097a82826106e9565b610d92611056565b6109c98161113f565b610da3611056565b610dae6007826110d9565b156109c95760405173ffffffffffffffffffffffffffffffffffffffff8216907fed998b960f6340d045f620c119730f7aa7995e7425c2401d3a5b64ff998a59e990600090a250565b813073ffffffffffffffffffffffffffffffffffffffff821603610e1a57600080fd5b610e25848484611235565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e255781811015610eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610895565b610e258484848403610df7565b813073ffffffffffffffffffffffffffffffffffffffff821603610f1f57600080fd5b610e258484846113e8565b73ffffffffffffffffffffffffffffffffffffffff8216610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610895565b8060026000828254610fb99190611d5c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6109c93382611657565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610a41565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610895565b565b6000610a418373ffffffffffffffffffffffffffffffffffffffff841661181b565b60606000610a418361190e565b611113823383610e2b565b610ba58282611657565b6000610a418373ffffffffffffffffffffffffffffffffffffffff841661196a565b3373ffffffffffffffffffffffffffffffffffffffff8216036111be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610895565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217909255600554604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b73ffffffffffffffffffffffffffffffffffffffff83166112d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff821661137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff821661152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610e25565b73ffffffffffffffffffffffffffffffffffffffff82166116fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156117b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610895565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000818152600183016020526040812054801561190457600061183f600183611dce565b855490915060009061185390600190611dce565b90508181146118b857600086600001828154811061187357611873611de1565b906000526020600020015490508087600001848154811061189657611896611de1565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118c9576118c9611e10565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610615565b6000915050610615565b60608160000180548060200260200160405190810160405280929190818152602001828054801561195e57602002820191906000526020600020905b81548152602001906001019080831161194a575b50505050509050919050565b60008181526001830160205260408120546119b157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610615565b506000610615565b6000602082840312156119cb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a4157600080fd5b6000815180845260005b81811015611a2157602081850181015186830182015201611a05565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610a4160208301846119fb565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a9657600080fd5b919050565b60008060408385031215611aae57600080fd5b611ab783611a72565b946020939093013593505050565b600080600060608486031215611ada57600080fd5b611ae384611a72565b9250611af160208501611a72565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215611b4557600080fd5b611b4e84611a72565b925060208401359150604084013567ffffffffffffffff80821115611b7257600080fd5b818601915086601f830112611b8657600080fd5b813581811115611b9857611b98611b01565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611bde57611bde611b01565b81604052828152896020848701011115611bf757600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600060208284031215611c2b57600080fd5b5035919050565b600060208284031215611c4457600080fd5b610a4182611a72565b6020808252825182820181905260009190848201906040850190845b81811015611c9b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611c69565b50909695505050505050565b60008060408385031215611cba57600080fd5b611cc383611a72565b9150611cd160208401611a72565b90509250929050565b600181811c90821680611cee57607f821691505b602082108103611d27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561061557610615611d2d565b828152604060208201526000611d8860408301846119fb565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611dc560608301846119fb565b95945050505050565b8181038181111561061557610615611d2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000813000a", +} + +var LinkTokenABI = LinkTokenMetaData.ABI + +var LinkTokenBin = LinkTokenMetaData.Bin + +func DeployLinkToken(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *CustomTransaction, *LinkToken, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncLinkToken(auth, backend) + } + + parsed, err := LinkTokenMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(LinkTokenBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &LinkToken{address: address, abi: *parsed, LinkTokenCaller: LinkTokenCaller{contract: contract}, LinkTokenTransactor: LinkTokenTransactor{contract: contract}, LinkTokenFilterer: LinkTokenFilterer{contract: contract}}, nil +} + +type LinkToken struct { + address common.Address + abi abi.ABI + LinkTokenCaller + LinkTokenTransactor + LinkTokenFilterer +} + +type LinkTokenCaller struct { + contract *bind.BoundContract +} + +type LinkTokenTransactor struct { + contract *bind.BoundContract +} + +type LinkTokenFilterer struct { + contract *bind.BoundContract +} + +type LinkTokenSession struct { + Contract *LinkToken + CallOpts bind.CallOpts + TransactOpts bind.TransactOpts +} + +type LinkTokenCallerSession struct { + Contract *LinkTokenCaller + CallOpts bind.CallOpts +} + +type LinkTokenTransactorSession struct { + Contract *LinkTokenTransactor + TransactOpts bind.TransactOpts +} + +type LinkTokenRaw struct { + Contract *LinkToken +} + +type LinkTokenCallerRaw struct { + Contract *LinkTokenCaller +} + +type LinkTokenTransactorRaw struct { + Contract *LinkTokenTransactor +} + +func NewLinkToken(address common.Address, backend bind.ContractBackend) (*LinkToken, error) { + abi, err := abi.JSON(strings.NewReader(LinkTokenABI)) + if err != nil { + return nil, err + } + contract, err := bindLinkToken(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &LinkToken{address: address, abi: abi, LinkTokenCaller: LinkTokenCaller{contract: contract}, LinkTokenTransactor: LinkTokenTransactor{contract: contract}, LinkTokenFilterer: LinkTokenFilterer{contract: contract}}, nil +} + +func NewLinkTokenCaller(address common.Address, caller bind.ContractCaller) (*LinkTokenCaller, error) { + contract, err := bindLinkToken(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LinkTokenCaller{contract: contract}, nil +} + +func NewLinkTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*LinkTokenTransactor, error) { + contract, err := bindLinkToken(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LinkTokenTransactor{contract: contract}, nil +} + +func NewLinkTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*LinkTokenFilterer, error) { + contract, err := bindLinkToken(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LinkTokenFilterer{contract: contract}, nil +} + +func bindLinkToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LinkTokenMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +func (_LinkToken *LinkTokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LinkToken.Contract.LinkTokenCaller.contract.Call(opts, result, method, params...) +} + +func (_LinkToken *LinkTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LinkToken.Contract.LinkTokenTransactor.contract.Transfer(opts) +} + +func (_LinkToken *LinkTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LinkToken.Contract.LinkTokenTransactor.contract.Transact(opts, method, params...) +} + +func (_LinkToken *LinkTokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LinkToken.Contract.contract.Call(opts, result, method, params...) +} + +func (_LinkToken *LinkTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LinkToken.Contract.contract.Transfer(opts) +} + +func (_LinkToken *LinkTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LinkToken.Contract.contract.Transact(opts, method, params...) +} + +func (_LinkToken *LinkTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _LinkToken.Contract.Allowance(&_LinkToken.CallOpts, owner, spender) +} + +func (_LinkToken *LinkTokenCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _LinkToken.Contract.Allowance(&_LinkToken.CallOpts, owner, spender) +} + +func (_LinkToken *LinkTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) BalanceOf(account common.Address) (*big.Int, error) { + return _LinkToken.Contract.BalanceOf(&_LinkToken.CallOpts, account) +} + +func (_LinkToken *LinkTokenCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _LinkToken.Contract.BalanceOf(&_LinkToken.CallOpts, account) +} + +func (_LinkToken *LinkTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) Decimals() (uint8, error) { + return _LinkToken.Contract.Decimals(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) Decimals() (uint8, error) { + return _LinkToken.Contract.Decimals(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) GetBurners(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "getBurners") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) GetBurners() ([]common.Address, error) { + return _LinkToken.Contract.GetBurners(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) GetBurners() ([]common.Address, error) { + return _LinkToken.Contract.GetBurners(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) GetMinters(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "getMinters") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) GetMinters() ([]common.Address, error) { + return _LinkToken.Contract.GetMinters(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) GetMinters() ([]common.Address, error) { + return _LinkToken.Contract.GetMinters(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) IsBurner(opts *bind.CallOpts, burner common.Address) (bool, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "isBurner", burner) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) IsBurner(burner common.Address) (bool, error) { + return _LinkToken.Contract.IsBurner(&_LinkToken.CallOpts, burner) +} + +func (_LinkToken *LinkTokenCallerSession) IsBurner(burner common.Address) (bool, error) { + return _LinkToken.Contract.IsBurner(&_LinkToken.CallOpts, burner) +} + +func (_LinkToken *LinkTokenCaller) IsMinter(opts *bind.CallOpts, minter common.Address) (bool, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "isMinter", minter) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) IsMinter(minter common.Address) (bool, error) { + return _LinkToken.Contract.IsMinter(&_LinkToken.CallOpts, minter) +} + +func (_LinkToken *LinkTokenCallerSession) IsMinter(minter common.Address) (bool, error) { + return _LinkToken.Contract.IsMinter(&_LinkToken.CallOpts, minter) +} + +func (_LinkToken *LinkTokenCaller) MaxSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "maxSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) MaxSupply() (*big.Int, error) { + return _LinkToken.Contract.MaxSupply(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) MaxSupply() (*big.Int, error) { + return _LinkToken.Contract.MaxSupply(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) Name() (string, error) { + return _LinkToken.Contract.Name(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) Name() (string, error) { + return _LinkToken.Contract.Name(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) Owner() (common.Address, error) { + return _LinkToken.Contract.Owner(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) Owner() (common.Address, error) { + return _LinkToken.Contract.Owner(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _LinkToken.Contract.SupportsInterface(&_LinkToken.CallOpts, interfaceId) +} + +func (_LinkToken *LinkTokenCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _LinkToken.Contract.SupportsInterface(&_LinkToken.CallOpts, interfaceId) +} + +func (_LinkToken *LinkTokenCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) Symbol() (string, error) { + return _LinkToken.Contract.Symbol(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) Symbol() (string, error) { + return _LinkToken.Contract.Symbol(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _LinkToken.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +func (_LinkToken *LinkTokenSession) TotalSupply() (*big.Int, error) { + return _LinkToken.Contract.TotalSupply(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenCallerSession) TotalSupply() (*big.Int, error) { + return _LinkToken.Contract.TotalSupply(&_LinkToken.CallOpts) +} + +func (_LinkToken *LinkTokenTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "acceptOwnership") +} + +func (_LinkToken *LinkTokenSession) AcceptOwnership() (*types.Transaction, error) { + return _LinkToken.Contract.AcceptOwnership(&_LinkToken.TransactOpts) +} + +func (_LinkToken *LinkTokenTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _LinkToken.Contract.AcceptOwnership(&_LinkToken.TransactOpts) +} + +func (_LinkToken *LinkTokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "approve", spender, amount) +} + +func (_LinkToken *LinkTokenSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Approve(&_LinkToken.TransactOpts, spender, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Approve(&_LinkToken.TransactOpts, spender, amount) +} + +func (_LinkToken *LinkTokenTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "burn", amount) +} + +func (_LinkToken *LinkTokenSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Burn(&_LinkToken.TransactOpts, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Burn(&_LinkToken.TransactOpts, amount) +} + +func (_LinkToken *LinkTokenTransactor) Burn0(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "burn0", account, amount) +} + +func (_LinkToken *LinkTokenSession) Burn0(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Burn0(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) Burn0(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Burn0(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "burnFrom", account, amount) +} + +func (_LinkToken *LinkTokenSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.BurnFrom(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.BurnFrom(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +func (_LinkToken *LinkTokenSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.DecreaseAllowance(&_LinkToken.TransactOpts, spender, subtractedValue) +} + +func (_LinkToken *LinkTokenTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.DecreaseAllowance(&_LinkToken.TransactOpts, spender, subtractedValue) +} + +func (_LinkToken *LinkTokenTransactor) DecreaseApproval(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "decreaseApproval", spender, subtractedValue) +} + +func (_LinkToken *LinkTokenSession) DecreaseApproval(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.DecreaseApproval(&_LinkToken.TransactOpts, spender, subtractedValue) +} + +func (_LinkToken *LinkTokenTransactorSession) DecreaseApproval(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.DecreaseApproval(&_LinkToken.TransactOpts, spender, subtractedValue) +} + +func (_LinkToken *LinkTokenTransactor) GrantBurnRole(opts *bind.TransactOpts, burner common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "grantBurnRole", burner) +} + +func (_LinkToken *LinkTokenSession) GrantBurnRole(burner common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantBurnRole(&_LinkToken.TransactOpts, burner) +} + +func (_LinkToken *LinkTokenTransactorSession) GrantBurnRole(burner common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantBurnRole(&_LinkToken.TransactOpts, burner) +} + +func (_LinkToken *LinkTokenTransactor) GrantMintAndBurnRoles(opts *bind.TransactOpts, burnAndMinter common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "grantMintAndBurnRoles", burnAndMinter) +} + +func (_LinkToken *LinkTokenSession) GrantMintAndBurnRoles(burnAndMinter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantMintAndBurnRoles(&_LinkToken.TransactOpts, burnAndMinter) +} + +func (_LinkToken *LinkTokenTransactorSession) GrantMintAndBurnRoles(burnAndMinter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantMintAndBurnRoles(&_LinkToken.TransactOpts, burnAndMinter) +} + +func (_LinkToken *LinkTokenTransactor) GrantMintRole(opts *bind.TransactOpts, minter common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "grantMintRole", minter) +} + +func (_LinkToken *LinkTokenSession) GrantMintRole(minter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantMintRole(&_LinkToken.TransactOpts, minter) +} + +func (_LinkToken *LinkTokenTransactorSession) GrantMintRole(minter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.GrantMintRole(&_LinkToken.TransactOpts, minter) +} + +func (_LinkToken *LinkTokenTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +func (_LinkToken *LinkTokenSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.IncreaseAllowance(&_LinkToken.TransactOpts, spender, addedValue) +} + +func (_LinkToken *LinkTokenTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.IncreaseAllowance(&_LinkToken.TransactOpts, spender, addedValue) +} + +func (_LinkToken *LinkTokenTransactor) IncreaseApproval(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "increaseApproval", spender, addedValue) +} + +func (_LinkToken *LinkTokenSession) IncreaseApproval(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.IncreaseApproval(&_LinkToken.TransactOpts, spender, addedValue) +} + +func (_LinkToken *LinkTokenTransactorSession) IncreaseApproval(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.IncreaseApproval(&_LinkToken.TransactOpts, spender, addedValue) +} + +func (_LinkToken *LinkTokenTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "mint", account, amount) +} + +func (_LinkToken *LinkTokenSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Mint(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Mint(&_LinkToken.TransactOpts, account, amount) +} + +func (_LinkToken *LinkTokenTransactor) RevokeBurnRole(opts *bind.TransactOpts, burner common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "revokeBurnRole", burner) +} + +func (_LinkToken *LinkTokenSession) RevokeBurnRole(burner common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.RevokeBurnRole(&_LinkToken.TransactOpts, burner) +} + +func (_LinkToken *LinkTokenTransactorSession) RevokeBurnRole(burner common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.RevokeBurnRole(&_LinkToken.TransactOpts, burner) +} + +func (_LinkToken *LinkTokenTransactor) RevokeMintRole(opts *bind.TransactOpts, minter common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "revokeMintRole", minter) +} + +func (_LinkToken *LinkTokenSession) RevokeMintRole(minter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.RevokeMintRole(&_LinkToken.TransactOpts, minter) +} + +func (_LinkToken *LinkTokenTransactorSession) RevokeMintRole(minter common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.RevokeMintRole(&_LinkToken.TransactOpts, minter) +} + +func (_LinkToken *LinkTokenTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "transfer", to, amount) +} + +func (_LinkToken *LinkTokenSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Transfer(&_LinkToken.TransactOpts, to, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.Transfer(&_LinkToken.TransactOpts, to, amount) +} + +func (_LinkToken *LinkTokenTransactor) TransferAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "transferAndCall", to, amount, data) +} + +func (_LinkToken *LinkTokenSession) TransferAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _LinkToken.Contract.TransferAndCall(&_LinkToken.TransactOpts, to, amount, data) +} + +func (_LinkToken *LinkTokenTransactorSession) TransferAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _LinkToken.Contract.TransferAndCall(&_LinkToken.TransactOpts, to, amount, data) +} + +func (_LinkToken *LinkTokenTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "transferFrom", from, to, amount) +} + +func (_LinkToken *LinkTokenSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.TransferFrom(&_LinkToken.TransactOpts, from, to, amount) +} + +func (_LinkToken *LinkTokenTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _LinkToken.Contract.TransferFrom(&_LinkToken.TransactOpts, from, to, amount) +} + +func (_LinkToken *LinkTokenTransactor) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _LinkToken.contract.Transact(opts, "transferOwnership", to) +} + +func (_LinkToken *LinkTokenSession) TransferOwnership(to common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.TransferOwnership(&_LinkToken.TransactOpts, to) +} + +func (_LinkToken *LinkTokenTransactorSession) TransferOwnership(to common.Address) (*types.Transaction, error) { + return _LinkToken.Contract.TransferOwnership(&_LinkToken.TransactOpts, to) +} + +type LinkTokenApprovalIterator struct { + Event *LinkTokenApproval + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenApprovalIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenApprovalIterator) Error() error { + return it.fail +} + +func (it *LinkTokenApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*LinkTokenApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &LinkTokenApprovalIterator{contract: _LinkToken.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *LinkTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenApproval) + if err := _LinkToken.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseApproval(log types.Log) (*LinkTokenApproval, error) { + event := new(LinkTokenApproval) + if err := _LinkToken.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenBurnAccessGrantedIterator struct { + Event *LinkTokenBurnAccessGranted + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenBurnAccessGrantedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenBurnAccessGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenBurnAccessGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenBurnAccessGrantedIterator) Error() error { + return it.fail +} + +func (it *LinkTokenBurnAccessGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenBurnAccessGranted struct { + Burner common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterBurnAccessGranted(opts *bind.FilterOpts, burner []common.Address) (*LinkTokenBurnAccessGrantedIterator, error) { + + var burnerRule []interface{} + for _, burnerItem := range burner { + burnerRule = append(burnerRule, burnerItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "BurnAccessGranted", burnerRule) + if err != nil { + return nil, err + } + return &LinkTokenBurnAccessGrantedIterator{contract: _LinkToken.contract, event: "BurnAccessGranted", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchBurnAccessGranted(opts *bind.WatchOpts, sink chan<- *LinkTokenBurnAccessGranted, burner []common.Address) (event.Subscription, error) { + + var burnerRule []interface{} + for _, burnerItem := range burner { + burnerRule = append(burnerRule, burnerItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "BurnAccessGranted", burnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenBurnAccessGranted) + if err := _LinkToken.contract.UnpackLog(event, "BurnAccessGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseBurnAccessGranted(log types.Log) (*LinkTokenBurnAccessGranted, error) { + event := new(LinkTokenBurnAccessGranted) + if err := _LinkToken.contract.UnpackLog(event, "BurnAccessGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenBurnAccessRevokedIterator struct { + Event *LinkTokenBurnAccessRevoked + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenBurnAccessRevokedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenBurnAccessRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenBurnAccessRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenBurnAccessRevokedIterator) Error() error { + return it.fail +} + +func (it *LinkTokenBurnAccessRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenBurnAccessRevoked struct { + Burner common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterBurnAccessRevoked(opts *bind.FilterOpts, burner []common.Address) (*LinkTokenBurnAccessRevokedIterator, error) { + + var burnerRule []interface{} + for _, burnerItem := range burner { + burnerRule = append(burnerRule, burnerItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "BurnAccessRevoked", burnerRule) + if err != nil { + return nil, err + } + return &LinkTokenBurnAccessRevokedIterator{contract: _LinkToken.contract, event: "BurnAccessRevoked", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchBurnAccessRevoked(opts *bind.WatchOpts, sink chan<- *LinkTokenBurnAccessRevoked, burner []common.Address) (event.Subscription, error) { + + var burnerRule []interface{} + for _, burnerItem := range burner { + burnerRule = append(burnerRule, burnerItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "BurnAccessRevoked", burnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenBurnAccessRevoked) + if err := _LinkToken.contract.UnpackLog(event, "BurnAccessRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseBurnAccessRevoked(log types.Log) (*LinkTokenBurnAccessRevoked, error) { + event := new(LinkTokenBurnAccessRevoked) + if err := _LinkToken.contract.UnpackLog(event, "BurnAccessRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenMintAccessGrantedIterator struct { + Event *LinkTokenMintAccessGranted + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenMintAccessGrantedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenMintAccessGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenMintAccessGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenMintAccessGrantedIterator) Error() error { + return it.fail +} + +func (it *LinkTokenMintAccessGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenMintAccessGranted struct { + Minter common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterMintAccessGranted(opts *bind.FilterOpts, minter []common.Address) (*LinkTokenMintAccessGrantedIterator, error) { + + var minterRule []interface{} + for _, minterItem := range minter { + minterRule = append(minterRule, minterItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "MintAccessGranted", minterRule) + if err != nil { + return nil, err + } + return &LinkTokenMintAccessGrantedIterator{contract: _LinkToken.contract, event: "MintAccessGranted", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchMintAccessGranted(opts *bind.WatchOpts, sink chan<- *LinkTokenMintAccessGranted, minter []common.Address) (event.Subscription, error) { + + var minterRule []interface{} + for _, minterItem := range minter { + minterRule = append(minterRule, minterItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "MintAccessGranted", minterRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenMintAccessGranted) + if err := _LinkToken.contract.UnpackLog(event, "MintAccessGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseMintAccessGranted(log types.Log) (*LinkTokenMintAccessGranted, error) { + event := new(LinkTokenMintAccessGranted) + if err := _LinkToken.contract.UnpackLog(event, "MintAccessGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenMintAccessRevokedIterator struct { + Event *LinkTokenMintAccessRevoked + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenMintAccessRevokedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenMintAccessRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenMintAccessRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenMintAccessRevokedIterator) Error() error { + return it.fail +} + +func (it *LinkTokenMintAccessRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenMintAccessRevoked struct { + Minter common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterMintAccessRevoked(opts *bind.FilterOpts, minter []common.Address) (*LinkTokenMintAccessRevokedIterator, error) { + + var minterRule []interface{} + for _, minterItem := range minter { + minterRule = append(minterRule, minterItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "MintAccessRevoked", minterRule) + if err != nil { + return nil, err + } + return &LinkTokenMintAccessRevokedIterator{contract: _LinkToken.contract, event: "MintAccessRevoked", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchMintAccessRevoked(opts *bind.WatchOpts, sink chan<- *LinkTokenMintAccessRevoked, minter []common.Address) (event.Subscription, error) { + + var minterRule []interface{} + for _, minterItem := range minter { + minterRule = append(minterRule, minterItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "MintAccessRevoked", minterRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenMintAccessRevoked) + if err := _LinkToken.contract.UnpackLog(event, "MintAccessRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseMintAccessRevoked(log types.Log) (*LinkTokenMintAccessRevoked, error) { + event := new(LinkTokenMintAccessRevoked) + if err := _LinkToken.contract.UnpackLog(event, "MintAccessRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenOwnershipTransferRequestedIterator struct { + Event *LinkTokenOwnershipTransferRequested + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenOwnershipTransferRequestedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenOwnershipTransferRequested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenOwnershipTransferRequested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenOwnershipTransferRequestedIterator) Error() error { + return it.fail +} + +func (it *LinkTokenOwnershipTransferRequestedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenOwnershipTransferRequested struct { + From common.Address + To common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterOwnershipTransferRequested(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenOwnershipTransferRequestedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "OwnershipTransferRequested", fromRule, toRule) + if err != nil { + return nil, err + } + return &LinkTokenOwnershipTransferRequestedIterator{contract: _LinkToken.contract, event: "OwnershipTransferRequested", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchOwnershipTransferRequested(opts *bind.WatchOpts, sink chan<- *LinkTokenOwnershipTransferRequested, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "OwnershipTransferRequested", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenOwnershipTransferRequested) + if err := _LinkToken.contract.UnpackLog(event, "OwnershipTransferRequested", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseOwnershipTransferRequested(log types.Log) (*LinkTokenOwnershipTransferRequested, error) { + event := new(LinkTokenOwnershipTransferRequested) + if err := _LinkToken.contract.UnpackLog(event, "OwnershipTransferRequested", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenOwnershipTransferredIterator struct { + Event *LinkTokenOwnershipTransferred + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenOwnershipTransferredIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenOwnershipTransferredIterator) Error() error { + return it.fail +} + +func (it *LinkTokenOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenOwnershipTransferred struct { + From common.Address + To common.Address + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenOwnershipTransferredIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "OwnershipTransferred", fromRule, toRule) + if err != nil { + return nil, err + } + return &LinkTokenOwnershipTransferredIterator{contract: _LinkToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *LinkTokenOwnershipTransferred, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "OwnershipTransferred", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenOwnershipTransferred) + if err := _LinkToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseOwnershipTransferred(log types.Log) (*LinkTokenOwnershipTransferred, error) { + event := new(LinkTokenOwnershipTransferred) + if err := _LinkToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenTransferIterator struct { + Event *LinkTokenTransfer + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenTransferIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenTransferIterator) Error() error { + return it.fail +} + +func (it *LinkTokenTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &LinkTokenTransferIterator{contract: _LinkToken.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *LinkTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenTransfer) + if err := _LinkToken.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseTransfer(log types.Log) (*LinkTokenTransfer, error) { + event := new(LinkTokenTransfer) + if err := _LinkToken.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type LinkTokenTransfer0Iterator struct { + Event *LinkTokenTransfer0 + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *LinkTokenTransfer0Iterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(LinkTokenTransfer0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(LinkTokenTransfer0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *LinkTokenTransfer0Iterator) Error() error { + return it.fail +} + +func (it *LinkTokenTransfer0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type LinkTokenTransfer0 struct { + From common.Address + To common.Address + Value *big.Int + Data []byte + Raw types.Log +} + +func (_LinkToken *LinkTokenFilterer) FilterTransfer0(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenTransfer0Iterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.FilterLogs(opts, "Transfer0", fromRule, toRule) + if err != nil { + return nil, err + } + return &LinkTokenTransfer0Iterator{contract: _LinkToken.contract, event: "Transfer0", logs: logs, sub: sub}, nil +} + +func (_LinkToken *LinkTokenFilterer) WatchTransfer0(opts *bind.WatchOpts, sink chan<- *LinkTokenTransfer0, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _LinkToken.contract.WatchLogs(opts, "Transfer0", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(LinkTokenTransfer0) + if err := _LinkToken.contract.UnpackLog(event, "Transfer0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_LinkToken *LinkTokenFilterer) ParseTransfer0(log types.Log) (*LinkTokenTransfer0, error) { + event := new(LinkTokenTransfer0) + if err := _LinkToken.contract.UnpackLog(event, "Transfer0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +var LinkTokenZkBin string = ("0x0002000000000002000800000000000200010000000103550000006003100270000002aa0030019d00000001002001900000003a0000c13d000002aa023001970000008003000039000000400030043f000000040020008c000004ee0000413d000000000301043b000000e003300270000002b60030009c000000570000213d000002ce0030009c0000009c0000213d000002da0030009c000001810000213d000002e00030009c000001d00000213d000002e30030009c0000034f0000613d000002e40030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000390000000106002039000000000662013f0000000100600190000000510000c13d000000800010043f000000000005004b000001f20000613d000000000030043f000000020020008c0000056d0000413d000003180200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000000310000413d000005cb0000013d0000000001000416000000000001004b000004ee0000c13d0000000f01000039000000c00010043f000002ab01000041000000e00010043f0000014001000039000000400010043f0000000406000039000001000060043f000002ac01000041000001200010043f0000000303000039000000000103041a000000010210019000000001041002700000007f0440618f0000001f0040008c00000000010000390000000101002039000000000012004b000000750000613d000002fd01000041000000000010043f0000002201000039000000040010043f000002f70100004100000aa700010430000002b70030009c000000c10000213d000002c30030009c000001980000213d000002c90030009c000001dc0000213d000002cc0030009c000003620000613d000002cd0030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000902000039000000000102041a000000800010043f000000000020043f000000000001004b000001ae0000613d000000a004000039000002f90200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b0000006d0000413d0000053c0000013d000000200040008c0000008f0000413d000400000004001d000000000030043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002ad011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b00000004020000290000001f0220003900000005022002700000000002210019000000000021004b000000040600003900000003030000390000008f0000813d000000000001041b0000000101100039000000000021004b0000008b0000413d000000e00100043d000002ae011001970000001e011001bf000000000013041b000001000400043d000002af0040009c000001430000413d000002fd01000041000000000010043f0000004101000039000000040010043f000002f70100004100000aa700010430000002cf0030009c0000019f0000213d000002d50030009c000001f80000213d000002d80030009c000003750000613d000002d90030009c000004ee0000c13d000000240020008c000004ee0000413d0000000001000416000000000001004b000004ee0000c13d0000000001000411000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b0000041c0000613d00000004010000390000000101100367000000000201043b00000000010004110aa509800000040f000000000100001900000aa60001042e000002b80030009c000001b00000213d000002be0030009c000002430000213d000002c10030009c000003960000613d000002c20030009c000004ee0000c13d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000005600000c13d0000000401000029000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b000001100000c13d0000000701000039000000000201041a000002ef0020009c000000960000213d0000000103200039000000000031041b000002f20220009a0000000403000029000000000032041b000000000101041a000300000001001d000000000030043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000203000039000002f30400004100000004050000290aa50a9b0000040f0000000100200190000004ee0000613d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000006220000c13d0000000401000029000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b0000064d0000c13d0000000901000039000000000201041a000002ef0020009c000000960000213d0000000103200039000000000031041b000002f00220009a0000000403000029000000000032041b000000000101041a000300000001001d000000000030043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000001000414000004a80000013d000000000106041a000000010010019000000001031002700000007f0330618f0000001f0030008c00000000020000390000000102002039000000000121013f0000000100100190000000510000c13d000000200030008c0000016d0000413d000300000003001d000400000004001d000000000060043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002ad011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d00000004040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000003010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000004060000390000016d0000813d000000000002041b0000000102200039000000000012004b000001690000413d0000001f0040008c000003440000a13d000400000004001d000000000060043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002ad011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d00000004070000290000031f02700198000000000101043b000004f00000c13d00000120030000390000000406000039000004ff0000013d000002db0030009c000002570000213d000002de0030009c000003da0000613d000002df0030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000001000412000800000001001d000700000000003d000080050100003900000044030000390000000004000415000000080440008a0000000504400210000002ee020000410aa50a820000040f000000ff0110018f000000800010043f000002ed0100004100000aa60001042e000002c40030009c000002e30000213d000002c70030009c000003fe0000613d000002c80030009c000003430000613d000004ee0000013d000002d00030009c000002f20000213d000002d30030009c000003430000613d000002d40030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000702000039000000000102041a000000800010043f000000000020043f000000000001004b000005320000c13d00000020020000390000053d0000013d000002b90030009c000003130000213d000002bc0030009c000004270000613d000002bd0030009c000004ee0000c13d000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000002e50020009c000004ee0000213d0000002401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d000000000020043f0000000101000039000000200010043f000000400200003900000000010000190aa50a6d0000040f0000000402000029000000000020043f000000200010043f00000000010000190000004002000039000004e00000013d000002e10030009c000004360000613d000002e20030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000201000039000000000101041a000000800010043f000002ed0100004100000aa60001042e000002ca0030009c000004550000613d000002cb0030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000390000000106002039000000000662013f0000000100600190000000510000c13d000000800010043f000000000005004b0000056a0000c13d0000032001200197000000a00010043f000000000004004b000000c001000039000000a001006039000005cc0000013d000002d60030009c0000045e0000613d000002d70030009c000004ee0000c13d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000005600000c13d0000000401000029000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000300000001001d000000000001004b0000064d0000613d0000000901000039000000000201041a000000000002004b0000033d0000613d0000000303000029000000010130008a000000000032004b0000067c0000c13d0000000302000029000002fe0220009a000000000002041b0000000902000039000000000012041b0000000401000029000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000001041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000203000039000002ff04000041000006490000013d000002bf0030009c0000046c0000613d000002c00030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000001000412000600000001001d000500200000003d000080050100003900000044030000390000000004000415000000060440008a0000000504400210000002ee020000410aa50a820000040f000000800010043f000002ed0100004100000aa60001042e000002dc0030009c000004b00000613d000002dd0030009c000004ee0000c13d000000640020008c000004ee0000413d0000000003000416000000000003004b000004ee0000c13d0000000403100370000000000303043b000400000003001d000002e50030009c000004ee0000213d0000002403100370000000000303043b000300000003001d0000004403100370000000000403043b000002ef0040009c000004ee0000213d0000002303400039000000000023004b000004ee0000813d0000000405400039000000000351034f000000000303043b000002ef0030009c000000960000213d0000001f063000390000031f066001970000003f066000390000031f06600197000003050060009c000000960000213d0000008006600039000000400060043f000000800030043f00000000043400190000002404400039000000000024004b000004ee0000213d0000002002500039000000000221034f0000031f043001980000001f0530018f000000a0014000390000028d0000613d000000a006000039000000000702034f000000007807043c0000000006860436000000000016004b000002890000c13d000000000005004b0000029a0000613d000000000242034f0000000304500210000000000501043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000210435000000a0013000390000000000010435000000040100002900000003020000290aa508850000040f000000400100043d000000200210003900000040030000390000000000320435000000030200002900000000002104350000004003100039000000800200043d000000000023043500000000070004110000006003100039000000000002004b000002b40000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000024004b000002ad0000413d0000001f042000390000031f04400197000000000232001900000000000204350000006002400039000002aa0020009c000002aa020080410000006002200210000002aa0010009c000002aa010080410000004001100210000000000112019f0000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002e8011001c70000800d0200003900000003030000390000030604000041000000000507001900000004060000290aa50a9b0000040f0000000100200190000004ee0000613d00000307010000410000000000100443000000040100002900000004001004430000000001000414000002aa0010009c000002aa01008041000000c00110021000000308011001c700008002020000390aa50aa00000040f00000001002001900000076a0000613d000000000101043b000000000001004b000007200000c13d000000400100043d000300000001001d00000001010000390000000302000029000004cd0000013d000002c50030009c000004be0000613d000002c60030009c000004ee0000c13d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000002e50010009c000004ee0000213d0aa5085d0000040f000004680000013d000002d10030009c000004d30000613d000002d20030009c000004ee0000c13d0000000001000416000000000001004b000004ee0000c13d0000000601000039000000000201041a000002e5032001970000000006000411000000000036004b000005440000c13d0000000503000039000000000403041a000002b005400197000000000565019f000000000053041b000002b002200197000000000021041b0000000001000414000002e505400197000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000303000039000002fb040000410aa50a9b0000040f00000001002001900000064d0000c13d000004ee0000013d000002ba0030009c000004e50000613d000002bb0030009c000004ee0000c13d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000005600000c13d0000000401000029000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000300000001001d000000000001004b0000064d0000613d0000000701000039000000000201041a000000000002004b000006290000c13d000002fd01000041000000000010043f0000001101000039000000040010043f000002f70100004100000aa7000104300aa507b20000040f000000000004004b0000000001000019000003480000613d000001200100043d0000000302400210000003210220027f0000032102200167000000000121016f0000000102400210000000000121019f0000050a0000013d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000201043b0000031900200198000004ee0000c13d00000001010000390000031a0020009c0000056f0000213d0000031d0020009c000004e20000613d0000031e0020009c000000000100c019000000800010043f000002ed0100004100000aa60001042e000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000400000002001d000002e50020009c000004ee0000213d0000002401100370000000000101043b000300000001001d0000000001000411000000000010043f0000000a01000039000000200010043f0000000001000414000004100000013d000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000400000002001d000002e50020009c000004ee0000213d0000002401100370000000000101043b000300000001001d0000000001000411000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b0000057f0000c13d000000400100043d00000304020000410000041e0000013d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000005600000c13d0000000401000029000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b0000064d0000c13d0000000701000039000000000201041a000002ef0020009c000000960000213d0000000103200039000000000031041b000002f20220009a0000000403000029000000000032041b000000000101041a000300000001001d000000000030043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000203000039000002f304000041000006490000013d000000640020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000400000002001d000002e50020009c000004ee0000213d0000002402100370000000000202043b000300000002001d000002e50020009c000004ee0000213d0000004401100370000000000301043b00000000020004110000000401000029000200000003001d0aa509dc0000040f0000000001000410000000030010006b000004ee0000613d000000040000006b000005df0000c13d000000400100043d00000064021000390000031003000041000000000032043500000044021000390000031103000041000000000032043500000024021000390000002503000039000006680000013d000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000400000002001d000002e50020009c000004ee0000213d0000002401100370000000000101043b000300000001001d0000000001000411000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b000005760000c13d000000400100043d000002f6020000410000000000210435000000040210003900000000030004110000000000320435000002aa0010009c000002aa010080410000004001100210000002f7011001c700000aa700010430000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000302043b000002e50030009c000004ee0000213d0000002401100370000000000201043b00000000010300190aa508fc0000040f000000000100001900000aa60001042e000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000202043b000400000002001d000002e50020009c000004ee0000213d0000002401100370000000000101043b000300000001001d0000000001000410000000040010006b000004ee0000613d0000000002000411000000000002004b000005a20000c13d000002b401000041000000800010043f0000002001000039000000840010043f0000002401000039000000a40010043f0000031601000041000000c40010043f0000031701000041000000e40010043f000003150100004100000aa7000104300000000001000416000000000001004b000004ee0000c13d0000000501000039000000000101041a000002e501100197000000800010043f000002ed0100004100000aa60001042e000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000002e50010009c000004ee0000213d0aa508710000040f000000000001004b0000000001000039000000010100c039000004cc0000013d000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000400000001001d000002e50010009c000004ee0000213d0000000501000039000000000101041a000002e5011001970000000002000411000000000012004b000005600000c13d0000000401000029000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a000000000001004b0000064d0000c13d0000000901000039000000000201041a000002ef0020009c000000960000213d0000000103200039000000000031041b000002f00220009a0000000403000029000000000032041b000000000101041a000300000001001d000000000030043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000203000039000002f104000041000006490000013d000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000302043b000002e50030009c000004ee0000213d0000002401100370000000000201043b00000000010300190aa508fc0000040f000004cb0000013d000000440020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000402100370000000000302043b000002e50030009c000004ee0000213d0000002401100370000000000201043b00000000010300190aa508850000040f0000000101000039000000400200043d0000000000120435000002aa0020009c000002aa020080410000004001200210000002f5011001c700000aa60001042e000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000101043b000002e50010009c000004ee0000213d000000000010043f000000200000043f000000400200003900000000010000190aa50a6d0000040f000000000101041a000000800010043f000002ed0100004100000aa60001042e000000240020008c000004ee0000413d0000000002000416000000000002004b000004ee0000c13d0000000401100370000000000601043b000002e50060009c0000054e0000a13d000000000100001900000aa700010430000000010320008a00000005033002700000000003310019000000200400003900000001033000390000000406000039000000000504001900000100044000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b000004f60000c13d0000012003500039000000000072004b000005080000813d0000000302700210000000f80220018f000003210220027f00000321022001670000000003030433000000000223016f000000000021041b000000010170021000000001011001bf000000000016041b0000000001000411000000000001004b0000051f0000c13d000000400100043d0000004402100039000002b3030000410000000000320435000000240210003900000018030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa010080410000004001100210000002b5011001c700000aa7000104300000000502000039000000000302041a000002b003300197000000000113019f000000000012041b0000001201000039000000800010043f000002b102000041000000a00020043f0000014000000443000001600010044300000020010000390000018000100443000001a000200443000001000010044300000002010000390000012000100443000002b20100004100000aa60001042e000000a004000039000002fc0200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b000005350000413d000000600250008a00000080010000390aa507a00000040f000000400100043d000400000001001d00000080020000390aa5084d0000040f000005d50000013d000002b401000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f000002fa01000041000000c40010043f000002ec0100004100000aa7000104300000000501000039000000000101041a000002e5011001970000000005000411000000000015004b000005600000c13d000000000056004b000005b00000c13d000002b401000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f000002eb01000041000000c40010043f000002ec0100004100000aa700010430000002b401000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f000002f401000041000000c40010043f000002ec0100004100000aa700010430000000000030043f000000020020008c000005c10000813d000000a001000039000005cc0000013d0000031b0020009c000004e20000613d0000031c0020009c000004e20000613d000000800000043f000002ed0100004100000aa60001042e0000000401000029000000000200041100000003030000290aa509dc0000040f000000040100002900000003020000290aa509800000040f000000000100001900000aa60001042e0000000001000410000000040010006b000004ee0000613d000002ee01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000002aa0010009c000002aa01008041000000c00110021000000300011001c700008005020000390aa50aa00000040f00000001002001900000076a0000613d000000000101043b000000000001004b000006730000613d0000000202000039000000000202041a0000000303000029000000000032001a0000033d0000413d0000000002320019000000000012004b000006730000a13d000000400100043d0000030103000041000000000031043500000004031000390000000000230435000004220000013d000000040000006b000005eb0000c13d000002b401000041000000800010043f0000002001000039000000840010043f0000002201000039000000a40010043f0000031301000041000000c40010043f0000031401000041000000e40010043f000003150100004100000aa7000104300000000601000039000000000201041a000002b002200197000000000262019f000000000021041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000303000039000002ea040000410aa50a9b0000040f00000001002001900000064d0000c13d000004ee0000013d000002f80200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000005c30000413d000000c001300039000000800210008a00000080010000390aa507a00000040f0000002001000039000000400200043d000400000002001d000000000212043600000080010000390aa5078e0000040f00000004020000290000000001210049000002aa0010009c000002aa010080410000006001100210000002aa0020009c000002aa020080410000004002200210000000000121019f00000aa60001042e000000030000006b0000064f0000c13d000000400100043d00000064021000390000030e03000041000000000032043500000044021000390000030f03000041000000000032043500000024021000390000002303000039000006680000013d000000000020043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000402000029000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b000000400100043d0000000000210435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000031204000041000000000500041100000004060000290aa50a9b0000040f0000000100200190000004ee0000613d000000400100043d00000001020000390000000000210435000002aa0010009c000002aa010080410000004001100210000002f5011001c700000aa60001042e000000400100043d0000004402100039000002f403000041000000000032043500000024021000390000001603000039000005140000013d0000000303000029000000010130008a000000000032004b0000069a0000c13d0000000302000029000002e70220009a000000000002041b0000000702000039000000000012041b0000000401000029000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000001041b0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e8011001c70000800d020000390000000203000039000002e90400004100000004050000290aa50a9b0000040f0000000100200190000004ee0000613d000000000100001900000aa60001042e0000000401000029000000000010043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000101041a0001000200100074000006ed0000813d000000400100043d00000064021000390000030b03000041000000000032043500000044021000390000030c030000410000000000320435000000240210003900000026030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa700010430000000040000006b000006c10000c13d000000400100043d00000044021000390000030303000041000000000032043500000024021000390000001f03000039000005140000013d000000000012004b000006bb0000a13d0000000301000029000002fe0110009a000002fe0220009a000000000202041a000000000021041b000000000020043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000901000039000000000101041a000300000001001d000000000001004b000006b50000613d0000000301000029000000010110008a000002260000013d000000000012004b000006bb0000a13d0000000301000029000002e70110009a000002e70220009a000000000202041a000000000021041b000000000020043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000302000029000000000021041b0000000701000039000000000101041a000300000001001d000000000001004b0000076b0000c13d000002fd01000041000000000010043f0000003101000039000000040010043f000002f70100004100000aa700010430000002fd01000041000000000010043f0000003201000039000000040010043f000002f70100004100000aa7000104300000000201000039000000000201041a0000000303000029000000000032001a0000033d0000413d0000000002320019000000000021041b0000000401000029000000000010043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000201041a00000003030000290000000002320019000000000021041b000000400100043d0000000000310435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000030204000041000000000500001900000004060000290aa50a9b0000040f00000001002001900000064d0000c13d000004ee0000013d0000000401000029000000000010043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b0000000102000029000000000021041b0000000301000029000000000010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000004ee0000613d000000000101043b000000000201041a00000002030000290000000002320019000000000021041b000000400100043d0000000000310435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000030204000041000000040500002900000003060000290aa50a9b0000040f00000001002001900000061a0000c13d000004ee0000013d00000307010000410000000000100443000000040100002900000004001004430000000001000414000002aa0010009c000002aa01008041000000c00110021000000308011001c700008002020000390aa50aa00000040f00000001002001900000076a0000613d000000000101043b000000000001004b000004ee0000613d000000400300043d000000440130003900000060020000390000000000210435000000240130003900000003020000290000000000210435000003090100004100000000001304350000000401300039000000000200041100000000002104350000006402300039000000800100043d0000000000120435000300000003001d0000008402300039000000000001004b0000074b0000613d00000000030000190000000004230019000000a005300039000000000505043300000000005404350000002003300039000000000013004b000007440000413d0000000002210019000000000002043500000000020004140000000403000029000000040030008c000007640000613d0000001f011000390000031f011001970000008401100039000002aa0010009c000002aa0100804100000060011002100000000303000029000002aa0030009c000002aa030080410000004003300210000000000131019f000002aa0020009c000002aa02008041000000c002200210000000000112019f00000004020000290aa50a9b0000040f00000001002001900000076e0000613d0000000301000029000002ef0010009c000000960000213d0000000301000029000000400010043f000002e00000013d000000000001042f0000000301000029000000010110008a0000062d0000013d00000060061002700000001f0460018f0000030a05600198000000400200043d00000000035200190000077a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000007760000c13d000002aa06600197000000000004004b000007880000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000006001600210000002aa0020009c000002aa020080410000004002200210000000000112019f00000aa70001043000000000430104340000000001320436000000000003004b0000079a0000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000007930000413d000000000231001900000000000204350000001f023000390000031f022001970000000001210019000000000001042d0000001f022000390000031f022001970000000001120019000000000021004b00000000020000390000000102004039000002ef0010009c000007ac0000213d0000000100200190000007ac0000c13d000000400010043f000000000001042d000002fd01000041000000000010043f0000004101000039000000040010043f000002f70100004100000aa70001043000020000000000020000000001000416000000000001004b000007f90000c13d0000000001000031000003220010009c000007f90000213d000000430010008c000007f90000a13d00000001010003670000000402100370000000000202043b000200000002001d000002e50020009c000007f90000213d0000002401100370000000000101043b000100000001001d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000007f90000613d000000000101043b0000000202000029000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000007f90000613d000000000101043b000000000101041a000000010310006c000007f60000813d000000400100043d000000640210003900000323030000410000000000320435000000440210003900000324030000410000000000320435000000240210003900000025030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa7000104300000000001000410000000020010006b000007fb0000c13d000000000100001900000aa7000104300000000001000411000000000001004b000008080000c13d000000400100043d00000064021000390000031703000041000000000032043500000044021000390000031603000041000000000032043500000024021000390000002403000039000007eb0000013d000000020000006b000008140000c13d000000400100043d00000064021000390000031403000041000000000032043500000044021000390000031303000041000000000032043500000024021000390000002203000039000007eb0000013d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c70000801002000039000100000003001d0aa50aa00000040f0000000100200190000007f90000613d000000000101043b0000000202000029000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001030000290000000100200190000007f90000613d000000000101043b000000000031041b000000400100043d0000000000310435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000031204000041000000000500041100000002060000290aa50a9b0000040f0000000100200190000007f90000613d000000400100043d00000001020000390000000000210435000002aa0010009c000002aa010080410000004001100210000002f5011001c700000aa60001042e00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000003004b0000085c0000613d000000000400001900000020022000390000000005020433000002e50550019700000000015104360000000104400039000000000034004b000008550000413d000000000001042d000000000010043f0000000801000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001002001900000086f0000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d000000000100001900000aa700010430000000000010043f0000000a01000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000008830000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d000000000100001900000aa7000104300003000000000002000200000002001d000302e50010019b0000000001000410000000030010006b000008d20000613d0000000002000411000000000002004b000008d40000613d000000030000006b000008de0000613d000000000020043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000008d20000613d000000000101043b000000000101041a0001000200100074000008e80000413d0000000001000411000000000010043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000008d20000613d000000000101043b0000000102000029000000000021041b0000000301000029000000000010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000008d20000613d000000000101043b000000000201041a00000002030000290000000002320019000000000021041b000000400100043d0000000000310435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000030204000041000000000500041100000003060000290aa50a9b0000040f0000000100200190000008d20000613d000000000001042d000000000100001900000aa700010430000000400100043d00000064021000390000031003000041000000000032043500000044021000390000031103000041000000000032043500000024021000390000002503000039000008f10000013d000000400100043d00000064021000390000030e03000041000000000032043500000044021000390000030f03000041000000000032043500000024021000390000002303000039000008f10000013d000000400100043d00000064021000390000030b03000041000000000032043500000044021000390000030c030000410000000000320435000000240210003900000026030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa7000104300003000000000002000200000002001d000300000001001d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001002001900000095a0000613d000000000101043b0000000302000029000002e502200197000300000002001d000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001002001900000095a0000613d000000000101043b000000000201041a000000020020002a0000097a0000413d000100000002001d0000000001000410000000030010006b0000095a0000613d0000000001000411000000000001004b0000095c0000613d000000030000006b000009660000613d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001002001900000095a0000613d000000000101043b0000000302000029000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f00000001002001900000095a0000613d00000001030000290000000202300029000000000101043b000000000021041b000000400100043d0000000000210435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000031204000041000000000500041100000003060000290aa50a9b0000040f00000001002001900000095a0000613d000000000001042d000000000100001900000aa700010430000000400100043d000000640210003900000317030000410000000000320435000000440210003900000316030000410000000000320435000000240210003900000024030000390000096f0000013d000000400100043d000000640210003900000314030000410000000000320435000000440210003900000313030000410000000000320435000000240210003900000022030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa700010430000002fd01000041000000000010043f0000001101000039000000040010043f000002f70100004100000aa7000104300003000000000002000300000002001d000002e503100198000009be0000613d000000000030043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c70000801002000039000200000003001d0aa50aa00000040f0000000100200190000009bc0000613d0000000202000029000000000101043b000000000101041a0001000300100074000009c80000413d000000000020043f000000200000043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f0000000100200190000009bc0000613d000000000101043b0000000102000029000000000021041b0000000201000039000000000201041a00000003030000290000000002320049000000000021041b000000400100043d0000000000310435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000030204000041000000020500002900000000060000190aa50a9b0000040f0000000100200190000009bc0000613d000000000001042d000000000100001900000aa700010430000000400100043d00000064021000390000032703000041000000000032043500000044021000390000032803000041000000000032043500000024021000390000002103000039000009d10000013d000000400100043d000000640210003900000325030000410000000000320435000000440210003900000326030000410000000000320435000000240210003900000022030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa7000104300003000000000002000100000003001d000300000002001d000002e501100197000200000001001d000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f000000010020019000000a3b0000613d000000000101043b0000000302000029000002e502200197000300000002001d000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f000000010020019000000a3b0000613d000000000101043b000000000101041a000003210010009c00000a3a0000613d000000010110006c00000a3d0000413d000100000001001d0000000001000410000000030010006b00000a3b0000613d000000020000006b00000a4e0000613d000000030000006b00000a580000613d0000000201000029000000000010043f0000000101000039000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f000000010020019000000a3b0000613d000000000101043b0000000302000029000000000020043f000000200010043f0000000001000414000002aa0010009c000002aa01008041000000c001100210000002e6011001c700008010020000390aa50aa00000040f000000010020019000000a3b0000613d000000000101043b0000000102000029000000000021041b000000400100043d0000000000210435000002aa0010009c000002aa0100804100000040011002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002ad011001c70000800d0200003900000003030000390000031204000041000000020500002900000003060000290aa50a9b0000040f000000010020019000000a3b0000613d000000000001042d000000000100001900000aa700010430000000400100043d00000044021000390000032903000041000000000032043500000024021000390000001d030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa010080410000004001100210000002b5011001c700000aa700010430000000400100043d0000006402100039000003170300004100000000003204350000004402100039000003160300004100000000003204350000002402100039000000240300003900000a610000013d000000400100043d000000640210003900000314030000410000000000320435000000440210003900000313030000410000000000320435000000240210003900000022030000390000000000320435000002b4020000410000000000210435000000040210003900000020030000390000000000320435000002aa0010009c000002aa0100804100000040011002100000030d011001c700000aa700010430000000000001042f000002aa0010009c000002aa010080410000004001100210000002aa0020009c000002aa020080410000006002200210000000000112019f0000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f000002e8011001c700008010020000390aa50aa00000040f000000010020019000000a800000613d000000000101043b000000000001042d000000000100001900000aa70001043000000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00000a850000413d000002aa0030009c000002aa0300804100000060013002100000000002000414000002aa0020009c000002aa02008041000000c002200210000000000112019f0000032a011001c700000000020500190aa50aa00000040f000000010020019000000a9a0000613d000000000101043b000000000001042d000000000001042f00000a9e002104210000000102000039000000000001042d0000000002000019000000000001042d00000aa3002104230000000102000039000000000001042d0000000002000019000000000001042d00000aa50000043200000aa60001042e00000aa70001043000000000000000000000000000000000000000000000000000000000ffffffff436861696e4c696e6b20546f6b656e00000000000000000000000000000000004c494e4b000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000002000000000000000000000000000000c000000100000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000079cc678f00000000000000000000000000000000000000000000000000000000c2e3273c00000000000000000000000000000000000000000000000000000000d73dd62200000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f81094f300000000000000000000000000000000000000000000000000000000d73dd62300000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000c64d0ebb00000000000000000000000000000000000000000000000000000000c64d0ebc00000000000000000000000000000000000000000000000000000000d5abeb0100000000000000000000000000000000000000000000000000000000c2e3273d00000000000000000000000000000000000000000000000000000000c630948d000000000000000000000000000000000000000000000000000000009dc29fab00000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000aa271e1a000000000000000000000000000000000000000000000000000000009dc29fac00000000000000000000000000000000000000000000000000000000a457c2d7000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000079cc67900000000000000000000000000000000000000000000000000000000086fe8b430000000000000000000000000000000000000000000000000000000040c10f1800000000000000000000000000000000000000000000000000000000661884620000000000000000000000000000000000000000000000000000000070a082300000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000066188463000000000000000000000000000000000000000000000000000000006b32810b0000000000000000000000000000000000000000000000000000000043346149000000000000000000000000000000000000000000000000000000004334614a000000000000000000000000000000000000000000000000000000004f5632f80000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000042966c680000000000000000000000000000000000000000000000000000000023b872dc00000000000000000000000000000000000000000000000000000000395093500000000000000000000000000000000000000000000000000000000039509351000000000000000000000000000000000000000000000000000000004000aea00000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0200000000000000000000000000000000000040000000000000000000000000599336d74a1247d50642b66dd6abeaa5484f6bd96b415b31bb99e26578c939790200000000000000000000000000000000000000000000000000000000000000ed998b960f6340d045f620c119730f7aa7995e7425c2401d3a5b64ff998a59e9ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c6600000000000000000000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e000000000000000000000000000000000000000000000000ffffffffffffffff91eabfe8e493f369f48e58fdf2609ff8809506ce57440a6f25fddc25308a385192308bb7573b2a3d17ddb868b39d8ebec433f3194421abc22d084f89658c9bad599336d74a1247d50642b66dd6abeaa5484f6bd96b415b31bb99e26578c93978e46fef8bbff1389d9010703cf8ebb363fb3daf5bf56edc27080b67bc8d9251ea4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000000000000000000000000000000000000000000020000000000000000000000000c820b10b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af4d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6884e487b710000000000000000000000000000000000000000000000000000000091eabfe8e493f369f48e58fdf2609ff8809506ce57440a6f25fddc25308a38520a675452746933cefe3d74182e78db7afe57ba60eaa4234b5d85e9aa41b0610c0200000200000000000000000000000000000044000000000000000000000000cbbf111300000000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f206164647265737300e2c8c9d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c161806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000a4c0ed360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffe0616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e74206578636565647320620000000000000000000000000000000000000084000000000000000000000000657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f2061648c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92545524332303a20617070726f766520746f20746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000ae9fffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000aea000000000000000000000000000000000000000000000000000000000e6599b4d0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000036372b0700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77636500000000000000000000000000000000000000000000000000000000000045524332303a206275726e20616d6f756e7420657863656564732062616c616e730000000000000000000000000000000000000000000000000000000000000045524332303a206275726e2066726f6d20746865207a65726f2061646472657345524332303a20696e73756666696369656e7420616c6c6f77616e636500000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eb5af27c73011fcd42467775e31007ee225265fad950ec80e4551fd770a5b3bc") + +func (_LinkToken *LinkToken) ParseLog(log types.Log) (generated.AbigenLog, error) { + switch log.Topics[0] { + case _LinkToken.abi.Events["Approval"].ID: + return _LinkToken.ParseApproval(log) + case _LinkToken.abi.Events["BurnAccessGranted"].ID: + return _LinkToken.ParseBurnAccessGranted(log) + case _LinkToken.abi.Events["BurnAccessRevoked"].ID: + return _LinkToken.ParseBurnAccessRevoked(log) + case _LinkToken.abi.Events["MintAccessGranted"].ID: + return _LinkToken.ParseMintAccessGranted(log) + case _LinkToken.abi.Events["MintAccessRevoked"].ID: + return _LinkToken.ParseMintAccessRevoked(log) + case _LinkToken.abi.Events["OwnershipTransferRequested"].ID: + return _LinkToken.ParseOwnershipTransferRequested(log) + case _LinkToken.abi.Events["OwnershipTransferred"].ID: + return _LinkToken.ParseOwnershipTransferred(log) + case _LinkToken.abi.Events["Transfer"].ID: + return _LinkToken.ParseTransfer(log) + case _LinkToken.abi.Events["Transfer0"].ID: + return _LinkToken.ParseTransfer0(log) + + default: + return nil, fmt.Errorf("abigen wrapper received unknown log topic: %v", log.Topics[0]) + } +} + +func (LinkTokenApproval) Topic() common.Hash { + return common.HexToHash("0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925") +} + +func (LinkTokenBurnAccessGranted) Topic() common.Hash { + return common.HexToHash("0x92308bb7573b2a3d17ddb868b39d8ebec433f3194421abc22d084f89658c9bad") +} + +func (LinkTokenBurnAccessRevoked) Topic() common.Hash { + return common.HexToHash("0x0a675452746933cefe3d74182e78db7afe57ba60eaa4234b5d85e9aa41b0610c") +} + +func (LinkTokenMintAccessGranted) Topic() common.Hash { + return common.HexToHash("0xe46fef8bbff1389d9010703cf8ebb363fb3daf5bf56edc27080b67bc8d9251ea") +} + +func (LinkTokenMintAccessRevoked) Topic() common.Hash { + return common.HexToHash("0xed998b960f6340d045f620c119730f7aa7995e7425c2401d3a5b64ff998a59e9") +} + +func (LinkTokenOwnershipTransferRequested) Topic() common.Hash { + return common.HexToHash("0xed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278") +} + +func (LinkTokenOwnershipTransferred) Topic() common.Hash { + return common.HexToHash("0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0") +} + +func (LinkTokenTransfer) Topic() common.Hash { + return common.HexToHash("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") +} + +func (LinkTokenTransfer0) Topic() common.Hash { + return common.HexToHash("0xe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16") +} + +func (_LinkToken *LinkToken) Address() common.Address { + return _LinkToken.address +} + +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncLinkToken(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *LinkToken, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(LinkTokenZkBin) + fmt.Println("deploying") + LinkTokenAbi, err := LinkTokenMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := LinkTokenAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := LinkTokenMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &LinkToken{address: address, abi: *parsed, LinkTokenCaller: LinkTokenCaller{contract: contractBind}, LinkTokenTransactor: LinkTokenTransactor{contract: contractBind}, LinkTokenFilterer: LinkTokenFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + +type LinkTokenInterface interface { + Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) + + BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) + + Decimals(opts *bind.CallOpts) (uint8, error) + + GetBurners(opts *bind.CallOpts) ([]common.Address, error) + + GetMinters(opts *bind.CallOpts) ([]common.Address, error) + + IsBurner(opts *bind.CallOpts, burner common.Address) (bool, error) + + IsMinter(opts *bind.CallOpts, minter common.Address) (bool, error) + + MaxSupply(opts *bind.CallOpts) (*big.Int, error) + + Name(opts *bind.CallOpts) (string, error) + + Owner(opts *bind.CallOpts) (common.Address, error) + + SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) + + Symbol(opts *bind.CallOpts) (string, error) + + TotalSupply(opts *bind.CallOpts) (*big.Int, error) + + AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) + + Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) + + Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) + + Burn0(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) + + BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) + + DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) + + DecreaseApproval(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) + + GrantBurnRole(opts *bind.TransactOpts, burner common.Address) (*types.Transaction, error) + + GrantMintAndBurnRoles(opts *bind.TransactOpts, burnAndMinter common.Address) (*types.Transaction, error) + + GrantMintRole(opts *bind.TransactOpts, minter common.Address) (*types.Transaction, error) + + IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) + + IncreaseApproval(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) + + Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) + + RevokeBurnRole(opts *bind.TransactOpts, burner common.Address) (*types.Transaction, error) + + RevokeMintRole(opts *bind.TransactOpts, minter common.Address) (*types.Transaction, error) + + Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) + + TransferAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) + + TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) + + TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) + + FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*LinkTokenApprovalIterator, error) + + WatchApproval(opts *bind.WatchOpts, sink chan<- *LinkTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) + + ParseApproval(log types.Log) (*LinkTokenApproval, error) + + FilterBurnAccessGranted(opts *bind.FilterOpts, burner []common.Address) (*LinkTokenBurnAccessGrantedIterator, error) + + WatchBurnAccessGranted(opts *bind.WatchOpts, sink chan<- *LinkTokenBurnAccessGranted, burner []common.Address) (event.Subscription, error) + + ParseBurnAccessGranted(log types.Log) (*LinkTokenBurnAccessGranted, error) + + FilterBurnAccessRevoked(opts *bind.FilterOpts, burner []common.Address) (*LinkTokenBurnAccessRevokedIterator, error) + + WatchBurnAccessRevoked(opts *bind.WatchOpts, sink chan<- *LinkTokenBurnAccessRevoked, burner []common.Address) (event.Subscription, error) + + ParseBurnAccessRevoked(log types.Log) (*LinkTokenBurnAccessRevoked, error) + + FilterMintAccessGranted(opts *bind.FilterOpts, minter []common.Address) (*LinkTokenMintAccessGrantedIterator, error) + + WatchMintAccessGranted(opts *bind.WatchOpts, sink chan<- *LinkTokenMintAccessGranted, minter []common.Address) (event.Subscription, error) + + ParseMintAccessGranted(log types.Log) (*LinkTokenMintAccessGranted, error) + + FilterMintAccessRevoked(opts *bind.FilterOpts, minter []common.Address) (*LinkTokenMintAccessRevokedIterator, error) + + WatchMintAccessRevoked(opts *bind.WatchOpts, sink chan<- *LinkTokenMintAccessRevoked, minter []common.Address) (event.Subscription, error) + + ParseMintAccessRevoked(log types.Log) (*LinkTokenMintAccessRevoked, error) + + FilterOwnershipTransferRequested(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenOwnershipTransferRequestedIterator, error) + + WatchOwnershipTransferRequested(opts *bind.WatchOpts, sink chan<- *LinkTokenOwnershipTransferRequested, from []common.Address, to []common.Address) (event.Subscription, error) + + ParseOwnershipTransferRequested(log types.Log) (*LinkTokenOwnershipTransferRequested, error) + + FilterOwnershipTransferred(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenOwnershipTransferredIterator, error) + + WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *LinkTokenOwnershipTransferred, from []common.Address, to []common.Address) (event.Subscription, error) + + ParseOwnershipTransferred(log types.Log) (*LinkTokenOwnershipTransferred, error) + + FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenTransferIterator, error) + + WatchTransfer(opts *bind.WatchOpts, sink chan<- *LinkTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) + + ParseTransfer(log types.Log) (*LinkTokenTransfer, error) + + FilterTransfer0(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*LinkTokenTransfer0Iterator, error) + + WatchTransfer0(opts *bind.WatchOpts, sink chan<- *LinkTokenTransfer0, from []common.Address, to []common.Address) (event.Subscription, error) + + ParseTransfer0(log types.Log) (*LinkTokenTransfer0, error) + + ParseLog(log types.Log) (generated.AbigenLog, error) + + Address() common.Address +} diff --git a/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go b/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go index 275f9c7a38..fa26ed7b34 100644 --- a/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go +++ b/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go @@ -4,6 +4,7 @@ package lock_release_token_pool import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -90,7 +95,21 @@ var LockReleaseTokenPoolABI = LockReleaseTokenPoolMetaData.ABI var LockReleaseTokenPoolBin = LockReleaseTokenPoolMetaData.Bin -func DeployLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.ContractBackend, token common.Address, allowlist []common.Address, rmnProxy common.Address, acceptLiquidity bool, router common.Address) (common.Address, *types.Transaction, *LockReleaseTokenPool, error) { +func DeployLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.ContractBackend, token common.Address, allowlist []common.Address, rmnProxy common.Address, acceptLiquidity bool, router common.Address) (common.Address, *CustomTransaction, *LockReleaseTokenPool, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncLockReleaseTokenPool(auth, backend, token, allowlist, rmnProxy, acceptLiquidity, router) + } + parsed, err := LockReleaseTokenPoolMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -103,7 +122,7 @@ func DeployLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.ContractBa if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &LockReleaseTokenPool{address: address, abi: *parsed, LockReleaseTokenPoolCaller: LockReleaseTokenPoolCaller{contract: contract}, LockReleaseTokenPoolTransactor: LockReleaseTokenPoolTransactor{contract: contract}, LockReleaseTokenPoolFilterer: LockReleaseTokenPoolFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &LockReleaseTokenPool{address: address, abi: *parsed, LockReleaseTokenPoolCaller: LockReleaseTokenPoolCaller{contract: contract}, LockReleaseTokenPoolTransactor: LockReleaseTokenPoolTransactor{contract: contract}, LockReleaseTokenPoolFilterer: LockReleaseTokenPoolFilterer{contract: contract}}, nil } type LockReleaseTokenPool struct { @@ -3059,6 +3078,8 @@ func (_LockReleaseTokenPool *LockReleaseTokenPoolFilterer) ParseTokensConsumed(l return event, nil } +var LockReleaseTokenPoolZkBin string = ("0x000400000000000200180000000000020000006003100270000005990030019d0000059903300197000300000031035500020000000103550000000100200190000000260000c13d0000008004000039000000400040043f000000040030008c0000004a0000413d000000000201043b000000e002200270000005aa0020009c0000004c0000213d000005c20020009c000000ef0000213d000005ce0020009c0000018f0000213d000005d40020009c000001f70000213d000005d70020009c000007310000613d000005d80020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b0000059d0010009c0000004a0000213d165f12170000040f000001c00000013d0000010004000039000000400040043f0000000002000416000000000002004b0000004a0000c13d0000001f023000390000059a022001970000010002200039000000400020043f0000001f0530018f0000059b063001980000010002600039000000380000613d000000000701034f000000007807043c0000000004840436000000000024004b000000340000c13d000000000005004b000000450000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000a00030008c0000004a0000413d000001000100043d0000059c0010009c000001480000a13d00000000010000190000166100010430000005ab0020009c000001610000213d000005b70020009c000001b00000213d000005bd0020009c0000020f0000213d000005c00020009c000007420000613d000005c10020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000502043b0000059d0050009c0000004a0000213d0000000002530049000005e70020009c0000004a0000213d000000a40020008c0000004a0000413d0000006002000039000000800020043f000000a00020043f0000016002000039000000400020043f0000000404500039000000000641034f000000000606043b0000059d0060009c0000004a0000213d00000000065600190000002305600039000000000035004b0000004a0000813d0000000407600039000000000571034f000000000505043b0000059d0050009c0000015b0000213d0000001f095000390000062f099001970000003f099000390000062f09900197000006070090009c0000015b0000213d0000016009900039000000400090043f000001600050043f00000000065600190000002406600039000000000036004b0000004a0000213d0000002003700039000000000631034f0000062f075001980000001f0850018f0000018003700039000000900000613d0000018009000039000000000a06034f00000000ab0a043c0000000009b90436000000000039004b0000008c0000c13d000000000008004b0000009d0000613d000000000676034f0000000307800210000000000803043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f000000000063043500000180035000390000000000030435000000c00020043f000e00200040003d0000000e02100360000000000202043b0000059d0020009c0000004a0000213d000000e00020043f0000000e020000290000002002200039000000000321034f000000000303043b0000059c0030009c0000004a0000213d000001000030043f0000004003200039000000000331034f0000002002200039000000000121034f000000000101043b000c00000001001d000001200010043f000000000103043b000d00000001001d0000059c0010009c0000004a0000213d0000000d01000029000001400010043f000005dd0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000400200043d000b00000002001d0000000402200039000000000101043b0000059c011001970000000d0010006b00000d860000c13d000000e00100043d00000609030000410000000b04000029000000000034043500000080011002100000060a011001970000000000120435000005dd01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000000201043b00000000010004140000059c02200197000000040020008c00000e4f0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000e790000013d000005c30020009c000001c70000213d000005c90020009c0000024f0000213d000005cc0020009c000007470000613d000005cd0020009c0000004a0000c13d000000440030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b000e00000002001d0000059c0020009c0000004a0000213d0000002401100370000000000301043b000000000100041a0000059c011001970000000002000411000000000012004b00000b090000c13d000d00000003001d000006150100004100000000001004430000000e0100002900000004001004430000000001000414000005990010009c0000059901008041000000c00110021000000616011001c70000800202000039165f165a0000040f000000010020019000000ebe0000613d000000000101043b000000000001004b0000004a0000613d000000400500043d0000061701000041000000000015043500000004015000390000000d04000029000000000041043500000000010004140000000e02000029000000040020008c000001360000613d000005990050009c000005990200004100000000020540190000004002200210000005990010009c0000059901008041000000c001100210000000000121019f000005e0011001c70000000e02000029000c00000005001d165f16550000040f0000000c050000290000000d040000290000006003100270000105990030019d0003000000010355000000010020019000000c340000613d0000059d0050009c0000015b0000213d000000400050043f0000000000450435000005990050009c000005990500804100000040015002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d02000039000000020300003900000618040000410000000e0500002900000c2f0000013d000001200200043d0000059d0020009c0000004a0000213d0000001f04200039000000000034004b00000000050000190000059e050080410000059e04400197000000000004004b00000000060000190000059e060040410000059e0040009c000000000605c019000000000006004b0000004a0000c13d000001000420003900000000040404330000059d0040009c000006f10000a13d0000061a01000041000000000010043f0000004101000039000000040010043f000005e0010000410000166100010430000005ac0020009c000001e60000213d000005b20020009c000002580000213d000005b50020009c000008080000613d000005b60020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d0000059d0010009c0000004a0000213d165f12720000040f0000000e01000029000000000010043f0000000701000039000000200010043f00000040020000390000000001000019165f16220000040f000d00000001001d000000400100043d000e00000001001d165f11f30000040f0000000d05000029000000000405041a000005fe004001980000000002000039000000010200c0390000000e01000029000000400310003900000000002304350000008002400270000005990220019700000020031000390000000000230435000005ea0240019700000000002104350000000102500039000002390000013d000005cf0020009c0000069a0000213d000005d20020009c000008480000613d000005d30020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d0000059c0010009c0000004a0000213d0000000001000412001600000001001d001500000000003d000080050100003900000044030000390000000004000415000000160440008a0000000504400210000005dd02000041165f16370000040f0000059c011001970000000e0010006b00000000010000390000000101006039000000800010043f000005e601000041000016600001042e000005b80020009c000006a30000213d000005bb0020009c000008530000613d000005bc0020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b0000059d0010009c0000004a0000213d165f12870000040f0000002002000039000000400300043d000e00000003001d0000000002230436165f11cb0000040f0000000e02000029000002460000013d000005c40020009c000006bb0000213d000005c70020009c000008590000613d000005c80020009c0000004a0000c13d0000000001000416000000000001004b0000004a0000c13d0000000101000039000000000201041a0000059c032001970000000006000411000000000036004b00000b2d0000c13d000000000300041a000005a004300197000000000464019f000000000040041b000005a002200197000000000021041b00000000010004140000059c05300197000005990010009c0000059901008041000000c001100210000005d9011001c70000800d020000390000000303000039000006130400004100000c2f0000013d000005ad0020009c000006d30000213d000005b00020009c000008960000613d000005b10020009c0000004a0000c13d0000000001000416000000000001004b0000004a0000c13d0000000001000412001000000001001d000f00400000003d000080050100003900000044030000390000000004000415000000100440008a00000acc0000013d000005d50020009c000008a70000613d000005d60020009c0000004a0000c13d0000000001000416000000000001004b0000004a0000c13d000000c001000039000000400010043f0000001a01000039000000800010043f0000062301000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e002000039165f11cb0000040f000000c00110008a000005990010009c0000059901008041000000600110021000000624011001c7000016600001042e000005be0020009c000008d40000613d000005bf0020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d0000059d0010009c0000004a0000213d165f12720000040f0000000e01000029000000000010043f0000000701000039000000200010043f00000040020000390000000001000019165f16220000040f000d00000001001d000000400100043d000e00000001001d165f11f30000040f0000000d050000290000000201500039000000000401041a000005fe004001980000000002000039000000010200c0390000000e01000029000000400310003900000000002304350000008002400270000005990220019700000020031000390000000000230435000005ea0240019700000000002104350000000302500039000000000402041a000000800210003900000080034002700000000000320435000005ea0340019700000060021000390000000000320435165f13e10000040f000000400100043d000d00000001001d0000000e02000029165f11fe0000040f0000000d020000290000000001210049000005990010009c00000599010080410000006001100210000005990020009c00000599020080410000004002200210000000000121019f000016600001042e000005ca0020009c000009070000613d000005cb0020009c0000004a0000c13d0000000001000416000000000001004b0000004a0000c13d0000000801000039000008570000013d000005b30020009c000009140000613d000005b40020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b0000059d0020009c0000004a0000213d0000002304200039000000000034004b0000004a0000813d0000000404200039000000000141034f000000000101043b000300000001001d0000059d0010009c0000004a0000213d000800240020003d000000030100002900000005011002100000000801100029000000000031004b0000004a0000213d000000000100041a0000059c011001970000000002000411000000000012004b00000b090000c13d000000030000006b00000c320000613d000b00000000001d000002b90000013d000000000643001900000000000604350000000076050434000000000006004b0000000006000039000000010600c039000000400810003900000000006804350000000006070433000005ea066001970000006007100039000000000067043500000040055000390000000005050433000005ea05500197000000800610003900000000005604350000000065020434000000000005004b0000000005000039000000010500c039000000a00710003900000000005704350000000005060433000005ea05500197000000c006100039000000000056043500000040022000390000000002020433000005ea02200197000000e00510003900000000002504350000001f024000390000062f0220019700000000021200490000000002320019000005990020009c00000599020080410000006002200210000005990010009c00000599010080410000004001100210000000000112019f0000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005d9011001c70000800d020000390000000103000039000005f604000041165f16550000040f00000001002001900000004a0000613d0000000b020000290000000102200039000b00000002001d000000030020006c00000c320000813d0000000b01000029000000050110021000000008011000290000000202000367000000000112034f000000000101043b0000000004000031000000080340006a0000013f0330008a0000059e053001970000059e06100197000000000756013f000000000056004b00000000050000190000059e05004041000000000031004b00000000030000190000059e030080410000059e0070009c000000000503c019000000000005004b0000004a0000c13d00000008051000290000000001540049000005e70010009c0000004a0000213d000001400010008c0000004a0000413d000000400300043d000e00000003001d000005e80030009c0000015b0000213d0000000e03000029000000c003300039000000400030043f000000000352034f000000000303043b0000059d0030009c0000004a0000213d0000000e06000029000000000d3604360000002006500039000000000762034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b0000004a0000c13d00000000007d04350000002006600039000000000762034f000000000707043b0000059d0070009c0000004a0000213d000000000b5700190000001f07b00039000000000047004b00000000080000190000059e080080410000059e097001970000059e07400197000000000a79013f000000000079004b00000000090000190000059e090040410000059e00a0009c000000000908c019000000000009004b0000004a0000c13d0000000008b2034f000000000808043b0000059d0080009c0000015b0000213d0000001f098000390000062f099001970000003f099000390000062f0a900197000000400900043d000000000aa9001900000000009a004b000000000c000039000000010c0040390000059d00a0009c0000015b0000213d0000000100c001900000015b0000c13d0000004000a0043f000000000a890436000000200bb00039000000000cb8001900000000004c004b0000004a0000213d000900000001001d00000000010d0019000000000cb2034f0000062f0d800198000000000bda0019000003220000613d000000000e0c034f000000000f0a001900000000e30e043c000000000f3f04360000000000bf004b0000031e0000c13d0000001f0e8001900000032f0000613d0000000003dc034f000000030ce00210000000000d0b0433000000000dcd01cf000000000dcd022f000000000303043b000001000cc000890000000003c3022f0000000003c301cf0000000003d3019f00000000003b043500000000038a001900000000000304350000000e030000290000004003300039000a00000003001d00000000009304350000002006600039000000000362034f000000000803043b0000059d0080009c000000000d01001900000009010000290000004a0000213d00000000095800190000001f03900039000000000043004b00000000050000190000059e050080410000059e03300197000000000873013f000000000073004b00000000030000190000059e030040410000059e0080009c000000000305c019000000000003004b0000004a0000c13d000000000392034f000000000503043b0000059d0050009c0000015b0000213d0000001f035000390000062f033001970000003f033000390000062f03300197000000400700043d0000000008370019000000000078004b000000000a000039000000010a0040390000059d0080009c0000015b0000213d0000000100a001900000015b0000c13d000000400080043f000000000857043600000020099000390000000003950019000000000043004b0000004a0000213d000000000992034f0000062f0a5001980000000004a800190000036b0000613d000000000b09034f000000000c08001900000000b30b043c000000000c3c043600000000004c004b000003670000c13d0000001f0b500190000003780000613d0000000003a9034f0000000309b00210000000000a040433000000000a9a01cf000000000a9a022f000000000303043b0000010009900089000000000393022f00000000039301cf0000000003a3019f0000000000340435000000000358001900000000000304350000000e030000290000006003300039000c00000003001d0000000000730435000000800410008a000005e70040009c0000004a0000213d000000600040008c0000004a0000413d000000400400043d000005e90040009c0000015b0000213d0000006003400039000000400030043f0000002005600039000000000352034f000000000603043b000000000006004b0000000003000039000000010300c039000000000036004b0000004a0000c13d00000000066404360000002005500039000000000352034f000000000703043b000005ea0070009c0000004a0000213d00000000007604350000002005500039000000000352034f000000000603043b000005ea0060009c0000004a0000213d000000400340003900000000006304350000000e030000290000008003300039000d00000003001d0000000000430435000000e00110008a000005e70010009c0000004a0000213d000000600010008c0000004a0000413d000000400100043d000005e90010009c0000015b0000213d0000006003100039000000400030043f0000002005500039000000000352034f000000000403043b000000000004004b0000000003000039000000010300c039000000000034004b0000004a0000c13d00000000044104360000002005500039000000000352034f000000000603043b000005ea0060009c0000004a0000213d00000000006404350000002003500039000000000232034f000000000202043b000005ea0020009c0000004a0000213d000000400510003900000000002504350000000e02000029000000a002200039000900000002001d000000000012043500000000020d04330000000d03000029000000000303043300000040063000390000000006060433000005ea076001970000000068030434000000000008004b000003d80000613d000000000007004b00000d8c0000613d0000000006060433000005ea06600197000000000067004b00000d8c0000813d000000000002004b000003dd0000c13d00000d350000013d000000000007004b00000d7e0000c13d0000000006060433000005ea0060019800000d7e0000c13d0000000003050433000005ea033001970000000005010433000000000005004b000003eb0000613d000000000003004b00000d930000613d0000000004040433000005ea04400197000000000043004b00000d930000813d000000000002004b000003f20000c13d00000d350000013d000000000003004b00000d820000c13d0000000003040433000005ea0030019800000d820000c13d000000000002004b000005cd0000613d0000000e0100002900000000010104330000059d01100197000700000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b00000d710000c13d0000000501000039000000000101041a0000059d0010009c0000015b0000213d00000001021000390000000503000039000000000023041b000005ef0110009a0000000702000029000000000021041b000000000103041a000600000001001d000000000020043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000602000029000000000021041b0000000a0100002900000000010104330000000001010433000000000001004b00000c1a0000613d0000000c0100002900000000010104330000000001010433000000000001004b00000c1a0000613d0000000d01000029000000000201043300000040012000390000000001010433000600000001001d000700000002001d00000020012000390000000001010433000500000001001d000005f00100004100000000001004430000000001000414000005990010009c0000059901008041000000c001100210000005f1011001c70000800b02000039165f165a0000040f000000010020019000000ebe0000613d000000000201043b000000400100043d000005e20010009c0000015b0000213d0000000503000029000005ea043001970000000603000029000005ea05300197000005990320019700000007020000290000000002020433000000a006100039000000400060043f00000080061000390000000000560435000000000002004b0000000002000039000000010200c0390000004005100039000000000025043500000020021000390000000000320435000000600210003900000000004204350000000000410435000000400200043d000005e20020009c0000015b0000213d0000000904000029000000000404043300000020054000390000000005050433000000000604043300000040044000390000000004040433000000a007200039000000400070043f000005ea0440019700000080072000390000000000470435000000000006004b0000000004000039000000010400c0390000004006200039000000000046043500000020042000390000000000340435000005ea03500197000000600420003900000000003404350000000000320435000000400600043d000005f20060009c0000015b0000213d0000000a0300002900000000030304330000000c0400002900000000040404330000008005600039000000400050043f0000006005600039000500000005001d00000000004504350000004004600039000a00000004001d0000000000340435000600000006001d0000000001160436000700000001001d00000000002104350000000e0100002900000000010104330000059d01100197000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000060200002900000000020204330000000043020434000005ea03300197000000000601043b000000000106041a000005f301100197000000000131019f00000000030404330000008003300210000005f403300197000000000131019f00000040032000390000000003030433000000000003004b000005f5030000410000000003006019000000000131019f000000000016041b000000800120003900000060022000390000000002020433000005ea0220019700000000010104330000008001100210000000000121019f0000000102600039000000000012041b0000000201600039000000000201041a000005f302200197000000070300002900000000030304330000000054030434000005ea04400197000000000242019f00000000040504330000008004400210000005f404400197000000000242019f00000040043000390000000004040433000000000004004b000005f5040000410000000004006019000000000242019f000000000021041b000000800130003900000060023000390000000002020433000005ea0220019700000000010104330000008001100210000000000121019f0000000302600039000000000012041b0000000a01000029000000000301043300000000750304340000059d0050009c0000015b0000213d0000000404600039000000000104041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f000000010010019000000c5b0000c13d000000200080008c000600000006001d000a00000004001d000700000005001d000400000003001d000005020000413d000100000008001d000200000007001d000000000040043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d00000007050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000006060000290000000a040000290000000207000029000005020000813d000000000002041b0000000102200039000000000012004b000004fe0000413d0000001f0050008c0000052e0000a13d000000000040043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d00000007070000290000062f02700198000000000101043b0000059d0000613d000000010320008a00000005033002700000000003310019000000010430003900000020030000390000000606000029000000040800002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000005190000c13d000000000072004b0000052a0000813d0000000302700210000000f80220018f000006300220027f000006300220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf0000000a04000029000005390000013d000000000005004b000005320000613d0000000001070433000005330000013d00000000010000190000000302500210000006300220027f0000063002200167000000000121016f0000000102500210000000000121019f000000000014041b0000000501000029000000000301043300000000750304340000059d0050009c0000015b0000213d0000000504600039000000000104041a000000010010019000000001061002700000007f0660618f0000001f0060008c00000000020000390000000102002039000000000121013f000000010010019000000c5b0000c13d000000200060008c000a00000004001d000700000005001d000500000003001d0000056e0000413d000400000006001d000600000007001d000000000040043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d00000007050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000004010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000a0400002900000006070000290000056e0000813d000000000002041b0000000102200039000000000012004b0000056a0000413d0000001f0050008c000005990000a13d000000000040043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d00000007060000290000062f02600198000000000101043b000005c80000613d000000010320008a0000000503300270000000000331001900000001043000390000002003000039000000050700002900000000057300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000005840000c13d000000000062004b000005950000813d0000000302600210000000f80220018f000006300220027f000006300220016700000000037300190000000003030433000000000223016f000000000021041b000000010160021000000001011001bf0000000a04000029000005aa0000013d000000000005004b000005a30000613d0000000001070433000005a40000013d000000200300003900000006060000290000000408000029000000000072004b000005220000413d0000052a0000013d00000000010000190000000302500210000006300220027f0000063002200167000000000121016f0000000102500210000000000121019f000000000014041b000000090100002900000000020104330000000d0100002900000000050104330000000c0100002900000000030104330000000e010000290000000004010433000000400100043d0000002006100039000001000700003900000000007604350000059d0440019700000000004104350000010007100039000000006403043400000000004704350000012003100039000000000004004b0000027d0000613d000000000700001900000000083700190000000009760019000000000909043300000000009804350000002007700039000000000047004b000005c00000413d0000027d0000013d00000020030000390000000507000029000000000062004b0000058d0000413d000005950000013d0000000e0100002900000000010104330000059d01100197000d00000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000301041a000000000003004b00000ec50000613d0000000501000039000000000201041a000000000002004b00000ebf0000613d000000010130008a000000000023004b000006030000613d000000000012004b00000e490000a13d000005f80130009a000005f80220009a000000000202041a000000000021041b000000000020043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039000c00000003001d165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000c02000029000000000021041b0000000501000039000000000301041a000000000003004b00000eeb0000613d000000010130008a000005f80230009a000000000002041b0000000502000039000000000012041b0000000d01000029000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000001041b0000000e0100002900000000010104330000059d01100197000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000301043b000000000003041b0000000101300039000000000001041b0000000201300039000000000001041b0000000301300039000000000001041b0000000404300039000000000104041a000000010010019000000001051002700000007f0550618f0000001f0050008c00000000020000390000000102002039000000000121013f000000010010019000000c5b0000c13d000000000005004b0000065a0000613d0000001f0050008c000006590000a13d000a00000005001d000d00000003001d000c00000004001d000000000040043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000a020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b000006550000813d000000000003041b0000000103300039000000000023004b000006510000413d0000000c02000029000000000002041b00000000040100190000000d03000029000000000004041b0000000503300039000000000103041a000000010010019000000001041002700000007f0440618f0000001f0040008c00000000020000390000000102002039000000000121013f000000010010019000000c5b0000c13d000000000004004b000006850000613d0000001f0040008c000006840000a13d000c00000004001d000d00000003001d000000000030043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000c020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b000006810000813d000000000003041b0000000103300039000000000023004b0000067d0000413d0000000d02000029000000000002041b0000000003010019000000000003041b0000000e0100002900000000010104330000059d01100197000000400200043d0000000000120435000005990020009c000005990200804100000040012002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d020000390000000103000039000005f904000041165f16550000040f0000000100200190000002b40000c13d0000004a0000013d000005d00020009c0000096f0000613d000005d10020009c0000004a0000c13d0000000001000416000000000001004b0000004a0000c13d0000000901000039000008570000013d000005b90020009c00000ac20000613d000005ba0020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b0000059c0010009c0000004a0000213d000000000200041a0000059c022001970000000003000411000000000023004b00000b090000c13d000000000001004b00000bb80000c13d000005f701000041000000800010043f00000605010000410000166100010430000005c50020009c00000ad50000613d000005c60020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b0000059d0010009c0000004a0000213d165f14fb0000040f000000000001004b0000000001000039000000010100c039000000400200043d0000000000120435000005990020009c0000059902008041000000400120021000000611011001c7000016600001042e000005ae0020009c00000ae70000613d000005af0020009c0000004a0000c13d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000601043b0000059c0060009c0000004a0000213d000000000100041a0000059c011001970000000005000411000000000015004b00000b090000c13d000000000056004b00000bc90000c13d000005a801000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f000005db01000041000000c40010043f000005dc01000041000016610001043000000005054002100000003f065000390000059f06600197000000400700043d0000000006670019000c00000007001d000000000076004b000000000700003900000001070040390000059d0060009c0000015b0000213d00000001007001900000015b0000c13d0000010007300039000000400060043f0000000c030000290000000003430436000b00000003001d00000120022000390000000003250019000000000073004b0000004a0000213d000000000004004b000007100000613d0000000b0400002900000000250204340000059c0050009c0000004a0000213d0000000004540436000000000032004b0000070a0000413d000001400200043d0000059c0020009c0000004a0000213d000001600400043d000000000004004b0000000003000039000000010300c039000900000004001d000000000034004b0000004a0000c13d000001800300043d0000059c0030009c0000004a0000213d0000000004000411000000000004004b00000bf50000c13d000000400100043d0000004402100039000005a7030000410000000000320435000000240210003900000018030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c00000599010080410000004001100210000005a9011001c70000166100010430000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000201043b00000629002001980000004a0000c13d00000001010000390000062a0020009c00000b370000213d0000062d0020009c00000ad20000613d0000062e0020009c00000ad20000613d00000b3b0000013d0000000001000416000000000001004b0000004a0000c13d000000000100041a000008a30000013d000000440030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b0000059d0020009c0000004a0000213d0000002305200039000000000035004b0000004a0000813d0000000405200039000000000551034f000000000905043b0000059d0090009c0000004a0000213d0000002407200039000000050b90021000000000087b0019000000000038004b0000004a0000213d0000002402100370000000000202043b0000059d0020009c0000004a0000213d0000002305200039000000000035004b0000004a0000813d0000000405200039000000000551034f000000000605043b0000059d0060009c0000004a0000213d0000002402200039000000050a60021000000000052a0019000000000035004b0000004a0000213d000000000300041a0000059c03300197000000000c00041100000000003c004b00000b090000c13d0000003f03b000390000059f03300197000005f20030009c0000015b0000213d0000008003300039000c00000003001d000000400030043f000000800090043f000000000009004b000007880000613d000000000371034f000000000303043b0000059c0030009c0000004a0000213d000000200440003900000000003404350000002007700039000000000087004b0000077d0000413d000000400300043d000c00000003001d0000003f03a000390000059f033001970000000c033000290000000c0030006c000000000400003900000001040040390000059d0030009c0000015b0000213d00000001004001900000015b0000c13d000000400030043f0000000c030000290000000003630436000b00000003001d000000000006004b000007a20000613d0000000c03000029000000000421034f000000000404043b0000059c0040009c0000004a0000213d000000200330003900000000004304350000002002200039000000000052004b000007990000413d000005dd01000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000000101043b000000000001004b00000c170000613d000000800100043d000000000001004b00000de40000c13d0000000c010000290000000001010433000000000001004b00000c320000613d0000000003000019000007c20000013d00000001033000390000000c010000290000000001010433000000000013004b00000c320000813d00000005013002100000000b0110002900000000010104330000059c04100198000007bd0000613d000000000040043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039000d00000003001d000e00000004001d165f165a0000040f0000000e040000290000000d0300002900000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b000007bd0000c13d0000000203000039000000000103041a0000059d0010009c0000015b0000213d0000000102100039000000000023041b000005a30110009a000000000041041b000000000103041a000a00000001001d000000000040043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f0000000e0300002900000001002001900000004a0000613d000000000101043b0000000a02000029000000000021041b000000400100043d0000000000310435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d020000390000000103000039000005a504000041165f16550000040f0000000d030000290000000100200190000007bd0000c13d0000004a0000013d0000000002000416000000000002004b0000004a0000c13d0000000504000039000000000204041a000000800020043f000000000040043f000000000002004b00000b130000c13d000000a002000039000000400020043f000000000400001900000005064002100000003f05600039000006020550019700000000052500190000059d0050009c0000015b0000213d000000400050043f00000000044204360000001f0560018f000000000006004b000008260000613d000000000131034f00000000036400190000000006040019000000001701043c0000000006760436000000000036004b000008220000c13d000000000005004b000000800100043d000000000001004b000008380000613d00000000010000190000000003020433000000000013004b00000e490000a13d00000005031002100000000005340019000000a00330003900000000030304330000059d0330019700000000003504350000000101100039000000800300043d000000000031004b0000082b0000413d000000400100043d00000020030000390000000005310436000000000302043300000000003504350000004002100039000000000003004b000008fe0000613d000000000500001900000000460404340000059d0660019700000000026204360000000105500039000000000035004b000008410000413d000008fe0000013d0000000001000416000000000001004b0000004a0000c13d0000000001000412001800000001001d001700000000003d000080050100003900000044030000390000000004000415000000180440008a000008a00000013d0000000001000416000000000001004b0000004a0000c13d0000000401000039000000000101041a000008a30000013d000000440030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b000e00000002001d0000059d0020009c0000004a0000213d0000002402100370000000000202043b0000059d0020009c0000004a0000213d0000002304200039000000000034004b0000004a0000813d0000000404200039000000000141034f000000000101043b000d00000001001d0000059d0010009c0000004a0000213d0000002402200039000c00000002001d0000000d01200029000000000031004b0000004a0000213d000000000100041a0000059c011001970000000002000411000000000012004b00000b090000c13d0000000e01000029000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b00000c410000c13d000000400100043d000005fa02000041000000000021043500000004021000390000000e030000290000000000320435000005990010009c00000599010080410000004001100210000005e0011001c700001661000104300000000001000416000000000001004b0000004a0000c13d0000000001000412001200000001001d001100200000003d000080050100003900000044030000390000000004000415000000120440008a0000000504400210000005dd02000041165f16370000040f0000059c01100197000000800010043f000005e601000041000016600001042e000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000201043b0000000901000039000000000101041a0000059c011001970000000003000411000000000031004b00000b280000c13d000e00000002001d000005dd0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000000301043b000000400b00043d000006260100004100000000001b04350000000401b00039000000000200041000000000002104350000000001000414000d00000003001d0000059c02300197000000040020008c00000b700000c13d0000000103000031000000200030008c0000002004000039000000000403401900000b9c0000013d0000000001000416000000000001004b0000004a0000c13d0000000202000039000000000102041a000000800010043f000000000020043f0000002002000039000000000001004b0000000004020019000008ed0000613d000000a005000039000006060300004100000000040000190000000006050019000000000503041a000000000556043600000001033000390000000104400039000000000014004b000008e20000413d000000410160008a0000062f04100197000005f20040009c0000015b0000213d0000008001400039000000400010043f0000000000210435000000a002400039000000800300043d0000000000320435000000c002400039000000000003004b000008fe0000613d000000a004000039000000000500001900000000460404340000059c0660019700000000026204360000000105500039000000000035004b000008f80000413d0000000002120049000005990020009c00000599020080410000006002200210000005990010009c00000599010080410000004001100210000000000112019f000016600001042e000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d0000059c0010009c0000004a0000213d165f13ca0000040f000000090100003900000ae10000013d000000e40030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b000e00000002001d0000059d0020009c0000004a0000213d000000e002000039000000400020043f0000002402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b0000004a0000c13d000000800020043f0000004402100370000000000202043b000005ea0020009c0000004a0000213d000000a00020043f0000006402100370000000000202043b000005ea0020009c0000004a0000213d000000c00020043f0000014002000039000000400020043f0000008402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b0000004a0000c13d000000e00020043f000000a402100370000000000202043b000005ea0020009c0000004a0000213d000001000020043f000000c401100370000000000101043b000005ea0010009c0000004a0000213d000001200010043f0000000801000039000000000101041a0000059c021001970000000001000411000000000021004b000009500000613d000000000200041a0000059c02200197000000000021004b00000cb10000c13d0000000e01000029000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b0000088b0000613d000000c00100043d000005ea01100197000000800200043d000000000002004b00000d380000c13d000000000001004b0000096b0000c13d000000a00100043d000005ea0010019800000d3e0000613d000000400200043d000e00000002001d000005ec0100004100000d9c0000013d000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000402100370000000000202043b000e00000002001d0000059d0020009c0000004a0000213d0000000e0230006a000005e70020009c0000004a0000213d000001040020008c0000004a0000413d000000800000043f000001a002000039000000400020043f0000000e040000290000000404400039000000000541034f000000000505043b0000059d0050009c0000004a0000213d0000000e065000290000002305600039000000000035004b0000004a0000813d0000000407600039000000000571034f000000000505043b0000059d0050009c0000015b0000213d0000001f085000390000062f088001970000003f088000390000062f088001970000061e0080009c0000015b0000213d000001a008800039000000400080043f000001a00050043f00000000065600190000002406600039000000000036004b0000004a0000213d0000002006700039000000000761034f0000062f085001980000001f0950018f000001c006800039000009a90000613d000001c00a000039000000000b07034f00000000bc0b043c000000000aca043600000000006a004b000009a50000c13d000000000009004b000009b60000613d000000000787034f0000000308900210000000000906043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f0000000000760435000001c0055000390000000000050435000000a00020043f0000002002400039000000000421034f000000000404043b0000059d0040009c0000004a0000213d000000c00040043f0000002002200039000000000421034f000000000404043b0000059c0040009c0000004a0000213d000000e00040043f0000002004200039000000000441034f0000004002200039000000000521034f000000000404043b000d00000004001d000001000040043f000000000405043b0000059c0040009c0000004a0000213d000001200040043f0000002002200039000000000421034f000000000404043b0000059d0040009c0000004a0000213d0000000e074000290000002304700039000000000034004b0000004a0000813d0000000408700039000000000481034f000000000404043b0000059d0040009c0000015b0000213d0000001f054000390000062f055001970000003f055000390000062f06500197000000400500043d0000000006650019000000000056004b000000000900003900000001090040390000059d0060009c0000015b0000213d00000001009001900000015b0000c13d000000400060043f000000000645043600000000074700190000002407700039000000000037004b0000004a0000213d0000002007800039000000000871034f0000062f094001980000001f0a40018f0000000007960019000009fd0000613d000000000b08034f000000000c06001900000000bd0b043c000000000cdc043600000000007c004b000009f90000c13d00000000000a004b00000a0a0000613d000000000898034f0000000309a00210000000000a070433000000000a9a01cf000000000a9a022f000000000808043b0000010009900089000000000898022f00000000089801cf0000000008a8019f000000000087043500000000044600190000000000040435000001400050043f0000002002200039000000000421034f000000000404043b0000059d0040009c0000004a0000213d0000000e074000290000002304700039000000000034004b0000004a0000813d0000000408700039000000000481034f000000000404043b0000059d0040009c0000015b0000213d0000001f054000390000062f055001970000003f055000390000062f06500197000000400500043d0000000006650019000000000056004b000000000900003900000001090040390000059d0060009c0000015b0000213d00000001009001900000015b0000c13d000000400060043f000000000645043600000000074700190000002407700039000000000037004b0000004a0000213d0000002007800039000000000871034f0000062f094001980000001f0a40018f000000000796001900000a3a0000613d000000000b08034f000000000c06001900000000bd0b043c000000000cdc043600000000007c004b00000a360000c13d00000000000a004b00000a470000613d000000000898034f0000000309a00210000000000a070433000000000a9a01cf000000000a9a022f000000000808043b0000010009900089000000000898022f00000000089801cf0000000008a8019f000000000087043500000000044600190000000000040435000001600050043f0000002002200039000000000221034f000000000202043b0000059d0020009c0000004a0000213d0000000e062000290000002302600039000000000032004b0000004a0000813d0000000407600039000000000271034f000000000202043b0000059d0020009c0000015b0000213d0000001f042000390000062f044001970000003f044000390000062f05400197000000400400043d0000000005540019000000000045004b000000000800003900000001080040390000059d0050009c0000015b0000213d00000001008001900000015b0000c13d000000400050043f000000000524043600000000062600190000002406600039000000000036004b0000004a0000213d0000002003700039000000000331034f0000062f062001980000001f0720018f000000000165001900000a770000613d000000000803034f0000000009050019000000008a08043c0000000009a90436000000000019004b00000a730000c13d000000000007004b00000a840000613d000000000363034f0000000306700210000000000701043300000000076701cf000000000767022f000000000303043b0000010006600089000000000363022f00000000036301cf000000000373019f000000000031043500000000012500190000000000010435000001800040043f000001200100043d000c00000001001d000005dd0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d0000000c020000290000059c03200197000000400200043d000c00000002001d0000000402200039000000000101043b000900000001001d0000059c01100197000a00000003001d000000000013004b000010290000c13d000000c00100043d00000609030000410000000c04000029000000000034043500000080011002100000060a011001970000000000120435000005dd01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000000201043b00000000010004140000059c02200197000000040020008c0000102c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010560000013d0000000001000416000000000001004b0000004a0000c13d0000000001000412001400000001001d001300600000003d000080050100003900000044030000390000000004000415000000140440008a0000000504400210000005dd02000041165f16370000040f000000000001004b0000000001000039000000010100c039000000800010043f000005e601000041000016600001042e000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d0000059c0010009c0000004a0000213d165f13ca0000040f0000000801000039000000000201041a000005a0022001970000000e022001af000000000021041b0000000001000019000016600001042e000000240030008c0000004a0000413d0000000002000416000000000002004b0000004a0000c13d0000000401100370000000000101043b000e00000001001d000005dd01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000400300043d000000000101043b000000000001004b00000b3e0000c13d000005e4010000410000000000130435000005990030009c00000599030080410000004001300210000005e5011001c70000166100010430000005a801000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000061901000041000000c40010043f000005dc010000410000166100010430000000a007000039000005ff0400004100000000060000190000000005070019000000000704041a000000000775043600000001044000390000000106600039000000000026004b00000b160000413d000006000250009a000006010020009c0000015b0000413d000000410250008a0000062f022001970000008002200039000000800400043d000000400020043f0000059d0040009c0000015b0000213d000008140000013d000005df01000041000000800010043f000000840030043f00000625010000410000166100010430000005a801000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000061201000041000000c40010043f000005dc0100004100001661000104300000062b0020009c00000ad20000613d0000062c0020009c00000ad20000613d000000800000043f000005e601000041000016600001042e0000000901000039000000000101041a0000059c011001970000000004000411000000000041004b00000baf0000c13d0000002001300039000005e102000041000000000021043500000064013000390000000e0200002900000000002104350000004401300039000000000200041000000000002104350000002401300039000000000041043500000064010000390000000000130435000005e20030009c0000015b0000213d000000a001300039000000400010043f000005dd0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039000d00000003001d165f165a0000040f000000010020019000000ebe0000613d000000000101043b0000000d02000029165f142f0000040f0000000001000414000005990010009c0000059901008041000000c001100210000005d9011001c70000800d020000390000000303000039000005e30400004100000c2d0000013d0000059900b0009c000005990300004100000000030b40190000004003300210000005990010009c0000059901008041000000c001100210000000000131019f000005e0011001c7000c0000000b001d165f165a0000040f0000000c0b00002900000060031002700000059903300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000b8b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000b870000c13d000000000006004b00000b980000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000bd70000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f000000200030008c0000004a0000413d00000000020b04330000000e03000029000000000032004b00000c220000813d000006280200004100000c1c0000013d000005df01000041000000000013043500000004013000390000000000410435000005990030009c00000599030080410000004001300210000005e0011001c700001661000104300000000402000039000000000302041a000005a004300197000000000414019f000000000042041b0000059c02300197000000800020043f000000a00010043f0000000001000414000005990010009c0000059901008041000000c00110021000000603011001c70000800d020000390000000103000039000006040400004100000c2f0000013d0000000101000039000000000201041a000005a002200197000000000262019f000000000021041b0000000001000414000005990010009c0000059901008041000000c001100210000005d9011001c70000800d020000390000000303000039000005da0400004100000c2f0000013d0000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000bde0000c13d000000000005004b00000bef0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000005990020009c00000599020080410000004002200210000000000112019f0000166100010430000000000500041a000005a005500197000000000445019f000000000040041b000000000002004b00000c1a0000613d0000059c0010019800000c1a0000613d000000000003004b00000c1a0000613d000000800010043f000000a00020043f0000000405000039000000000105041a000005a001100197000000000131019f000000000015041b0000000c010000290000000001010433000000000001004b0000000001000039000000010100c039000000c00010043f000000000100001900000d5e0000613d000000400100043d000005a10010009c0000015b0000213d0000002002100039000000400020043f0000000000010435000000c00100043d000000000001004b00000c610000c13d000000400100043d0000061d0200004100000c1c0000013d000000400100043d000005f7020000410000000000210435000005990010009c00000599010080410000004001100210000005e5011001c700001661000104300000000d010000290000000002000411165f12f00000040f0000000001000414000005990010009c0000059901008041000000c001100210000005d9011001c70000800d020000390000000303000039000006270400004100000000050004110000000e06000029165f16550000040f00000001002001900000004a0000613d0000000001000019000016600001042e00000599033001970000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c3c0000c13d00000be20000013d0000000e01000029000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000401100039000000000201041a000000010320019000000001042002700000007f0440618f000b00000004001d0000001f0040008c00000000040000390000000104002039000000000442013f000000010040019000000cb60000613d0000061a01000041000000000010043f0000002201000039000000040010043f000005e00100004100001661000104300000000c020000290000000002020433000000000002004b00000d5e0000613d000000000200001900000c6d0000013d0000000e0200002900000001022000390000000c010000290000000001010433000000000012004b00000d5c0000813d000e00000002001d00000005012002100000000b0110002900000000010104330000059c0310019800000c670000613d000000000030043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039000d00000003001d165f165a0000040f0000000d0400002900000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b00000c670000c13d0000000203000039000000000103041a0000059d0010009c0000015b0000213d0000000102100039000000000023041b000005a30110009a000000000041041b000000000103041a000a00000001001d000000000040043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f0000000d0300002900000001002001900000004a0000613d000000000101043b0000000a02000029000000000021041b000000400100043d0000000000310435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d020000390000000103000039000005a504000041165f16550000040f000000010020019000000c670000c13d0000004a0000013d000005df02000041000001400020043f000001440010043f000005fb010000410000166100010430000000400400043d000900000004001d0000000b050000290000000004540436000a00000004001d000000000003004b00000cd60000613d000000000010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d0000000b06000029000000000006004b00000000020000190000000a0500002900000cdc0000613d000000000101043b00000000020000190000000003250019000000000401041a000000000043043500000001011000390000002002200039000000000062004b00000cce0000413d00000cdc0000013d00000631012001970000000a0200002900000000001204350000000b0000006b000000200200003900000000020060390000003f012000390000062f021001970000000901200029000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f0000000e01000029000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000401100039000b00000001001d000000000101041a000000010010019000000001021002700000007f0220618f000800000002001d0000001f0020008c00000000020000390000000102002039000000000121013f000000010010019000000c5b0000c13d0000000801000029000000200010008c00000d210000413d0000000b01000029000000000010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d0000000d030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000008010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000d210000813d000000000002041b0000000102200039000000000012004b00000d1d0000413d0000000d010000290000001f0010008c00000eca0000a13d0000000b01000029000000000010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000200300008a0000000d02300180000000000101043b00000ef10000c13d000000000300001900000efc0000013d000000400100043d000005ed0200004100000c1c0000013d000000000001004b00000d990000613d000000a00200043d000005ea02200197000000000021004b00000d990000813d0000000e01000029000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000008002000039165f150f0000040f000001200100043d000005ea01100197000000e00200043d000000000002004b00000da20000c13d000000000001004b00000d580000c13d000001000100043d000005ea0010019800000da80000613d000000400200043d000e00000002001d000005ec0100004100000edb0000013d000000c00100043d00000004050000390000000904000029000000e00040043f000000800200043d00000140000004430000016000200443000000a00200043d00000020030000390000018000300443000001a0002004430000004002000039000001c000200443000001e00010044300000060010000390000020000100443000002200040044300000100003004430000012000500443000005a601000041000016600001042e0000000e010000290000000001010433000000400200043d000005ee0300004100000000003204350000059d0110019700000004032000390000000000130435000005990020009c00000599020080410000004001200210000005e0011001c70000166100010430000000400200043d000e00000002001d000005ec0100004100000d8f0000013d000000400300043d000e00000003001d000005ec0200004100000d960000013d00000608010000410000000b0300002900000000001304350000000d01000029000000000012043500000bb30000013d000000400200043d000e00000002001d000005eb0100004100000000001204350000000402200039000000000103001900000d9f0000013d000000400300043d000e00000003001d000005eb020000410000000000230435000000040230003900000d9f0000013d000000400200043d000e00000002001d000005eb01000041000000000012043500000004022000390000008001000039165f12e20000040f0000000e010000290000072c0000013d000000000001004b00000ed80000613d000001000200043d000005ea02200197000000000021004b00000ed80000813d0000000e01000029000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000201100039000000e002000039165f150f0000040f000000400100043d0000000e020000290000000002210436000000800300043d000000000003004b0000000003000039000000010300c0390000000000320435000000a00200043d000005ea0220019700000040031000390000000000230435000000c00200043d000005ea0220019700000060031000390000000000230435000000e00200043d000000000002004b0000000002000039000000010200c03900000080031000390000000000230435000001000200043d000005ea02200197000000a0031000390000000000230435000001200200043d000005ea02200197000000c0031000390000000000230435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005fc011001c70000800d020000390000000103000039000005fd0400004100000bc80000013d000000000200001900000deb0000013d0000000d020000290000000102200039000000800100043d000000000012004b000007b70000813d000d00000002001d0000000501200210000000a00110003900000000010104330000059c01100197000e00000001001d000000000010043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000301041a000000000003004b00000de60000613d0000000201000039000000000201041a000000000002004b00000ebf0000613d000000010130008a000000000023004b00000e230000613d000000000012004b00000e490000a13d0000061b0130009a0000061b0220009a000000000202041a000000000021041b000000000020043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039000a00000003001d165f165a0000040f0000000a0300002900000001002001900000004a0000613d000000000101043b000000000031041b0000000201000039000000000301041a000000000003004b00000eeb0000613d000000010130008a0000061b0230009a000000000002041b0000000202000039000000000012041b0000000e01000029000000000010043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000001041b000000400100043d0000000e020000290000000000210435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d0200003900000001030000390000061c04000041165f16550000040f000000010020019000000de60000c13d0000004a0000013d0000061a01000041000000000010043f0000003201000039000000040010043f000005e00100004100001661000104300000000b03000029000005990030009c00000599030080410000004003300210000005990010009c0000059901008041000000c001100210000000000131019f000005e0011001c7165f165a0000040f00000060031002700000059903300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000e680000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000e640000c13d000000000006004b00000e750000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000edf0000613d0000001f01400039000000600210018f0000000b01200029000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f000000200030008c0000004a0000413d0000000b020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b0000004a0000c13d000000000002004b000010870000c13d000001000100043d000b00000001001d000005dd01000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000005990010009c0000059901008041000000c001100210000005de011001c70000800502000039165f165a0000040f000000010020019000000ebe0000613d000000000101043b000000000001004b00000f5a0000c13d000000e00100043d0000059d01100197000a00000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000400200043d000b00000002001d0000000402200039000000000101043b000000000101041a000000000001004b00000f730000c13d00000610010000410000000b0300002900000000001304350000000a0100002900000d8a0000013d000000000001042f0000061a01000041000000000010043f0000001101000039000000040010043f000005e00100004100001661000104300000000e010000290000000001010433000000400200043d000005fa0300004100000d750000013d0000000d0000006b000000000100001900000ed00000613d0000000c010000290000000201100367000000000101043b0000000d040000290000000302400210000006300220027f0000063002200167000000000121016f0000000102400210000000000121019f00000f0b0000013d000000400200043d000e00000002001d000005eb0100004100000000001204350000000402200039000000e00100003900000d9f0000013d0000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ee60000c13d00000be20000013d0000061a01000041000000000010043f0000003101000039000000040010043f000005e0010000410000166100010430000000020400036700000000030000190000000c060000290000000005630019000000000554034f000000000505043b000000000051041b00000001011000390000002003300039000000000023004b00000ef40000413d0000000d0020006c00000f080000813d0000000d020000290000000302200210000000f80220018f000006300220027f00000630022001670000000c033000290000000203300367000000000303043b000000000223016f000000000021041b0000000d01000029000000010110021000000001011001bf0000000b02000029000000000012041b0000004002000039000000400100043d000000000221043600000009030000290000000003030433000000400410003900000000003404350000006004100039000000000003004b0000000a0800002900000f200000613d000000000500001900000000064500190000000007580019000000000707043300000000007604350000002005500039000000000035004b00000f190000413d000000000534001900000000000504350000001f033000390000062f033001970000000003340019000000000413004900000000004204350000000d0500002900000000025304360000062f045001980000001f0550018f00000000034200190000000c06000029000000020660036700000f350000613d000000000706034f0000000008020019000000007907043c0000000008980436000000000038004b00000f310000c13d000000000005004b00000f420000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000d040000290000001f034000390000062f033001970000000004420019000000000004043500000000031300490000000002230019000005990020009c00000599020080410000006002200210000005990010009c00000599010080410000004001100210000000000112019f0000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005d9011001c70000800d0200003900000002030000390000061404000041000001460000013d0000000b010000290000059c01100197000b00000001001d000000000010043f0000000301000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b000000000101041a000000000001004b00000ea30000c13d000000400100043d0000060c02000041000000000021043500000004021000390000000b03000029000008900000013d0000000401000039000000000301041a0000060d010000410000000b0400002900000000001404350000000a01000029000000000012043500000000010004140000059c02300197000000040020008c00000f820000c13d0000000104000031000000200040008c000000200400803900000fac0000013d0000000b03000029000005990030009c00000599030080410000004003300210000005990010009c0000059901008041000000c001100210000000000131019f000005e0011001c7165f165a0000040f00000060031002700000059903300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000f9b0000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000f970000c13d000000000006004b00000fa80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010190000613d0000001f01400039000000600210018f0000000b01200029000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f000000200040008c0000004a0000413d0000000b020000290000000002020433000005f50020009c0000004a0000813d0000000003000411000000000023004b000010250000c13d000000e00100043d0000059d01100197000001200200043d000b00000002001d000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000b020000290000000d03000029165f157c0000040f000000400100043d0000000c020000290000000000210435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000121019f000005a4011001c70000800d0200003900000002030000390000060f040000410000000005000411165f16550000040f00000001002001900000004a0000613d0000000e010000290000000201100367000000000101043b0000059d0010009c0000004a0000213d165f12870000040f000e00000001001d000000400100043d000d00000001001d165f11e80000040f0000000d010000290000000e020000290000000001210436000e00000001001d000000400100043d000c00000001001d165f11dd0000040f0000000c0200002900000000000204350000000e010000290000000000210435000000400400043d000c00000004001d000000200100003900000000021404360000000d010000290000000001010433000000400300003900000000003204350000006002400039165f11cb0000040f00000000020100190000000c040000290000000001410049000000200310008a0000000e01000029000000000101043300000040044000390000000000340435165f11cb0000040f0000000c020000290000000001210049000005990020009c00000599020080410000004002200210000005990010009c00000599010080410000006001100210000000000121019f000016600001042e0000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010200000c13d00000be20000013d0000060e0200004100000000002104350000000402100039000008900000013d00000608010000410000000c0300002900000ebb0000013d0000000c03000029000005990030009c00000599030080410000004003300210000005990010009c0000059901008041000000c001100210000000000131019f000005e0011001c7165f165a0000040f00000060031002700000059903300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000010450000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000010410000c13d000000000006004b000010520000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010890000613d0000001f01400039000000600210018f0000000c01200029000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f000000200030008c0000004a0000413d0000000c020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b0000004a0000c13d000000000002004b000010870000c13d000000c00100043d0000059d01100197000b00000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000400200043d000c00000002001d0000000402200039000000000101043b000000000101041a000000000001004b000010950000c13d00000610010000410000000c0300002900000000001304350000000b0100002900000d8a0000013d0000060b0200004100000c1c0000013d0000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010900000c13d00000be20000013d0000000401000039000000000301041a0000061f010000410000000c0400002900000000001404350000000b01000029000000000012043500000024014000390000000002000411000000000021043500000000010004140000059c02300197000000040020008c000010a70000c13d0000000104000031000000200040008c0000002004008039000010d10000013d0000000c03000029000005990030009c00000599030080410000004003300210000005990010009c0000059901008041000000c001100210000000000131019f00000620011001c7165f165a0000040f00000060031002700000059903300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000010c00000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000010bc0000c13d000000000006004b000010cd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010ec0000613d0000001f01400039000000600210018f0000000c01200029000000000021004b000000000200003900000001020040390000059d0010009c0000015b0000213d00000001002001900000015b0000c13d000000400010043f000000200040008c0000004a0000413d0000000c020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b0000004a0000c13d000000000002004b000010f80000c13d0000060e02000041000000000021043500000004021000390000000003000411000008900000013d0000001f0530018f0000059b06300198000000400200043d000000000462001900000be20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010f30000c13d00000be20000013d000000c00100043d0000059d01100197000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000401100039000000000201041a000000010320019000000001042002700000007f0440618f000c00000004001d0000001f0040008c00000000040000390000000104002039000000000043004b00000c5b0000c13d000000400400043d000800000004001d0000000c050000290000000004540436000b00000004001d000000000003004b000011300000613d000000000010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d0000000c0000006b0000000002000019000011360000613d000000000101043b00000000020000190000000b03200029000000000401041a0000000000430435000000010110003900000020022000390000000c0020006c000011280000413d000011360000013d00000631012001970000000b0200002900000000001204350000000c0000006b000000200200003900000000020060390000003f012000390000062f011001970000000802100029000000000012004b000000000100003900000001010040390000059d0020009c0000015b0000213d00000001001001900000015b0000c13d0000000003020019000000400020043f00000008010000290000000001010433000c00000001001d000000000001004b000011b70000613d000001400100043d0000000021010434000005990010009c00000599010080410000006001100210000005990020009c00000599020080410000004002200210000000000112019f0000000002000414000005990020009c0000059902008041000000c002200210000000000121019f000005d9011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d0000000c02000029000005990020009c000005990200804100000060022002100000000b03000029000005990030009c00000599030080410000004003300210000000000232019f000000000101043b000c00000001001d0000000001000414000005990010009c0000059901008041000000c001100210000000000121019f000005d9011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d000000000101043b0000000c0010006b000011b60000c13d000000c00100043d0000059d01100197000001000200043d000c00000002001d000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000004a0000613d0000000e02000029000e00440020003d000000000101043b00000002011000390000000c020000290000000a03000029165f157c0000040f0000000e010000290000000201100367000000000201043b0000059c0020009c0000004a0000213d00000009010000290000000d03000029165f12f00000040f0000000e010000290000000201100367000000000601043b0000059c0060009c0000004a0000213d000000400100043d0000000d020000290000000000210435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d02000039000000030300003900000621040000410000000005000411165f16550000040f00000001002001900000004a0000613d000000400100043d000e00000001001d165f11dd0000040f0000000d020000290000000e010000290000000000210435000000400100043d0000000000210435000005990010009c0000059901008041000000400110021000000611011001c7000016600001042e000000400300043d000001400100043d00000622020000410000000004030019000e00000003001d00000000002304350000000402300039000000200300003900000000003204350000002402400039165f11cb0000040f0000000e020000290000000001210049000005990010009c0000059901008041000005990020009c000005990200804100000060011002100000004002200210000000000121019f000016610001043000000000430104340000000001320436000000000003004b000011d70000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000011d00000413d000000000231001900000000000204350000001f023000390000062f022001970000000001210019000000000001042d000006320010009c000011e20000813d0000002001100039000000400010043f000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e0010000410000166100010430000006330010009c000011ed0000813d0000004001100039000000400010043f000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e0010000410000166100010430000006340010009c000011f80000813d000000a001100039000000400010043f000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e00100004100001661000104300000000043020434000005ea03300197000000000331043600000000040404330000059904400197000000000043043500000040032000390000000003030433000000000003004b0000000003000039000000010300c0390000004004100039000000000034043500000060032000390000000003030433000005ea033001970000006004100039000000000034043500000080022000390000000002020433000005ea0220019700000080031000390000000000230435000000a001100039000000000001042d00030000000000020000059d01100197000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f0000000100200190000012640000613d000000000101043b0000000405100039000000000205041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000390000000104002039000000000043004b000012660000c13d000000400100043d0000000004610436000000000003004b000012500000613d000100000004001d000200000006001d000300000001001d000000000050043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f0000000100200190000012640000613d0000000206000029000000000006004b000012560000613d000000000201043b0000000005000019000000030100002900000001070000290000000003570019000000000402041a000000000043043500000001022000390000002005500039000000000065004b000012480000413d000012580000013d00000631022001970000000000240435000000000006004b00000020050000390000000005006039000012580000013d000000000500001900000003010000290000003f035000390000062f023001970000000003120019000000000023004b000000000200003900000001020040390000059d0030009c0000126c0000213d00000001002001900000126c0000c13d000000400030043f000000000001042d000000000100001900001661000104300000061a01000041000000000010043f0000002201000039000000040010043f000005e00100004100001661000104300000061a01000041000000000010043f0000004101000039000000040010043f000005e0010000410000166100010430000000400100043d000006340010009c000012810000813d000000a002100039000000400020043f000000800210003900000000000204350000006002100039000000000002043500000040021000390000000000020435000000200210003900000000000204350000000000010435000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e001000041000016610001043000030000000000020000059d01100197000000000010043f0000000701000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f0000000100200190000012d40000613d000000000101043b0000000505100039000000000205041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000390000000104002039000000000043004b000012d60000c13d000000400100043d0000000004610436000000000003004b000012c00000613d000100000004001d000200000006001d000300000001001d000000000050043f0000000001000414000005990010009c0000059901008041000000c001100210000005a4011001c70000801002000039165f165a0000040f0000000100200190000012d40000613d0000000206000029000000000006004b000012c60000613d000000000201043b0000000005000019000000030100002900000001070000290000000003570019000000000402041a000000000043043500000001022000390000002005500039000000000065004b000012b80000413d000012c80000013d00000631022001970000000000240435000000000006004b00000020050000390000000005006039000012c80000013d000000000500001900000003010000290000003f035000390000062f023001970000000003120019000000000023004b000000000200003900000001020040390000059d0030009c000012dc0000213d0000000100200190000012dc0000c13d000000400030043f000000000001042d000000000100001900001661000104300000061a01000041000000000010043f0000002201000039000000040010043f000005e00100004100001661000104300000061a01000041000000000010043f0000004101000039000000040010043f000005e00100004100001661000104300000000043010434000000000003004b0000000003000039000000010300c03900000000033204360000000004040433000005ea044001970000000000430435000000400220003900000040011000390000000001010433000005ea011001970000000000120435000000000001042d0002000000000002000000400400043d000000440540003900000000003504350000002003400039000006350500004100000000005304350000059c022001970000002405400039000000000025043500000044020000390000000000240435000006360040009c0000137e0000813d0000008009400039000000400090043f000005e80040009c0000137e0000213d0000059c0a100197000000c001400039000000400010043f00000020010000390000000000190435000000a00140003900000637020000410000000000210435000000000204043300000000010004140000000400a0008c0000133c0000c13d00000001020000390000000101000031000000000001004b000013540000613d0000059d0010009c0000137e0000213d0000001f041000390000062f044001970000003f044000390000062f04400197000000400c00043d00000000044c00190000000000c4004b000000000500003900000001050040390000059d0040009c0000137e0000213d00000001005001900000137e0000c13d000000400040043f000000000b1c04360000062f031001980000001f0410018f00000000013b001900000003050003670000132e0000613d000000000605034f00000000070b0019000000006806043c0000000007870436000000000017004b0000132a0000c13d000000000004004b000013560000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000013560000013d000005990030009c00000599030080410000004003300210000005990020009c00000599020080410000006002200210000000000232019f000005990010009c0000059901008041000000c001100210000000000112019f00000000020a0019000200000009001d00010000000a001d165f16550000040f000000010a0000290000000209000029000000010220018f00030000000103550000006001100270000105990010019d0000059901100197000000000001004b000013120000c13d000000600c000039000000800b00003900000000030c0433000000000002004b000013860000613d000000000003004b000013710000c13d00020000000c001d00010000000b001d000006150100004100000000001004430000000400a004430000000001000414000005990010009c0000059901008041000000c00110021000000616011001c70000800202000039165f165a0000040f0000000100200190000013b80000613d000000000101043b000000000001004b0000000201000029000013b90000613d0000000003010433000000000003004b000000010b0000290000137d0000613d000005e70030009c000013840000213d0000001f0030008c000013840000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000013840000c13d000000000001004b0000139c0000613d000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e001000041000016610001043000000000010000190000166100010430000000000003004b000013b00000c13d0000000001090019000000400400043d000200000004001d000005a80200004100000000002404350000000403400039000000200200003900000000002304350000002402400039165f11cb0000040f00000002020000290000000001210049000005990010009c0000059901008041000005990020009c000005990200804100000060011002100000004002200210000000000121019f0000166100010430000000400100043d00000064021000390000063803000041000000000032043500000044021000390000063903000041000000000032043500000024021000390000002a030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c000005990100804100000040011002100000063a011001c700001661000104300000059900b0009c000005990b0080410000004002b00210000005990030009c00000599030080410000006001300210000000000121019f0000166100010430000000000001042f000000400100043d00000044021000390000063b03000041000000000032043500000024021000390000001d030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c00000599010080410000004001100210000005a9011001c70000166100010430000000000100041a0000059c011001970000000002000411000000000012004b000013d00000c13d000000000001042d000000400100043d000000440210003900000619030000410000000000320435000000240210003900000016030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c00000599010080410000004001100210000005a9011001c700001661000104300005000000000002000000400300043d000006340030009c000014280000813d000000a002300039000000400020043f00000080023000390000000000020435000000600230003900000000000204350000004002300039000000000002043500000020023000390000000000020435000000000003043500000060021000390000000002020433000100000002001d000500000001001d0000000012010434000300000002001d000200000001001d0000000001010433000400000001001d000005f00100004100000000001004430000000001000414000005990010009c0000059901008041000000c001100210000005f1011001c70000800b02000039165f165a0000040f00000001002001900000142e0000613d00000004020000290000059904200197000000000601043b000000000346004b0000000501000029000014220000413d00000080021000390000000002020433000005ea0520019700000000023500a9000000000046004b000014130000613d00000000033200d9000000000053004b000014220000c13d0000000303000029000005ea03300197000000000032001a000014220000413d00000000023200190000000103000029000005ea03300197000005ea04200197000000000023004b00000000030480190000000000310435000005990260019700000002030000290000000000230435000000000001042d0000061a01000041000000000010043f0000001101000039000000040010043f000005e00100004100001661000104300000061a01000041000000000010043f0000004101000039000000040010043f000005e0010000410000166100010430000000000001042f0002000000000002000000400900043d000006330090009c000014af0000813d0000059c0a1001970000004001900039000000400010043f00000020019000390000063703000041000000000031043500000020010000390000000000190435000000002302043400000000010004140000000400a0008c0000146d0000c13d00000001020000390000000101000031000000000001004b000014850000613d0000059d0010009c000014af0000213d0000001f041000390000062f044001970000003f044000390000062f04400197000000400c00043d00000000044c00190000000000c4004b000000000500003900000001050040390000059d0040009c000014af0000213d0000000100500190000014af0000c13d000000400040043f000000000b1c04360000062f031001980000001f0410018f00000000013b001900000003050003670000145f0000613d000000000605034f00000000070b0019000000006806043c0000000007870436000000000017004b0000145b0000c13d000000000004004b000014870000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000014870000013d000005990030009c00000599030080410000006003300210000005990020009c00000599020080410000004002200210000000000223019f000005990010009c0000059901008041000000c001100210000000000112019f00000000020a0019000200000009001d00010000000a001d165f16550000040f000000010a0000290000000209000029000000010220018f00030000000103550000006001100270000105990010019d0000059901100197000000000001004b000014430000c13d000000600c000039000000800b00003900000000030c0433000000000002004b000014b70000613d000000000003004b000014a20000c13d00020000000c001d00010000000b001d000006150100004100000000001004430000000400a004430000000001000414000005990010009c0000059901008041000000c00110021000000616011001c70000800202000039165f165a0000040f0000000100200190000014e90000613d000000000101043b000000000001004b0000000201000029000014ea0000613d0000000003010433000000000003004b000000010b000029000014ae0000613d000005e70030009c000014b50000213d0000001f0030008c000014b50000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000014b50000c13d000000000001004b000014cd0000613d000000000001042d0000061a01000041000000000010043f0000004101000039000000040010043f000005e001000041000016610001043000000000010000190000166100010430000000000003004b000014e10000c13d0000000001090019000000400400043d000200000004001d000005a80200004100000000002404350000000403400039000000200200003900000000002304350000002402400039165f11cb0000040f00000002020000290000000001210049000005990010009c0000059901008041000005990020009c000005990200804100000060011002100000004002200210000000000121019f0000166100010430000000400100043d00000064021000390000063803000041000000000032043500000044021000390000063903000041000000000032043500000024021000390000002a030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c000005990100804100000040011002100000063a011001c700001661000104300000059900b0009c000005990b0080410000004002b00210000005990030009c00000599030080410000006001300210000000000121019f0000166100010430000000000001042f000000400100043d00000044021000390000063b03000041000000000032043500000024021000390000001d030000390000000000320435000005a8020000410000000000210435000000040210003900000020030000390000000000320435000005990010009c00000599010080410000004001100210000005a9011001c70000166100010430000000000010043f0000000601000039000000200010043f0000000001000414000005990010009c0000059901008041000000c001100210000005a2011001c70000801002000039165f165a0000040f00000001002001900000150d0000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d000000000100001900001661000104300003000000000002000100000002001d000300000001001d000000000101041a000200000001001d000005f00100004100000000001004430000000001000414000005990010009c0000059901008041000000c001100210000005f1011001c70000800b02000039165f165a0000040f0000000100200190000015710000613d000000020800002900000080028002700000059903200197000000000201043b000000000532004b00000003070000290000156b0000413d00000001017000390000152a0000c13d000000000207041a0000153c0000013d000000000301041a000000800630027000000000045600a900000000055400d9000000000065004b0000156b0000c13d000005ea05800197000000000054001a0000156b0000413d000005ea033001970000000004540019000000000043004b0000000003048019000005a0048001970000008002200210000005f402200197000000000242019f000000000232019f000000010600002900000020036000390000000004030433000005ea04400197000005ea05200197000000000054004b00000000050440190000063c02200197000000000225019f0000000005060433000000000005004b0000000005000019000005f50500c041000000000252019f000000000027041b000000400260003900000000050204330000008005500210000000000445019f000000000041041b0000000001000039000000010100c039000000400400043d00000000011404360000000003030433000005ea0330019700000000003104350000000001020433000005ea0110019700000040024000390000000000120435000005990040009c000005990400804100000040014002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f0000063d011001c70000800d0200003900000001030000390000063e04000041165f16550000040f0000000100200190000015720000613d000000000001042d0000061a01000041000000000010043f0000001101000039000000040010043f000005e0010000410000166100010430000000000001042f000000000100001900001661000104300000059c04400197000000400510003900000000004504350000002004100039000000000034043500000000002104350000006001100039000000000001042d0006000000000002000000000401041a000005fe00400198000015d00000613d000000000002004b000015d00000613d000600000004001d000500000002001d000200000003001d000300000001001d0000000101100039000100000001001d000000000101041a000400000001001d000005f00100004100000000001004430000000001000414000005990010009c0000059901008041000000c001100210000005f1011001c70000800b02000039165f165a0000040f0000000100200190000015d10000613d000000060300002900000080023002700000059902200197000000000101043b000000000421004b000015ec0000413d000005ea033001970000000405000029000005ea02500197000015a20000c13d00000005040000290000000305000029000015b60000013d000000000023004b000015f40000213d000000800650027000000000056400a900000000044500d9000000000064004b000015ec0000c13d000000000035001a000015ec0000413d00000000033500190000008001100210000005f4011001970000000305000029000000000405041a0000063f04400197000000000114019f000000000015041b000000000032004b00000000030240190000000504000029000000000042004b000015d20000413d000000000143004b000015e30000413d000005ea01100197000000000205041a0000064102200197000000000112019f000000000015041b000000400100043d0000000000410435000005990010009c000005990100804100000040011002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005a4011001c70000800d0200003900000001030000390000064204000041165f16550000040f0000000100200190000015f20000613d000000000001042d000000000001042f000000400100043d0000000004010019000000040110003900000002030000290000059c00300198000015fc0000c13d000006460300004100000000003404350000000000210435000000240140003900000005020000290000000000210435000005990040009c0000059904008041000000400140021000000620011001c700001661000104300000000101000029000000000101041a0000008001100272000015ec0000613d00000005043000690000000002140019000000010220008a000000000042004b000016010000813d0000061a01000041000000000010043f0000001101000039000000040010043f000005e001000041000016610001043000000000010000190000166100010430000000400100043d00000640020000410000000000210435000005990010009c00000599010080410000004001100210000005e5011001c700001661000104300000064503000041000600000004001d00000000003404350000000503000029000016150000013d00000000021200d9000000400100043d0000000005010019000000040110003900000002040000290000059c00400198000016120000c13d00000644040000410000000000450435000000000021043500000024015000390000000000310435000005990050009c0000059905008041000000400150021000000620011001c700001661000104300000064304000041000600000005001d00000000004504350000000204000029165f15740000040f00000006020000290000000001210049000005990010009c00000599010080410000006001100210000005990020009c00000599020080410000004002200210000000000121019f0000166100010430000000000001042f000005990010009c00000599010080410000004001100210000005990020009c00000599020080410000006002200210000000000112019f0000000002000414000005990020009c0000059902008041000000c002200210000000000112019f000005d9011001c70000801002000039165f165a0000040f0000000100200190000016350000613d000000000101043b000000000001042d0000000001000019000016610001043000000000050100190000000000200443000000050030008c000016450000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b0000163d0000413d000005990030009c000005990300804100000060013002100000000002000414000005990020009c0000059902008041000000c002200210000000000112019f00000647011001c70000000002050019165f165a0000040f0000000100200190000016540000613d000000000101043b000000000001042d000000000001042f00001658002104210000000102000039000000000001042d0000000002000019000000000001042d0000165d002104230000000102000039000000000001042d0000000002000019000000000001042d0000165f00000432000016600001042e00001661000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf0200000000000000000000000000000000000040000000000000000000000000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a53202000000000000000000000000000000000000200000000000000000000000002640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d8000000020000000000000000000000000000014000000100000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000c4bffe2a00000000000000000000000000000000000000000000000000000000dc0bd97000000000000000000000000000000000000000000000000000000000eb521a4b00000000000000000000000000000000000000000000000000000000eb521a4c00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000dc0bd97100000000000000000000000000000000000000000000000000000000e0351e1300000000000000000000000000000000000000000000000000000000cf7401f200000000000000000000000000000000000000000000000000000000cf7401f300000000000000000000000000000000000000000000000000000000db6327dc00000000000000000000000000000000000000000000000000000000c4bffe2b00000000000000000000000000000000000000000000000000000000c75eea9c00000000000000000000000000000000000000000000000000000000b0f479a000000000000000000000000000000000000000000000000000000000bb98546a00000000000000000000000000000000000000000000000000000000bb98546b00000000000000000000000000000000000000000000000000000000c0d7865500000000000000000000000000000000000000000000000000000000b0f479a100000000000000000000000000000000000000000000000000000000b794658000000000000000000000000000000000000000000000000000000000a7cd63b600000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000af58d59f000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000009a4575b90000000000000000000000000000000000000000000000000000000054c8a4f20000000000000000000000000000000000000000000000000000000078a010b1000000000000000000000000000000000000000000000000000000007d54534d000000000000000000000000000000000000000000000000000000007d54534e000000000000000000000000000000000000000000000000000000008926f54f0000000000000000000000000000000000000000000000000000000078a010b20000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000006cfd1552000000000000000000000000000000000000000000000000000000006cfd1553000000000000000000000000000000000000000000000000000000006d3d1a580000000000000000000000000000000000000000000000000000000054c8a4f300000000000000000000000000000000000000000000000000000000663200870000000000000000000000000000000000000000000000000000000021df0da60000000000000000000000000000000000000000000000000000000039077536000000000000000000000000000000000000000000000000000000003907753700000000000000000000000000000000000000000000000000000000432a6ba30000000000000000000000000000000000000000000000000000000021df0da700000000000000000000000000000000000000000000000000000000240028e8000000000000000000000000000000000000000000000000000000000a861f29000000000000000000000000000000000000000000000000000000000a861f2a00000000000000000000000000000000000000000000000000000000181f5a770000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000a2fd4930200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c660000000000000000000000000000000000000000000000000000000064000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000008e4a23d600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5fc17cea59c2955cb181b03393209566960365771dbba9dc3d510180e7cb312088e93f8fa400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000008000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff3f000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000ffffffffffffffffffffffffffffffff8020d12400000000000000000000000000000000000000000000000000000000d68af9cc00000000000000000000000000000000000000000000000000000000433fc33d000000000000000000000000000000000000000000000000000000001d5ad3c500000000000000000000000000000000000000000000000000000000fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c250796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7fffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000008d340f17e19058004c20453540862a9c62778504476f6756755cb33bcd6c38c28579befe00000000000000000000000000000000000000000000000000000000fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c2515204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d8599161e670e4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000140000000000000000002000000000000000000000000000000000000e00000000000000000000000000350d63aa5f270e01729d00d627eeb8f3429772b1818c016c66a588a864f912b0000000000000000000000ff0000000000000000000000000000000000000000036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0000000000000000000000000000000000000000000000000ffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff000000000000008000000000000000000000000000000000000000000000003fffffffffffffffe0020000000000000000000000000000000000004000000080000000000000000002dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f16840000000000000000000000000000000000000004000000800000000000000000405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace000000000000000000000000000000000000000000000000fffffffffffffe9f961c9a4f000000000000000000000000000000000000000000000000000000002cbc26bb000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000053ad11d800000000000000000000000000000000000000000000000000000000d0d2597600000000000000000000000000000000000000000000000000000000a8d87a3b00000000000000000000000000000000000000000000000000000000728fe07b000000000000000000000000000000000000000000000000000000009f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd60008a9902c7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0db4d6220746a38cbc5335f7e108f7de80f482f4d23350253dfd0917df75a14bf1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000000a861f2a000000000000000000000000000000000000000000000000000000006fa7abcf1345d1d478e5ea0da6b5f26a90eadb0546ef15ed3833944fbfd1db624f6e6c792063616c6c61626c65206279206f776e6572000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a533800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf756635f4a7b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffe5f83826b2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000002d87480f50083e2b2759522a8fdda59802650a8055e609a7772cf70c07748f5224eb47e5000000000000000000000000000000000000000000000000000000004c6f636b52656c65617365546f6b656e506f6f6c20312e352e300000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000002400000080000000000000000070a0823100000000000000000000000000000000000000000000000000000000c2c3f06e49b9f15e7b4af9055e183b0d73362e033ad82a07dec9bf9840171719bb55fd270000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaff2afbeffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1d4056600000000000000000000000000000000000000000000000000000000aff2afbf0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000e64dd2900000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000ffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000ffffffffffffff60a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff805361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e0000000000000000000000000000000000000084000000000000000000000000416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000ffffffffffffffffffffff00ffffffff0000000000000000000000000000000002000000000000000000000000000000000000600000000000000000000000009ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff9725942a00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000001871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690ad0c8d23a0000000000000000000000000000000000000000000000000000000015279c08000000000000000000000000000000000000000000000000000000001a76572a00000000000000000000000000000000000000000000000000000000f94ebcd100000000000000000000000000000000000000000000000000000000020000020000000000000000000000000000000000000000000000000000000017d7e45b984975a46dbdaf6d028174dba298b890a7b749a087b67443a2c5fa43") + func (_LockReleaseTokenPool *LockReleaseTokenPool) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _LockReleaseTokenPool.abi.Events["AllowListAdd"].ID: @@ -3179,6 +3200,82 @@ func (_LockReleaseTokenPool *LockReleaseTokenPool) Address() common.Address { return _LockReleaseTokenPool.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *LockReleaseTokenPool, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(LockReleaseTokenPoolZkBin) + fmt.Println("deploying") + LockReleaseTokenPoolAbi, err := LockReleaseTokenPoolMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := LockReleaseTokenPoolAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := LockReleaseTokenPoolMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &LockReleaseTokenPool{address: address, abi: *parsed, LockReleaseTokenPoolCaller: LockReleaseTokenPoolCaller{contract: contractBind}, LockReleaseTokenPoolTransactor: LockReleaseTokenPoolTransactor{contract: contractBind}, LockReleaseTokenPoolFilterer: LockReleaseTokenPoolFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type LockReleaseTokenPoolInterface interface { CanAcceptLiquidity(opts *bind.CallOpts) (bool, error) diff --git a/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go b/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go index 121135075d..929f9965a4 100644 --- a/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go +++ b/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go @@ -4,6 +4,7 @@ package registry_module_owner_custom import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -39,7 +44,21 @@ var RegistryModuleOwnerCustomABI = RegistryModuleOwnerCustomMetaData.ABI var RegistryModuleOwnerCustomBin = RegistryModuleOwnerCustomMetaData.Bin -func DeployRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind.ContractBackend, tokenAdminRegistry common.Address) (common.Address, *types.Transaction, *RegistryModuleOwnerCustom, error) { +func DeployRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind.ContractBackend, tokenAdminRegistry common.Address) (common.Address, *CustomTransaction, *RegistryModuleOwnerCustom, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncRegistryModuleOwnerCustom(auth, backend, tokenAdminRegistry) + } + parsed, err := RegistryModuleOwnerCustomMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -52,7 +71,7 @@ func DeployRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind.Contr if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &RegistryModuleOwnerCustom{address: address, abi: *parsed, RegistryModuleOwnerCustomCaller: RegistryModuleOwnerCustomCaller{contract: contract}, RegistryModuleOwnerCustomTransactor: RegistryModuleOwnerCustomTransactor{contract: contract}, RegistryModuleOwnerCustomFilterer: RegistryModuleOwnerCustomFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &RegistryModuleOwnerCustom{address: address, abi: *parsed, RegistryModuleOwnerCustomCaller: RegistryModuleOwnerCustomCaller{contract: contract}, RegistryModuleOwnerCustomTransactor: RegistryModuleOwnerCustomTransactor{contract: contract}, RegistryModuleOwnerCustomFilterer: RegistryModuleOwnerCustomFilterer{contract: contract}}, nil } type RegistryModuleOwnerCustom struct { @@ -353,6 +372,8 @@ func (_RegistryModuleOwnerCustom *RegistryModuleOwnerCustomFilterer) ParseAdmini return event, nil } +var RegistryModuleOwnerCustomZkBin string = ("0x00010000000000020001000000000002000000600310027000000067033001970000000100200190000000220000c13d0000008002000039000000400020043f000000040030008c000000db0000413d000000000201043b000000e0022002700000006e0020009c0000004f0000613d0000006f0020009c0000008f0000613d000000700020009c000000db0000c13d0000000001000416000000000001004b000000db0000c13d000000c001000039000000400010043f0000001f01000039000000800010043f0000007402000041000000a00020043f0000002003000039000000c00030043f000000e00010043f000001000020043f0000011f0000043f0000007501000041000001970001042e0000000002000416000000000002004b000000db0000c13d0000001f023000390000006802200197000000a002200039000000400020043f0000001f0430018f0000006905300198000000a002500039000000330000613d000000a006000039000000000701034f000000007807043c0000000006860436000000000026004b0000002f0000c13d000000000004004b000000400000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000000db0000413d000000a00100043d0000006a0010009c000000db0000213d0000006a01100198000000a30000c13d000000400100043d0000006c020000410000000000210435000000670010009c000000670100804100000040011002100000006d011001c70000019800010430000000240030008c000000db0000413d0000000002000416000000000002004b000000db0000c13d0000000401100370000000000101043b0000006a0010009c000000db0000213d0000006a021001970000007103000041000000800030043f0000000003000414000000040020008c0000009e0000613d000100000001001d000000670030009c0000006703008041000000c00130021000000072011001c7019601910000040f00000060031002700000006703300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000730000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000006f0000c13d000000000006004b000000800000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000d10000c13d0000001f0530018f0000006906300198000000400200043d0000000004620019000000eb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000008a0000c13d000000eb0000013d000000240030008c000000db0000413d0000000002000416000000000002004b000000db0000c13d0000000401100370000000000101043b0000006a0010009c000000db0000213d0000006a021001970000007303000041000000800030043f0000000003000414000000040020008c000000ac0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000d20000013d000000800010043f0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000006b01000041000001970001042e000100000001001d000000670030009c0000006703008041000000c00130021000000072011001c7019601910000040f000000800a00003900000060031002700000006703300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000c10000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000000bd0000c13d000000000006004b000000ce0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000e00000613d00000001010000290000001f02400039000000600220018f00000080022001bf000000400020043f000000200030008c000000db0000413d000000800200043d0000006a0020009c000000dd0000a13d00000000010000190000019800010430019600fe0000040f0000000001000019000001970001042e0000001f0530018f0000006906300198000000400200043d0000000004620019000000eb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000000e70000c13d000000000005004b000000f80000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000000670020009c00000067020080410000004002200210000000000112019f00000198000104300003000000000002000200000001001d0003006a0020019b0000000001000411000000030010006b000001570000c13d000000780100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000000670010009c0000006701008041000000c00110021000000079011001c70000800502000039019601910000040f0000000100200190000001540000613d000000000101043b0000007a0200004100000000002004430000006a01100197000100000001001d00000004001004430000000001000414000000670010009c0000006701008041000000c0011002100000007b011001c70000800202000039019601910000040f0000000100200190000001540000613d000000000101043b000000000001004b000001550000613d000000400400043d0000002401400039000000030200002900000000002104350000007c01000041000000000014043500000002010000290000006a051001970000000401400039000000000051043500000000010004140000000102000029000000040020008c000001440000613d000000670040009c000000670300004100000000030440190000004003300210000000670010009c0000006701008041000000c001100210000000000131019f00000077011001c7000200000005001d000100000004001d0196018c0000040f000000010400002900000002050000290000006003100270000000670030019d00000001002001900000016c0000613d0000007d0040009c000001660000813d000000400040043f0000000001000414000000670010009c0000006701008041000000c0011002100000007e011001c70000800d0200003900000003030000390000007f0400004100000003060000290196018c0000040f0000000100200190000001550000613d000000000001042d000000000001042f0000000001000019000001980001043000000002010000290000006a01100197000000400200043d0000002403200039000000000013043500000076010000410000000000120435000000040120003900000003030000290000000000310435000000670020009c0000006702008041000000400120021000000077011001c700000198000104300000008001000041000000000010043f0000004101000039000000040010043f0000008101000041000001980001043000000067033001970000001f0530018f0000006906300198000000400200043d0000000004620019000001780000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001740000c13d000000000005004b000001850000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000000670020009c00000067020080410000004002200210000000000112019f0000019800010430000000000001042f0000018f002104210000000102000039000000000001042d0000000002000019000000000001042d00000194002104230000000102000039000000000001042d0000000002000019000000000001042d0000019600000432000001970001042e000001980001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000800000010000000000000000009fabe1c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ff12c3540000000000000000000000000000000000000000000000000000000096ea2f7a00000000000000000000000000000000000000000000000000000000181f5a778fd6a6ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000052656769737472794d6f64756c654f776e6572437573746f6d20312e352e30000000000000000000000000000000000000000060000000c00000000000000000c454d182000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000e677ae37000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000020000000000000000000000000000000000000000000000000000000000000009590fb70af4b833346363965e043a9339e8c7d378b8a2b903c75c277faec4f94e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000cc96f0fc3b19b78dddeab7f470039c0066d2b516d7c1854b459e02acd493c97e") + func (_RegistryModuleOwnerCustom *RegistryModuleOwnerCustom) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _RegistryModuleOwnerCustom.abi.Events["AdministratorRegistered"].ID: @@ -371,6 +392,82 @@ func (_RegistryModuleOwnerCustom *RegistryModuleOwnerCustom) Address() common.Ad return _RegistryModuleOwnerCustom.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *RegistryModuleOwnerCustom, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(RegistryModuleOwnerCustomZkBin) + fmt.Println("deploying") + RegistryModuleOwnerCustomAbi, err := RegistryModuleOwnerCustomMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := RegistryModuleOwnerCustomAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := RegistryModuleOwnerCustomMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &RegistryModuleOwnerCustom{address: address, abi: *parsed, RegistryModuleOwnerCustomCaller: RegistryModuleOwnerCustomCaller{contract: contractBind}, RegistryModuleOwnerCustomTransactor: RegistryModuleOwnerCustomTransactor{contract: contractBind}, RegistryModuleOwnerCustomFilterer: RegistryModuleOwnerCustomFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type RegistryModuleOwnerCustomInterface interface { TypeAndVersion(opts *bind.CallOpts) (string, error) diff --git a/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go b/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go index e314f0243a..023d1745a6 100644 --- a/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go +++ b/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go @@ -4,6 +4,7 @@ package rmn_contract import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -77,7 +82,21 @@ var RMNContractABI = RMNContractMetaData.ABI var RMNContractBin = RMNContractMetaData.Bin -func DeployRMNContract(auth *bind.TransactOpts, backend bind.ContractBackend, config RMNConfig) (common.Address, *types.Transaction, *RMNContract, error) { +func DeployRMNContract(auth *bind.TransactOpts, backend bind.ContractBackend, config RMNConfig) (common.Address, *CustomTransaction, *RMNContract, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncRMNContract(auth, backend, config) + } + parsed, err := RMNContractMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -90,7 +109,7 @@ func DeployRMNContract(auth *bind.TransactOpts, backend bind.ContractBackend, co if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &RMNContract{address: address, abi: *parsed, RMNContractCaller: RMNContractCaller{contract: contract}, RMNContractTransactor: RMNContractTransactor{contract: contract}, RMNContractFilterer: RMNContractFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &RMNContract{address: address, abi: *parsed, RMNContractCaller: RMNContractCaller{contract: contract}, RMNContractTransactor: RMNContractTransactor{contract: contract}, RMNContractFilterer: RMNContractFilterer{contract: contract}}, nil } type RMNContract struct { @@ -2583,6 +2602,8 @@ func (_RMNContract *RMNContractFilterer) ParseVotedToCurse(log types.Log) (*RMNC return event, nil } +var RMNContractZkBin string = ("0x0002000000000002001600000000000200010000000103550000006003100270000005ba0030019d000005ba033001970000000100200190000006e40000c13d000000a002000039000000400020043f000000040030008c00000bf10000413d000000000401043b000000e004400270000005ea0040009c0000018f0000c13d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000141034f000000000101043b000900000001001d000005bd0010009c00000bf10000213d000800240020003d000000090100002900000006011002100000000801100029000000000031004b00000bf10000213d0000000b01000039000000000101041a000005bd00100198000000340000613d0000061901000041000000000010043f0000000a01000039000000200010043f0000061a01000041000000000101041a0000061b0010019800000b6a0000c13d0000000401000039000000000101041a000e00000001001d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000005bf0020009c00000b200000213d0000000e03000029000005ba04300197000000000101043b0000006003200039000000400030043f000000000101041a0000002803100270000000ff0330018f0000004005200039000700000005001d0000000000350435000005ba0310019700000000023204360000002001100270000000ff0110018f000200000002001d0000000000120435000b00000004001d000000000043004b00000ccd0000c13d000000090000006b000001870000613d0000000002000019000600000000001d000c00000002001d000000060120021000000008011000290000000002100079000005be0020009c00000bf10000213d000000400020008c00000bf10000413d000000400200043d000e00000002001d000006150020009c00000b200000213d0000000e020000290000004002200039000000400020043f0000000103000367000000000213034f000000000202043b000005c20020009c00000bf10000213d0000002001100039000000000113034f0000000e030000290000000004230436000000000301043b000d00000004001d0000000000340435000000400100043d00000040041000390000000000340435000000400300003900000000033104360000000000230435000005bf0010009c00000b200000213d0000006002100039000000400020043f000005ba0030009c000005ba0300804100000040023002100000000001010433000005ba0010009c000005ba010080410000006001100210000000000121019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000a00000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400500043d000005c10050009c00000b200000213d000000000101043b0000008002500039000000400020043f000000000301041a000000ff003001900000000001000039000000010100c039000000000715043600000060065000390000003801300270000000000016043500000028023002700000ffff0220018f000000400850003900000000002804350000000803300270000005ba033001970000000000370435000000cf0000613d0000000e010000290000000001010433000005c201100197000000400200043d00000000011204360000000d0300002900000000030304330000000000310435000005ba0020009c000005ba0200804100000040012002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005ca011001c70000800d0200003900000003030000390000062504000041000000ed0000013d0000000b0030006c000000f70000c13d00000007030000290000000003030433000000ff0330018f0000000f0030008c000008c30000213d000000000431022f00000001004001900000010b0000613d0000000e010000290000000001010433000005c201100197000000400200043d00000000011204360000000d0300002900000000030304330000000000310435000005ba0020009c000005ba0200804100000040012002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005ca011001c70000800d02000039000000030300003900000620040000410000000b05000029000000000600041116e316d90000040f000000010020019000000bf10000613d0000000c020000290000000102200039000000090020006c0000005f0000413d000001820000013d000000400500043d000005c10050009c00000b200000213d0000008001500039000000400010043f00000020075000390000000b0100002900000000001704350000006006500039000000000006043500000000000504350000004008500039000000000008043500000007010000290000000001010433000000ff0310018f0000000f0030008c00000000010000190000000002000019000008c30000213d000000010330020f000000000113019f000000000016043500000002030000290000000001030433000000ff0110018f00000000012100190000ffff0010008c000012650000213d000300000007001d000400000006001d000500000005001d000600000008001d000000000018043500000000010304330000000e020000290000000002020433000005c202200197000000400300043d00000000022304360000000d040000290000000004040433000000ff0110018f000000400530003900000000001504350000000000420435000005ba0030009c000005ba0300804100000040013002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000617011001c70000800d02000039000000030300003900000621040000410000000b05000029000000000600041116e316d90000040f000000010020019000000bf10000613d000000060100002900000000010104330000ffff0110018f0000000302000039000000000202041a0000ffff0220018f000000000021004b0000015b0000413d0000000102000039000000050300002900000000002304350000000e020000290000000002020433000005c202200197000000400300043d00000000022304360000000d040000290000000004040433000000400530003900000000001504350000000000420435000005ba0030009c000005ba0300804100000040013002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000617011001c70000800d02000039000000020300003900000622040000410000000b0500002916e316d90000040f000000010020019000000bf10000613d0000000a01000029000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d00000005020000290000000002020433000000000002004b0000000302000029000000000202043300000008022002100000062302200197000000010220c1bf0000000603000029000000000303043300000028033002100000062403300197000000000232019f000000040300002900000000030304330000003803300210000000000232019f000000000101043b000000000021041b0000000c0300002900000001033000390000000002030019000000090030006c000600010000003d0000005f0000413d000001850000013d00000006010000290000000100100190000001870000613d0000000001000019000016e40001042e000000400100043d00000626020000410000000000210435000005ba0010009c000005ba010080410000004001100210000005e6011001c7000016e500010430000005eb0040009c0000029e0000a13d000005ec0040009c000002b10000a13d000005ed0040009c000003130000213d000005f10040009c000008c90000613d000005f20040009c000007530000613d000005f30040009c00000bf10000c13d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000401100370000000000101043b000006120010019800000bf10000c13d0000000402000039000000000202041a000e00000002001d0000010002000039000000400020043f0000000203000039000000000303041a000005bd0030009c00000b200000213d00000005043002100000003f04400039000005c005400197000006130050009c00000b200000213d0000010004500039000000400040043f000001000030043f000000000003004b00000c0c0000c13d0000010002000039000000a00020043f0000000302000039000000000202041a0000ffff0320018f000000c00030043f00000010022002700000ffff0220018f000000e00020043f000005e201100197000000000010043f0000000a01000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d0000000e02000029000905ba0020019b000000000101043b000000000201041a000005ba03200197000000090030006c000000000300003900000001030080390000004002200270000b00ff0020019400000001033061bf0000006002000039000700010000003d000c00010010003d000a000100300193000100000000001d000400000000001d0000000003020019000001e80000013d000000000004004b000400080000002d0000000701000029000000020010008c000700010010003d000000060200002900000005030000290000106f0000813d000300200020003d000200200030003d000000a00100043d0000000001010433000600000002001d000500000003001d000800040000002d000001fd0000013d001000000004001d0000000003000415000000100330008a0000000503300210000000000002004b0000000502300270000000000200003f000000010200c03f000002360000c13d000000800200043d000000010120008a000000000002004b000002640000613d000000800010043f000000a00200043d0000000003020433000000000031004b0000020d0000813d000000050110021000000000012100190000002001100039000000000101043300000060021000390000000002020433000d00ff0020019300000020011000390000000001010433000005c2011001970000020f0000013d000005c201000041000d00000000001d000e00000001001d000000000010043f0000000c01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000006150020009c00000b200000213d000000000101043b0000004003200039000000400030043f000000000401041a000005ba034001970000000001320436000005c60240019700000000002104350000000a0000006b0000000b04000029000001f00000613d000000090030006c0000000104000039000001f00000613d00000000030004150000000f0330008a00000005033002100000000e04000029000005c20040009c000f00000000003d000f00010000603d000001f40000613d000001f90000013d0000000702000029000000010020008c000002410000c13d0000000801000029000800010010003e000012650000613d000000800200043d000000010120008a000000000002004b000001fd0000c13d000002680000013d0000000702000029000000020020008c00000bf10000c13d00000001020000290000ffff0220018f0000000d02200029000100000002001d0000ffff0020008c000012650000213d000000040000006b000012650000613d0000000403000029000400010030009200000006020000290000000002020433000000040020006c000010bf0000a13d0000000404000029000000050240021000000003032000290000000e05000029000000000053043500000005030000290000000003030433000000000043004b000010bf0000a13d00000002022000290000000001010433000005c6011001970000000000120435000000800200043d000000010120008a000000000002004b000001ee0000c13d0000106f0000013d0000000701000029000000010010008c000400080000002d000001e20000c13d0000000801000029000005bd0010009c00000b200000213d000000080100002900000005011002100000003f02100039000005c003200197000000400400043d0000000002340019000600000004001d000000000042004b00000000040000390000000104004039000005bd0020009c00000b200000213d000000010040019000000b200000c13d000000400020043f00000006020000290000000804000029000000000442043600000000020000310000000102200367000000000001004b000002870000613d0000000005140019000000000602034f000000006706043c0000000004740436000000000054004b000002830000c13d0000001f04100190000000400500043d0000000003350019000500000005001d000000000053004b00000000050000390000000105004039000005bd0030009c00000b200000213d000000010050019000000b200000c13d000000400030043f000000050300002900000008050000290000000003530436000000000001004b000001e00000613d0000000001130019000000002502043c0000000003530436000000000013004b000002990000c13d000001e00000013d000005fa0040009c000002c10000213d000006010040009c000005e60000a13d000006020040009c000008d10000613d000006030040009c0000080f0000613d000006040040009c00000bf10000c13d0000000001000416000000000001004b00000bf10000c13d0000000b01000039000000000101041a000005bd01100197000000a00010043f0000062701000041000016e40001042e000005f40040009c000003d90000a13d000005f50040009c000008e10000613d000005f60040009c0000081f0000613d000005f70040009c00000bf10000c13d0000000001000416000000000001004b00000bf10000c13d000000000100041a000005c201100197000000a00010043f0000062701000041000016e40001042e000005fb0040009c000006220000a13d000005fc0040009c00000ae20000613d000005fd0040009c000008380000613d000005fe0040009c00000bf10000c13d000000440030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d000000e002000039000000400020043f0000000402100370000000000202043b000005c20020009c00000bf10000213d000000a00020043f0000002401100370000000000101043b000000c00010043f000001000020043f000001200010043f0000004001000039000000e00010043f0000014001000039000000400010043f0000000001000414000005ba0010009c000005ba01008041000000c00110021000000607011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000000ff011001900000030e0000c13d00000004010000390000000101100367000000000101043b000005c20010009c00000bf10000213d000000000010043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001004b0000000001000039000000010100c039000000400200043d00000b9e0000013d000005ee0040009c00000b070000613d000005ef0040009c000008770000613d000005f00040009c00000bf10000c13d000000440030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d000000e002000039000000400020043f0000000402100370000000000202043b000005c20020009c00000bf10000213d000000a00020043f0000002401100370000000000101043b000000c00010043f000001000020043f000001200010043f0000004001000039000000e00010043f0000014001000039000000400010043f0000000001000414000005ba0010009c000005ba01008041000000c00110021000000607011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400400043d000005c10040009c00000b200000213d000000000101043b0000008002400039000000400020043f000000000501041a00000060014000390000003802500270000000000021043500000028015002700000ffff0310018f000000400140003900000000003104350000000801500270000005ba0110019700000020064000390000000000160435000000ff005001900000000006000039000000010600c039000d00000006001d000000000064043500000060040000390000000406000039000000000606041a000005ba06600197000000000061004b000e00000000001d0000000001040019000003c30000c13d000006080050009c000008c30000213d000006090050009c0000000005000019000003730000413d000000000602001900000000010200190000000005000019000000ff0550018f000000ff0050008c000012650000613d000000010660008a000000000116016f0000000105500039000005c4061001980000036b0000c13d00000005065002100000003f0160003900003fe00810018f000000400100043d0000000007180019000000000087004b00000000080000390000000108004039000005bd0070009c00000b200000213d000000010080019000000b200000c13d000000400070043f00000000055104360000001f0760018f000000000006004b0000038c0000613d0000000006650019000000000800003100000001088003670000000009050019000000008a08043c0000000009a90436000000000069004b000003880000c13d000000000007004b0000000209000039000000000809041a000005bd0080009c00000b200000213d00000005068002100000003f06600039000005c007600197000000400600043d0000000007760019000000000067004b000000000a000039000000010a004039000005bd0070009c00000b200000213d0000000100a0019000000b200000c13d000000400070043f0000000007860436000000000090043f000000000008004b000003bf0000613d0000060a09000041000000000a000019000000000b060019000000400c00043d000005c100c0009c00000b200000213d000000800dc000390000004000d0043f000000000d09041a000005c20dd00197000000000ddc0436000000010e9001bf000000000e0e041a000005c20fe001970000000000fd0435000000a80de00270000000ff0dd0018f000000600fc000390000000000df0435000000a00de00270000000ff0dd0018f000000400ec000390000000000de0435000000200bb000390000000000cb04350000000209900039000000010aa0003900000000008a004b000003a50000413d0000000009060433000000000009004b000010a40000c13d000e00000003001d000000400300043d000b00000003001d0000000002430436000c00000002001d000000600230003916e313db0000040f0000000b0400002900000040024000390000000d0300002900000000003204350000000e020000290000000c0300002900000000002304350000000001410049000005ba0010009c000005ba010080410000006001100210000005ba0040009c000005ba040080410000004002400210000000000121019f000016e40001042e000005f80040009c000008920000613d000005f90040009c00000bf10000c13d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000441034f000000000504043b000005bd0050009c00000b200000213d00000005045002100000003f04400039000005c0044001970000060f0040009c00000b200000213d000000a004400039000000400040043f000000a00050043f000000240220003900000007045002100000000004240019000000000034004b00000bf10000213d000000000005004b00000c2b0000c13d000000000100041a000005c2011001970000000002000411000000000012004b00000c770000c13d000000a00100043d000000000001004b0000061f0000613d0000000401000039000000000101041a000d05ba0010019b0000000002000019000700000000001d000600000000001d0000043f0000013d0000000002000415000000110220008a0000000502200210000000000005004b001100000000003d001100010000603d00000000040000190000000103000039000900000000001d0000053c0000613d0000000e0200002900000000020204330000000003060433000005c601100197000000400400043d00000020064000390000000000160435000005c60130019700000040034000390000000000130435000005e2012001970000000000140435000005ba0040009c000005ba0400804100000040014002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000617011001c70000800d0200003900000002030000390000063b0400004116e316d90000040f0000000100200190000b00000000001d00000bf10000613d000000060000006b0000000b03000029000000060300c029000000070000006b0000000904000029000000070400c02900000005020000290000000102200039000000a00100043d000000000012004b000700000004001d000600000003001d000011350000813d000500000002001d0000000501200210000000c0011000390000000001010433000900000001001d0000002001100039000800000001001d00000000010104330000000001010433000005e201100197000000000010043f0000000a01000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000401043b000000000104041a000005ba021001970000000d0020006b000a00000004001d000b00010040003d000004a30000613d000005c6021001970000000d022001af0000000a05000029000000000025041b0000000302000039000000000202041a00000010022002100000062d022001970000062e03100197000000000223019f0000000d022001af000000000025041b0000061b00100198000004a30000613d0000000201000039000000000101041a000000000001004b000004a30000613d0000000002000019000004760000013d0000000e0200002900000001022000390000000201000039000000000101041a000000000012004b000004a30000813d000e00000002001d0000000101200210000005cc0110009a000c00000001001d000000000101041a000005c201100197000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000062f0020009c000004700000413d000005ba032001970000000d0030006c000004700000813d000005c6022001970000000d022001af000000000021041b0000000c01000029000000000101041a000000a801100270000000ff0210018f0000000a04000029000000000104041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c000012650000213d000006300110019700000030022002100000063102200197000000000112019f000000000014041b000004700000013d00000008010000290000000001010433000e00000001001d000000090200002900000040012000390000000001010433000800000001001d0000000001020433000005c201100197000c00000001001d000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000900000001001d0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400300043d000006150030009c00000b200000213d000000000101043b0000004002300039000000400020043f000000000101041a000005ba021001970000000007230436000005c60110019700000000001704350000000903000029000000000303041a000000ff003001900000000e0300002900000020063000390000000c050000290000040c0000613d000005c20050009c000004df0000c13d0000000003000415000000140330008a0000000503300210001400010000003d000004e60000013d0000000003000415000000130330008a00000005033002100000000d0020006c001300000000003d001300010000603d0000040c0000c13d000000000001004b0000000502300270000000000200003f000000010200c03f0000040c0000613d0000000002060433000005c602200197000000000021004b000004f10000613d000000080000006b0000040c0000613d000300000007001d000400000006001d000000000050043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b0000000901000029000000000101041a0000000801100270000000ff0110018f0000000a04000029000000000204041a00000030032002700000ffff0330018f00000000011300490000ffff0010008c000012650000213d000006300220019700000030031002100000063103300197000000000223019f000000000024041b0000000e0200002900000000020204330000000903000029000000000303041a00000004040000290000000004040433000000400500043d00000060065000390000000000160435000005c601400197000000400450003900000000001404350000000801300270000000ff0110018f00000020035000390000000000130435000005e2012001970000000000150435000005ba0050009c000005ba0500804100000040015002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000637011001c70000800d02000039000000030300003900000638040000410000000d050000290000000c0600002916e316d90000040f000000010020019000000bf10000613d0000000002000415000000120220008a0000000502200210001200010000003d0000000104000039000000000300001900000004060000290000000307000029000900000003001d000300000007001d000400000006001d000200000004001d0000000a01000029000000000101041a00000040011002700000000502200270000000ff02100195000000ff00100190000005830000613d000005c201000041000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000005ba0010009c000005830000213d0000000a01000029000000000101041a00000020021002700000ffff0220018f00000030031002700000ffff0330018f000000000023004b000005830000813d00000634011001970000000a02000029000000000012041b0000000b01000039000000000101041a000005bd00100198000012650000613d0000062e02100197000000010110008a000005bd01100197000000000121019f0000000b02000039000000000012041b0000000e010000290000000001010433000005e201100197000000400200043d0000000000120435000005ba0020009c000005ba0200804100000040012002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000639011001c70000800d0200003900000001030000390000063a0400004116e316d90000040f0000000100200190000b00010000003d0000058c0000c13d00000bf10000013d000000090000006b0000058b0000613d00000003010000290000000001010433000900020000002d0000000c050000290000000406000029000004160000013d000b00000000001d000000400100043d000900000001001d000005db0010009c00000b200000213d0000000a01000029000000000101041a000a00000001001d0000000e010000290000000001010433000400000001001d0000000902000029000000c001200039000000400010043f000000080000006b0000000201000039000000030100c0390000000001120436000e00000001001d000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d0000000402000029000005e202200197000000000301043b00000009060000290000008001600039000000000021043500000060026000390000000c0400002900000000004204350000000a040000290000061b004001980000000005000039000000010500c03900000040046000390000000000540435000005bd033001970000000e0500002900000000080500190000000000350435000000a00360003900000000000304350000000c05000039000000000605041a000005bd0060009c00000b200000213d00000001056000390000000c07000039000000000057041b000000000070043f00000009050000290000000005050433000000040050008c000013b40000213d00000000070804330000000807700210000005dd077001970000000106600210000005de0860009a000000000908041a000005df09900197000000000779019f0000000004040433000000000004004b000005e0040000410000000004006019000000000447019f00000000020204330000005002200210000005e102200197000000000224019f000000000252019f000000000028041b000000000101043300000080011002700000000002030433000005e202200197000000000112019f000005e30260009a000000000012041b000900020000002d000004320000013d000006050040009c00000b260000613d000006060040009c00000bf10000c13d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000441034f000000000504043b000005bd0050009c00000b200000213d00000005045002100000003f04400039000005c0044001970000060f0040009c00000b200000213d000000a004400039000000400040043f000000a00050043f000000240220003900000006045002100000000004240019000000000034004b00000bf10000213d000000000005004b00000c5c0000c13d0000000001000411000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000500000001001d000000000101041a000000ff0010019000000ccd0000613d000000a00100043d000000000001004b00000d010000c13d000000400100043d0000064802000041000001890000013d000005ff0040009c00000b4d0000613d000006000040009c00000bf10000c13d000000440030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000441034f000000000504043b000005bd0050009c00000b200000213d00000005045002100000003f06400039000005c0066001970000060f0060009c00000b200000213d000000a006600039000000400060043f000000a00050043f00000024022000390000000004240019000000000034004b00000bf10000213d000000000005004b0000064f0000613d000000a005000039000000000621034f000000000606043b000005c20060009c00000bf10000213d000000200550003900000000006504350000002002200039000000000042004b000006460000413d0000002402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b0000000005000019000005c505008041000005c504400197000000000004004b0000000006000019000005c506004041000005c50040009c000000000605c019000000000006004b00000bf10000c13d0000000404200039000000000441034f000000000404043b000005bd0040009c00000b200000213d00000005054002100000003f06500039000005c006600197000000400700043d0000000006670019000a00000007001d000000000076004b00000000070000390000000107004039000005bd0060009c00000b200000213d000000010070019000000b200000c13d000000400060043f0000000a060000290000000006460436000900000006001d00000024022000390000000005250019000000000035004b00000bf10000213d000000000004004b000006850000613d0000000a03000029000000000421034f000000000404043b000005c20040009c00000bf10000213d000000200330003900000000004304350000002002200039000000000052004b0000067c0000413d000000000100041a000005c2011001970000000002000411000000000012004b00000c770000c13d000000a00100043d000000000001004b000010c50000c13d0000000a010000290000000001010433000000000001004b000001850000613d000e00000000001d000006990000013d0000000e02000029000e00010020003d0000000a0100002900000000010104330000000e0010006b000001850000813d0000000e0100002900000005011002100000000901100029000c00000001001d0000000001010433000005c201100197000d00000001001d000000000010043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000000000001004b000006930000c13d0000000701000039000000000101041a000005bd0010009c00000b200000213d00000001021000390000000703000039000000000023041b000006420110009a0000000d02000029000000000021041b000000000103041a000b00000001001d000000000020043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b0000000b02000029000000000021041b0000000a0100002900000000010104330000000e0010006c000010bf0000a13d0000000c010000290000000001010433000005c201100197000000400200043d0000000000120435000005ba0020009c000005ba0200804100000040012002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000639011001c70000800d020000390000000103000039000006430400004116e316d90000040f0000000100200190000006930000c13d00000bf10000013d0000008004000039000000400040043f0000000002000416000000000002004b00000bf10000c13d0000001f02300039000005bb022001970000008002200039000000400020043f0000001f0530018f000005bc063001980000008002600039000006f60000613d000000000701034f000000007807043c0000000004840436000000000024004b000006f20000c13d000000000005004b000007030000613d000000000461034f0000000305500210000000000602043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000420435000000200030008c00000bf10000413d000000800200043d000005bd0020009c00000bf10000213d000000800430003900000080062000390000000005640049000005be0050009c00000bf10000213d000000600050008c00000bf10000413d000000400500043d000e00000005001d000005bf0050009c00000b200000213d0000000e050000290000006005500039000000400050043f0000000007060433000005bd0070009c00000bf10000213d00000000066700190000001f07600039000000000047004b00000bf10000813d0000000068060434000005bd0080009c00000b200000213d00000005078002100000003f07700039000005c0077001970000000007570019000005bd0070009c00000b200000213d000000400070043f000000000085043500000007078002100000000007670019000000000047004b00000bf10000213d000000000008004b0000104a0000c13d0000000e040000290000000004540436000600000004001d000000a00420003900000000040404330000ffff0040008c00000bf10000213d00000006050000290000000000450435000000c00220003900000000020204330000ffff0020008c00000bf10000213d0000000e040000290000004004400039000500000004001d0000000000240435000000400200043d0000000004000411000000000004004b000011890000c13d0000004401200039000005e7030000410000000000310435000000240120003900000018030000390000000000310435000005e8010000410000000000120435000000040120003900000020030000390000000000310435000005ba0020009c000005ba020080410000004001200210000005e9011001c7000016e500010430000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000141034f000000000101043b000700000001001d000005bd0010009c00000bf10000213d000600240020003d000000070100002900000006011002100000000601100029000000000031004b00000bf10000213d000000000100041a000005c2011001970000000002000411000000000012004b00000b780000c13d000000070000006b000001850000613d0000000401000039000000000101041a000905ba0010019b000d00000000001d000007990000013d0000000e020000290000000002020433000005c202200197000000400300043d000000000223043600000008040000290000000004040433000000000001004b0000000001000039000000010100c039000000400530003900000000001504350000000000420435000005ba0030009c000005ba0300804100000040013002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000617011001c70000800d0200003900000002030000390000061804000041000000090500002916e316d90000040f000000010020019000000bf10000613d0000000d020000290000000102200039000d00000002001d000000070020006c000001850000813d0000000d01000029000000060110021000000006011000290000000002100079000005be0020009c00000bf10000213d000000400020008c00000bf10000413d000000400200043d000e00000002001d000006150020009c00000b200000213d0000000e020000290000004002200039000000400020043f0000000103000367000000000213034f000000000202043b000005c20020009c00000bf10000213d0000002001100039000000000113034f0000000e030000290000000004230436000000000301043b000800000004001d0000000000340435000000400100043d00000040041000390000000000340435000000400300003900000000033104360000000000230435000005bf0010009c00000b200000213d0000006002100039000000400020043f000005ba0030009c000005ba0300804100000040023002100000000001010433000005ba0010009c000005ba010080410000006001100210000000000121019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000b00000001001d000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000c00000002001d000005c10020009c00000b200000213d000000000101043b0000000c040000290000008002400039000000400020043f000000000101041a00000060024000390000003803100270000000000032043500000028021002700000ffff0220018f00000040034000390000000000230435000000ff001001900000000002000039000000010200c03900000000022404360000000801100270000005ba01100197000a00000002001d00000000001204350000000b01000029000000000010043f0000000601000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b0000000c0100002900000000010104330000000a020000290000000002020433000005ba02200197000000090020006c000007770000613d000000000001004b000007940000613d000007770000013d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000401100370000000000101043b000006120010019800000bf10000c13d000000a0020000390000000b03000039000000000303041a000005bd0030019800000b820000c13d000000000300001900000b9b0000013d0000000001000416000000000001004b00000bf10000c13d0000000101000039000000000201041a000005c2032001970000000006000411000000000036004b00000b6e0000c13d000000000300041a000005c304300197000000000464019f000000000040041b000005c302200197000000000021041b0000000001000414000005c205300197000005ba0010009c000005ba01008041000000c001100210000005d9011001c70000800d020000390000000303000039000006290400004100000bee0000013d000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000502043b000005bd0050009c00000bf10000213d0000000002530049000005be0020009c00000bf10000213d000000640020008c00000bf10000413d0000010002000039000000400020043f0000000404500039000000000641034f000000000606043b000005bd0060009c00000bf10000213d00000000055600190000002306500039000000000036004b00000bf10000813d0000000406500039000000000661034f000000000706043b000005bd0070009c00000b200000213d00000005067002100000003f06600039000005c006600197000006130060009c00000b200000213d0000010006600039000000400060043f000001000070043f000000240550003900000007067002100000000006560019000000000036004b00000bf10000213d000000000007004b00000cd80000c13d000000a00020043f0000002002400039000000000321034f000000000303043b0000ffff0030008c00000bf10000213d000000c00030043f0000002002200039000000000121034f000000000101043b0000ffff0010008c00000bf10000213d000000e00010043f16e3146a0000040f000000a00100003916e314810000040f0000000001000019000016e40001042e000000240030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000401100370000000000101043b000005c20010009c00000bf10000213d000000000200041a000005c2022001970000000005000411000000000025004b00000b780000c13d000005c206100197000000000056004b00000be10000c13d000005e801000041000000a00010043f0000002001000039000000a40010043f0000001701000039000000c40010043f0000060c01000041000000e40010043f0000060d01000041000016e500010430000000440030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000e00000002001d000006120020019800000bf10000c13d0000002402100370000000000202043b000005bd0020009c00000bf10000213d0000002304200039000000000034004b00000bf10000813d0000000404200039000000000441034f000000000504043b000005bd0050009c00000b200000213d00000005045002100000003f06400039000005c0066001970000060f0060009c00000b200000213d000000a006600039000000400060043f000000a00050043f00000024022000390000000004240019000000000034004b00000bf10000213d000000000005004b000008c00000613d000000a003000039000000000521034f000000000505043b000006120050019800000bf10000c13d000000200330003900000000005304350000002002200039000000000042004b000008b70000413d0000000001000411000005c20010009c00000cbc0000c13d0000064001000041000000000010043f0000000101000039000000040010043f0000061f01000041000016e5000104300000000001000416000000000001004b00000bf10000c13d0000000c01000039000000000101041a000000a00010043f0000062701000041000016e40001042e0000000001000416000000000001004b00000bf10000c13d000000e001000039000000400010043f0000000901000039000000a00010043f0000064602000041000000c00020043f0000002003000039000000e00030043f000001000010043f000001200020043f000001290000043f0000064701000041000016e40001042e000000440030008c00000bf10000413d0000000002000416000000000002004b00000bf10000c13d0000000402100370000000000202043b000006120020019800000bf10000c13d0000002404100370000000000404043b000005bd0040009c00000bf10000213d0000002305400039000000000035004b00000bf10000813d0000000405400039000000000551034f000000000605043b000005bd0060009c00000b200000213d00000005056002100000003f07500039000005c0077001970000060f0070009c00000b200000213d000000a007700039000000400070043f000000a00060043f00000024044000390000000005450019000000000035004b00000bf10000213d000000000006004b0000090e0000613d000000a003000039000000000641034f000000000606043b000006120060019800000bf10000c13d000000200330003900000000006304350000002004400039000000000054004b000009050000413d000000000100041a000005c2011001970000000003000411000000000013004b00000c770000c13d000005c201000041000000000010043f0000000901000039000000200010043f000000a00100043d000000000001004b00000e690000613d000005e201200197000700000001001d000000000010043f0000062a01000041000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000000ff0010019000000e6c0000c13d0000000701000029000000000010043f0000062a01000041000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000064a0220019700000001022001bf000000000021041b000000a00100043d000000000001004b000001850000613d0000000402000039000000000202041a000d05ba0020019b000800000000001d000000080000006b000009570000613d0000000802000029000000010220008a000000000021004b000010bf0000a13d00000008010000290000000501100210000000c0011000390000000001010433000905e20010019b0000000501200210000000c0011000390000000001010433000005e201100197000000090010006c000009590000413d000011aa0000013d000000c00100043d000905e20010019b0000000901000029000000000010043f0000000a01000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000401043b000000000104041a000005ba021001970000000d0020006b000c00000004001d000b00010040003d000009b50000613d000005c6021001970000000d022001af0000000c05000029000000000025041b0000000302000039000000000202041a00000010022002100000062d022001970000062e03100197000000000223019f0000000d022001af000000000025041b0000061b00100198000009b50000613d0000000201000039000000000101041a000000000001004b000009b50000613d000e00000000001d000009870000013d0000000e02000029000e00010020003d0000000201000039000000000101041a0000000e0010006b000009b50000813d0000000e010000290000000101100210000005cc0110009a000a00000001001d000000000101041a000005c201100197000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000062f0020009c000009810000413d000005ba032001970000000d0030006c000009810000813d000005c6022001970000000d022001af000000000021041b0000000a01000029000000000101041a000000a801100270000000ff0210018f0000000c01000029000000000101041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c000012650000213d000006300110019700000030022002100000063102200197000000000112019f0000000c02000029000000000012041b000009810000013d000005c201000041000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000006150020009c00000b200000213d000000000101043b0000004003200039000000400030043f000000000101041a000005ba031001970000000002320436000005c601100198000a00000001001d0000000000120435000009e00000c13d000005d401000041000000000101041a0000000801100270000000ff0210018f0000000c01000029000000000101041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c000012650000213d000006300110019700000030022002100000063102200197000000000112019f0000000c02000029000000000012041b000000400100043d000000400210003900000007030000290000000000320435000000400200003900000000022104360000000a030000290000000000320435000005bf0010009c00000b200000213d0000006003100039000000400030043f000005ba0020009c000005ba0200804100000040022002100000000001010433000005ba0010009c000005ba010080410000006001100210000000000121019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000e00000002001d000006150020009c00000b200000213d000000000101043b0000000e030000290000004002300039000000400020043f0000000d020000290000000002230436000005c601100197000600000002001d0000000000120435000005c201000041000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d0000000e020000290000000002020433000005ba0220019700000006030000290000000003030433000605c60030019b00000006022001af000000000101043b000000000021041b0000000c01000029000000000101041a000e00000001001d000005d401000041000000000101041a000000400400043d0000002002400039000000070300002900000000003204350000000801100270000000ff0110018f000000400240003900000000001204350000000901000029000500000004001d0000000000140435000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d000000000101043b00000005040000290000008002400039000000060300002900000000003204350000000e0200002900000030022002700000ffff0220018f000000a0034000390000000000230435000005bd021001970000006001400039000600000002001d0000000000210435000005ba0040009c000005ba0400804100000040014002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000632011001c70000800d02000039000000030300003900000633040000410000000d05000029000005c20600004116e316d90000040f000000010020019000000bf10000613d0000000e010000290000061b011001970000000a001001b000000a9e0000c13d000005c201000041000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000005ba0010009c00000a780000213d0000000c01000029000000000101041a00000020021002700000ffff0220018f00000030011002700000ffff0110018f000000000021004b00000a9e0000413d0000000e01000029000006340110019700000635011001c70000000c02000029000000000012041b0000000b01000039000000000101041a000005bd02100197000005bd0020009c000012650000613d0000062e021001970000000101100039000005bd01100197000000000121019f0000000b02000039000000000012041b000000400100043d00000020021000390000000603000029000000000032043500000009020000290000000000210435000005ba0010009c000005ba0100804100000040011002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005ca011001c70000800d02000039000000020300003900000636040000410000000d0500002916e316d90000040f000000010020019000000bf10000613d000000400400043d000005db0040009c00000b200000213d0000000c01000029000000000501041a000000c001400039000000400010043f000000a001400039000000070200002900000000002104350000008002400039000000090300002900000000003204350000006003400039000005c20600004100000000006304350000002006400039000000060700002900000000007604350000061b005001980000000007000039000000010700c0390000004005400039000000000075043500000000000404350000000c07000039000000000707041a000005bd0070009c00000b200000213d00000001087000390000000c09000039000000000089041b000000000090043f0000000004040433000000040040008c000013b40000213d00000000060604330000000806600210000005dd066001970000000107700210000005de0870009a000000000908041a000005df09900197000000000669019f0000000005050433000000000005004b000005e0050000410000000005006019000000000556019f00000000030304330000005003300210000005e103300197000000000335019f000000000343019f000000000038041b000000000202043300000080022002700000000001010433000005e201100197000000000121019f000005e30270009a000000000012041b0000000802000029000800010020003d000000a00100043d000000080010006b000009450000413d000001850000013d0000000001000416000000000001004b00000bf10000c13d0000010001000039000000400010043f0000006001000039000000a00010043f000000c00000043f000000e00000043f0000000401000039000000000101041a000d00000001001d16e314290000040f0000000d050000290000002002500270000005ba02200197000000400400043d000e00000004001d00000020034000390000000000230435000000400240003900000060030000390000000000320435000005ba025001970000000000240435000000600240003916e313fb0000040f0000000e020000290000000001210049000005ba0010009c000005ba01008041000005ba0020009c000005ba0200804100000060011002100000004002200210000000000121019f000016e40001042e000000440030008c00000bf10000413d0000000003000416000000000003004b00000bf10000c13d0000000403100370000000000303043b0000002401100370000000000101043b000000000031001a000012650000413d00000000063100190000000c04000039000000000504041a000000000056004b00000b190000a13d000000000135004b00000ba40000a13d000005bd0010009c00000b200000213d00000005071002100000003f067000390000060e086001970000060f0080009c00000ba80000a13d0000064001000041000000000010043f0000004101000039000000040010043f0000061f01000041000016e5000104300000000001000416000000000001004b00000bf10000c13d0000000702000039000000000102041a000000a00010043f000000000020043f0000002002000039000000000001004b00000b3b0000613d000000c004000039000006490200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b00000b330000413d000000800250008a000000a00100003916e313e90000040f000000400200043d000e00000002001d00000020010000390000000002120436000000a00100003916e313db0000040f0000000e020000290000000001210049000005ba0010009c000005ba010080410000006001100210000005ba0020009c000005ba020080410000004002200210000000000121019f000016e40001042e0000000001000416000000000001004b00000bf10000c13d0000000b01000039000000000101041a000005bd00100198000000000100001900000b640000613d0000061901000041000000000010043f0000000a01000039000000200010043f0000061a01000041000000000101041a0000004001100270000000ff0110019000000b640000c13d0000064401000041000000000010043f0000064501000041000000000101041a0000004001100270000000ff0110018f000000000001004b0000000001000039000000010100c039000000a00010043f0000062701000041000016e40001042e0000061c01000041000000a00010043f0000061d01000041000016e500010430000005e801000041000000a00010043f0000002001000039000000a40010043f0000001601000039000000c40010043f0000062801000041000000e40010043f0000060d01000041000016e500010430000005e801000041000000a00010043f0000002001000039000000a40010043f0000001601000039000000c40010043f0000061601000041000000e40010043f0000060d01000041000016e5000104300000061903000041000000000030043f0000000a03000039000000200030043f0000061a03000041000000000303041a0000004003300270000000ff0330019000000b9b0000c13d000005e201100197000000000010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000000000101043b000000000101041a0000004001100270000000ff0310018f000000000003004b0000000001000039000000010100c0390000000000120435000005ba0020009c000005ba0200804100000040012002100000063e011001c7000016e40001042e000000c006000039000000400060043f000000a00000043f00000bad0000013d000000a006800039000000400060043f000000a00010043f000000000001004b00000bf30000c13d00000020010000390000000001160436000000a00300043d00000000003104350000004001600039000000000003004b00000bd80000613d0000000004000019000000200220003900000000050204330000000078050434000000040080008c000013b40000213d00000000088104360000000007070433000005bd07700197000000000078043500000040075000390000000007070433000000000007004b0000000007000039000000010700c0390000004008100039000000000078043500000060075000390000000007070433000005c2077001970000006008100039000000000078043500000080075000390000000007070433000005e20770019700000080081000390000000000780435000000a0055000390000000005050433000005e205500197000000a0071000390000000000570435000000c0011000390000000104400039000000000034004b00000bb50000413d0000000001610049000005ba0010009c000005ba010080410000006001100210000005ba0060009c000005ba060080410000004002600210000000000121019f000016e40001042e0000000101000039000000000201041a000005c302200197000000000262019f000000000021041b0000000001000414000005ba0010009c000005ba01008041000000c001100210000005d9011001c70000800d0200003900000003030000390000060b0400004116e316d90000040f0000000100200190000001850000c13d0000000001000019000016e500010430000006100080009c00000b200000213d0000000008000019000000c009600039000000400090043f000000a0096000390000000000090435000000800960003900000000000904350000006009600039000000000009043500000040096000390000000000090435000000200960003900000000000904350000000000060435000000c00980003900000000006904350000002008800039000000000078004b00000c880000813d000000400600043d000005db0060009c00000bf60000a13d00000b200000013d000006140050009c00000b200000213d0000060a0500004100000000060000190000008007400039000000400070043f000000000705041a000005c207700197000000000774043600000001085001bf000000000808041a000005c2098001970000000000970435000000a807800270000000ff0770018f00000060094000390000000000790435000000a007800270000000ff0770018f00000040084000390000000000780435000000200220003900000000004204350000000106600039000000000036004b000001b70000813d0000000205500039000000400400043d000005c10040009c00000c100000a13d00000b200000013d000000c0050000390000000006230049000005be0060009c00000bf10000213d000000800060008c00000bf10000413d000000400600043d000005bf0060009c00000b200000213d0000006007600039000000400070043f000000000721034f000000000707043b000005c20070009c00000bf10000213d0000000007760436000000400800043d000006150080009c00000b200000213d0000004009800039000000400090043f0000002009200039000000000a91034f000000000a0a043b0000061200a0019800000bf10000c13d000000000aa804360000002009900039000000000b91034f000000000b0b043b000005ba00b0019800000bf10000c13d0000000000ba043500000000008704350000002007900039000000000771034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b00000bf10000c13d0000004008600039000000000078043500000000056504360000008002200039000000000042004b00000c2c0000413d000003fd0000013d000000c0050000390000000006230049000005be0060009c00000bf10000213d000000400060008c00000bf10000413d000000400600043d000006150060009c00000b200000213d0000004007600039000000400070043f000000000721034f000000000707043b000006120070019800000bf10000c13d00000000077604360000002008200039000000000881034f000000000808043b000005ba0080019800000bf10000c13d000000000087043500000000056504360000004002200039000000000042004b00000c5d0000413d0000060a0000013d000000400100043d000000440210003900000616030000410000000000320435000000240210003900000016030000390000000000320435000005e8020000410000000000210435000000040210003900000020030000390000000000320435000005ba0010009c000005ba010080410000004001100210000005e9011001c7000016e50001043000000000060000190000000008360019000000000058004b000010bf0000813d000000000040043f000000400700043d000005db0070009c00000b200000213d0000000108800210000000c009700039000000400090043f000005de0980009a000000000a09041a000000ff09a0018f000000040090008c000013b40000213d000000500ba00270000005c20bb00197000000600c7000390000000000bc04350000061100a00198000000000b000039000000010b00c039000000400c7000390000000000bc0435000000080aa00270000005bd0aa00197000000200b7000390000000000ab04350000000000970435000005e30880009a000000000808041a000000a009700039000005e20a8001970000000000a90435000000800970003900000080088002100000000000890435000000a00800043d000000000068004b000010bf0000a13d0000000508600210000000c0088000390000000000780435000000a00700043d000000000067004b000010bf0000a13d0000000106600039000000000016004b00000c890000413d000000400600043d00000bad0000013d000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000400000001001d000000000101041a000000ff0010019000000e660000c13d000000400100043d0000061e020000410000000000210435000000040210003900000000030004110000000000320435000005ba0010009c000005ba0100804100000040011002100000061f011001c7000016e50001043000000120070000390000000008530049000005be0080009c00000bf10000213d000000800080008c00000bf10000413d000000400800043d000005c10080009c00000b200000213d0000008009800039000000400090043f000000000951034f000000000909043b000005c20090009c00000bf10000213d000000000a9804360000002009500039000000000b91034f000000000b0b043b000005c200b0009c00000bf10000213d0000000000ba04350000002009900039000000000a91034f000000000a0a043b000000ff00a0008c00000bf10000213d000000400b8000390000000000ab04350000002009900039000000000991034f000000000909043b000000ff0090008c00000bf10000213d000000600a80003900000000009a043500000000078704360000008005500039000000000065004b00000cd90000413d000008650000013d0000000401000039000000000101041a000d05ba0010019b0000000001000411000005c20010009c00000000010000390000000101006039000400000001001d0000000003000019000700000000001d00000d300000013d0000000802000029000000000202043300000009030000290000000003030433000000400400043d00000020064000390000000000160435000005c60130019700000040034000390000000000130435000005e2012001970000000000140435000005ba0040009c000005ba0400804100000040014002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000617011001c70000800d0200003900000002030000390000063b0400004116e316d90000040f0000000100200190000000000100001900000bf10000613d000000070000006b000000070100c02900000006030000290000000103300039000000a00200043d000000000023004b000700000001001d000011480000813d000600000003001d0000000501300210000000c0011000390000000001010433000800000001001d0000000021010434000900000002001d000005e201100197000000000010043f0000000a01000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000401043b000000000104041a000005ba021001970000000d0020006b000a00000004001d000b00010040003d00000d920000613d000005c6021001970000000d022001af0000000a05000029000000000025041b0000000302000039000000000202041a00000010022002100000062d022001970000062e03100197000000000223019f0000000d022001af000000000025041b0000061b0010019800000d920000613d0000000201000039000000000101041a000000000001004b00000d920000613d000000000200001900000d650000013d0000000e0200002900000001022000390000000201000039000000000101041a000000000012004b00000d920000813d000e00000002001d0000000101200210000005cc0110009a000c00000001001d000000000101041a000005c201100197000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000062f0020009c00000d5f0000413d000005ba032001970000000d0030006c00000d5f0000813d000005c6022001970000000d022001af000000000021041b0000000c01000029000000000101041a000000a801100270000000ff0210018f0000000a04000029000000000104041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c000012650000213d000006300110019700000030022002100000063102200197000000000112019f000000000014041b00000d5f0000013d0000000001000411000005c20010009c000008c30000613d000000000001004b000008c30000613d000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400300043d000006150030009c00000b200000213d000000000101043b0000004002300039000000400020043f000000000201041a0000002004300039000005c6012001970000000000140435000005ba0420019700000000004304350000000503000029000000000303041a000000ff00300190000000000500041100000d0c0000613d000005c20050009c00000dbb0000c13d001600040000002d0000000003000415000000160330008a000000050330021000000dc20000013d0000000003000415000000150330008a00000005033002100000000d0040006c001500000000003d001500010000603d00000d0c0000c13d000005ba0020009c0000000503300270000000000300003f000000010300203f0000062f0020009c00000d0c0000413d00000009030000290000000003030433000000000223013f000005ba0020009c00000d0c0000213d000000000050043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b0000000501000029000000000101041a0000000801100270000000ff0110018f0000000a04000029000000000204041a00000030032002700000ffff0330018f00000000011300490000ffff0010008c000012650000213d000006300220019700000030031002100000063103300197000000000223019f000000000024041b000000080200002900000000020204330000000503000029000000000303041a00000009040000290000000004040433000000400500043d00000060065000390000000000160435000005c601400197000000400450003900000000001404350000000801300270000000ff0110018f00000020035000390000000000130435000005e2012001970000000000150435000005ba0050009c000005ba0500804100000040015002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000637011001c70000800d02000039000000030300003900000638040000410000000d05000029000000000600041116e316d90000040f000000010020019000000bf10000613d000000400100043d000e00000001001d000005db0010009c00000b200000213d0000000a01000029000000000101041a000b00000001001d00000008010000290000000001010433000a00000001001d0000000e02000029000000c001200039000000400010043f00000001010000390000000001120436000c00000001001d000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d0000000a02000029000005e202200197000000000301043b0000000e06000029000000800160003900000000002104350000006002600039000000000400041100000000004204350000000b040000290000061b004001980000000005000039000000010500c03900000040046000390000000000540435000005bd033001970000000c050000290000000000350435000000a00360003900000000000304350000000c05000039000000000605041a000005bd0060009c00000b200000213d00000001056000390000000c07000039000000000057041b000000000070043f0000000e050000290000000005050433000000040050008c000013b40000213d0000000c0700002900000000070704330000000807700210000005dd077001970000000106600210000005de0860009a000000000908041a000005df09900197000000000779019f0000000004040433000000000004004b000005e0040000410000000004006019000000000447019f00000000020204330000005002200210000005e102200197000000000224019f000000000252019f000000000028041b000000000101043300000080011002700000000002030433000005e202200197000000000112019f000005e30260009a000000000012041b000000010100003900000d280000013d000000a00100043d000000000001004b00000e750000c13d000000400100043d0000063d02000041000001890000013d000000400100043d0000002402100039000000070300002900000000003204350000062b0200004100000000002104350000000402100039000005c203000041000011420000013d0000000e01000029000005e201100197000700000001001d000000000010043f00000004010000290000000101100039000e00000001001d000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000000ff001001900000113a0000c13d0000000701000029000000000010043f0000000e01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000064a0220019700000001022001bf000000000021041b000000a00100043d000000000001004b000001850000613d0000000402000039000000000202041a000d05ba0020019b000800000000001d000000080000006b00000eb50000613d0000000802000029000000010220008a000000000021004b000010bf0000a13d00000008010000290000000501100210000000c0011000390000000001010433000905e20010019b0000000501200210000000c0011000390000000001010433000005e201100197000000090010006c00000eb70000413d000011aa0000013d000000c00100043d000905e20010019b0000000901000029000000000010043f0000000a01000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000401043b000000000104041a000005ba021001970000000d0020006b000c00000004001d000b00010040003d00000f130000613d000005c6021001970000000d022001af0000000c05000029000000000025041b0000000302000039000000000202041a00000010022002100000062d022001970000062e03100197000000000223019f0000000d022001af000000000025041b0000061b0010019800000f130000613d0000000201000039000000000101041a000000000001004b00000f130000613d000e00000000001d00000eeb0000013d000006300110019700000030022002100000063102200197000000000112019f0000000c02000029000000000012041b0000000e02000029000e00010020003d0000000201000039000000000101041a0000000e0010006b00000f130000813d0000000e010000290000000101100210000005cc0110009a000a00000001001d000000000101041a000005c201100197000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a0000062f0020009c00000ee50000413d000005ba032001970000000d0030006c00000ee50000813d000005c6022001970000000d022001af000000000021041b0000000a01000029000000000101041a000000a801100270000000ff0210018f0000000c01000029000000000101041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c00000edf0000a13d000012650000013d0000000001000411000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000006150020009c00000b200000213d000000000101043b0000004003200039000000400030043f000000000301041a0000002004200039000005c6013001980000000000140435000005ba03300197000000000032043500000000020000390000000102006039000a00000002001d0000000d0030006c00000f330000413d000000000001004b00000f460000c13d0000000401000029000000000101041a0000000801100270000000ff0210018f0000000c01000029000000000101041a00000030031002700000ffff0330018f00000000022300190000ffff0020008c000012650000213d000006300110019700000030022002100000063102200197000000000112019f0000000c02000029000000000012041b000a00010000003d0000000001000019000000400200043d000000400320003900000007040000290000000000430435000000400300003900000000033204360000000000130435000005bf0020009c00000b200000213d0000006001200039000000400010043f000005ba0030009c000005ba0300804100000040013002100000000002020433000005ba0020009c000005ba020080410000006002200210000000000112019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000400200043d000e00000002001d000006150020009c00000b200000213d000000000101043b0000000e030000290000004002300039000000400020043f0000000d020000290000000002230436000005c601100197000600000002001d00000000001204350000000001000411000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d0000000e020000290000000002020433000005ba0220019700000006030000290000000003030433000605c60030019b00000006022001af000000000101043b000000000021041b0000000c01000029000000000101041a000e00000001001d0000000401000029000000000101041a000000400400043d0000002002400039000000070300002900000000003204350000000801100270000000ff0110018f000000400240003900000000001204350000000901000029000500000004001d0000000000140435000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d000000000101043b00000005040000290000008002400039000000060300002900000000003204350000000e0200002900000030022002700000ffff0220018f000000a0034000390000000000230435000005bd021001970000006001400039000600000002001d0000000000210435000005ba0040009c000005ba0400804100000040014002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000632011001c70000800d02000039000000030300003900000633040000410000000d05000029000000000600041116e316d90000040f000000010020019000000bf10000613d0000000e010000290000061b00100198000000000100003900000001010060390000000a0110017f000000010010008c000010060000c13d000005c201000041000000000010043f0000000b01000029000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000005ba0010009c00000fe00000213d0000000c01000029000000000101041a00000020021002700000ffff0220018f00000030011002700000ffff0110018f000000000021004b000010060000413d0000000e01000029000006340110019700000635011001c70000000c02000029000000000012041b0000000b01000039000000000101041a000005bd02100197000005bd0020009c000012650000613d0000062e021001970000000101100039000005bd01100197000000000121019f0000000b02000039000000000012041b000000400100043d00000020021000390000000603000029000000000032043500000009020000290000000000210435000005ba0010009c000005ba0100804100000040011002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005ca011001c70000800d02000039000000020300003900000636040000410000000d0500002916e316d90000040f000000010020019000000bf10000613d000000400400043d000005db0040009c00000b200000213d0000000c01000029000000000501041a000000c001400039000000400010043f000000a001400039000000070200002900000000002104350000008002400039000000090300002900000000003204350000006003400039000000000600041100000000006304350000002006400039000000060700002900000000007604350000061b005001980000000007000039000000010700c0390000004005400039000000000075043500000000000404350000000c07000039000000000707041a000005bd0070009c00000b200000213d00000001087000390000000c09000039000000000089041b000000000090043f0000000004040433000000040040008c000013b40000213d00000000060604330000000806600210000005dd066001970000000107700210000005de0870009a000000000908041a000005df09900197000000000669019f0000000005050433000000000005004b000005e0050000410000000005006019000000000556019f00000000030304330000005003300210000005e103300197000000000335019f000000000343019f000000000038041b000000000202043300000080022002700000000001010433000005e201100197000000000121019f000005e30270009a000000000012041b0000000802000029000800010020003d000000a00100043d000000080010006b00000ea30000413d000001850000013d0000000e0800002900000080088000390000000009640049000005be0090009c00000bf10000213d000000800090008c00000bf10000413d000000400900043d000005c10090009c00000b200000213d000000800a9000390000004000a0043f00000000ab060434000005c200b0009c00000bf10000213d000000000bb90436000000000a0a0433000005c200a0009c00000bf10000213d0000000000ab0435000000400a600039000000000a0a0433000000ff00a0008c00000bf10000213d000000400b9000390000000000ab0435000000600a600039000000000a0a0433000000ff00a0008c00000bf10000213d000000600b9000390000000000ab043500000000089804360000008006600039000000000076004b0000104c0000413d0000072e0000013d000000400100043d000000800200003900000000022104360000000603000029000000000403043300000080031000390000000000430435000000a003100039000000000004004b000010820000613d0000000005000019000000060700002900000020077000390000000006070433000005c20660019700000000036304360000000105500039000000000045004b0000107b0000413d00000000041300490000000000420435000000050200002900000000040204330000000002430436000000000004004b000010920000613d0000000003000019000000050600002900000020066000390000000005060433000005c60550019700000000025204360000000103300039000000000043004b0000108b0000413d0000000b0000006b0000000003000039000000010300c0390000006004100039000000000034043500000001030000290000ffff0330018f000000400410003900000000003404350000000002120049000005ba0020009c000005ba020080410000006002200210000005ba0010009c000005ba010080410000004001100210000000000112019f000016e40001042e000000000b0000190000000008000019000010b40000013d00000005098002100000000009590019000000050bb00210000000000bb70019000000000b0b0433000000000b0b0433000005c20bb001970000000000b9043500000001088000390000000009060433000000010ba0003900000000009b004b000003c20000813d000000ff0ab0018f0000000f00a0008c000008c30000213d000000000ca2022f0000000100c00190000010b10000613d0000000000b9004b000010bf0000a13d0000000009010433000000000089004b000010a70000213d0000064001000041000000000010043f0000003201000039000000040010043f0000061f01000041000016e500010430000e00000000001d000010cc0000013d0000000e02000029000e00010020003d000000a00100043d0000000e0010006b0000068d0000813d0000000e010000290000000501100210000000c001100039000b00000001001d0000000001010433000005c201100197000c00000001001d000000000010043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000101041a000d00000001001d000000000001004b000010c70000613d0000000701000039000000000201041a000000000002004b000012650000613d0000000d03000029000000010130008a000000000023004b000011090000613d000000000012004b000010bf0000a13d0000000d010000290000063f0110009a0000063f0220009a000000000202041a000000000021041b000000000020043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b0000000d02000029000000000021041b0000000701000039000000000101041a000d00000001001d000000000001004b0000126b0000613d0000000d01000029000000010110008a0000000d020000290000063f0220009a000000000002041b0000000702000039000000000012041b0000000c01000029000000000010043f0000000801000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b000000a00100043d0000000e0010006c000010bf0000a13d0000000b010000290000000001010433000005c201100197000000400200043d0000000000120435000005ba0020009c000005ba0200804100000040012002100000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f00000639011001c70000800d020000390000000103000039000006410400004116e316d90000040f0000000100200190000010c70000c13d00000bf10000013d000000000003004b0000114b0000c13d000000000004004b000001850000c13d0000061f0000013d000000400100043d0000002402100039000000070300002900000000003204350000062b020000410000000000210435000000040210003900000000030004110000000000320435000005ba0010009c000005ba0100804100000040011002100000062c011001c7000016e500010430000000000001004b000001850000c13d0000061f0000013d000000400100043d000005bf0010009c00000b200000213d0000006002100039000000400020043f0000000203000039000000000303041a000005bd0030009c00000b200000213d00000005043002100000003f04400039000005c0044001970000000004240019000005bd0040009c00000b200000213d000000400040043f00000000003204350000000204000039000000000040043f000000000003004b0000117d0000613d0000060a0400004100000000050000190000000006020019000000400700043d000005c10070009c00000b200000213d0000008008700039000000400080043f000000000804041a000005c208800197000000000887043600000001094001bf000000000909041a000005c20a9001970000000000a80435000000a808900270000000ff0880018f000000600a70003900000000008a0435000000a008900270000000ff0880018f000000400970003900000000008904350000002006600039000000000076043500000002044000390000000105500039000000000035004b000011630000413d00000000022104360000000303000039000000000303041a0000ffff0430018f000000000042043500000010023002700000ffff0220018f0000004003100039000000000023043516e314810000040f0000000001000019000016e40001042e000000000500041a000005c305500197000000000445019f000000000040041b000005c10020009c00000b200000213d0000008004200039000000400040043f0000006004200039000005c4050000410000000000540435000000400420003900000000000404350000002004200039000000000004043500000000000204350000000e0200002900000000020204330000000002020433000000110420008a0000064b0040009c000011a70000413d000000060400002900000000040404330000ffff00400190000011a70000613d000000050400002900000000040404330000ffff00400190000011ad0000c13d000000400100043d000005e502000041000001890000013d000000400100043d0000063c02000041000001890000013d0000000605200210000000400400043d00000000065400190000002006600039000000000046004b00000000070000390000000107004039000005bd0060009c00000b200000213d000000010070019000000b200000c13d000000400060043f000000010220021000000000022404360000001f0650018f000000000005004b000011c50000613d000000000131034f00000000035200190000000005020019000000001701043c0000000005750436000000000035004b000011c10000c13d000000000006004b0000000e0100002900000000010104330000000003010433000000000003004b000012710000c13d000000000300001900000000050000190000000004040433000000020040008c000012ab0000813d000000060200002900000000020204330000ffff0220018f000000000025004b000011a70000413d000000050400002900000000040404330000ffff0540018f000000000053004b000011a70000413d0000000303000039000000000503041a000005c6055001970000001004400210000005c704400197000000000454019f000000000224019f000000000023041b0000000202000039000000000202041a000000000002004b000011eb0000c13d0000000002010433000000000002004b000012340000c13d0000000003000019000012600000013d000000400100043d000005c10010009c00000b200000213d0000008003100039000000400030043f0000000102200210000005c80320009a000000000303041a000005c2033001970000000006310436000005c90220009a000000000202041a000000a804200270000000ff0440018f00000060051000390000000000450435000000a004200270000000ff0440018f00000040011000390000000000410435000005c201200197000d00000006001d0000000000160435000000000030043f0000000501000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b0000000d010000290000000001010433000005c201100197000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000001041b0000000201000039000000000101041a000000000001004b0000126b0000613d0000000204000039000000000040043f000000010210008c0000000101200210000005cb0310009a000000000003041b000005cc0110009a000000000001041b000000000024041b000011eb0000c13d0000000e0100002900000000010104330000000002010433000000000002004b000011e90000613d00000000020000190000000203000039000000000303041a000005bd0030009c00000b200000213d000000050420021000000000014100190000002001100039000000000101043300000001043000390000000205000039000000000045041b000000000050043f00000001033002100000000054010434000005c204400197000005cb0630009a000000000706041a000005c307700197000000000447019f000000000046041b000005cc0330009a0000000004050433000005c204400197000000000503041a000005cd05500197000000000445019f00000040051000390000000005050433000000a005500210000005ce05500197000000000454019f00000060011000390000000001010433000000a801100210000005cf01100197000000000114019f000000000013041b00000001022000390000000e0100002900000000010104330000000003010433000000000032004b000012350000413d0000000402000039000000000202041a000005ba04200197000005ba0040009c000012be0000c13d0000064001000041000000000010043f0000001101000039000000040010043f0000061f01000041000016e5000104300000064001000041000000000010043f0000003101000039000000040010043f0000061f01000041000016e50001043000000000060000190000000005000019000000000300001900000005076002100000000001710019000000200110003900000000070104330000000018070434000005c208800198000011a70000613d0000000009010433000005c209900198000011a70000613d000005c20090009c000011a70000613d0000004009700039000000000a090433000000ff00a001900000006007700039000012880000c13d000000000a070433000000ff00a00190000011a70000613d000005c50060009c000012650000813d000000010a600210000000000b0404330000000000ab004b000010bf0000a13d000000060b600210000000000b2b001900000000008b04350000000108a001bf000000000a04043300000000008a004b000010bf0000a13d000000050880021000000000082800190000000001010433000005c20110019700000000001804350000000001090433000000ff0110018f000000000051001a000012650000413d0000000007070433000000ff0770018f000000000037001a000012650000413d0000000005510019000000000337001900000001066000390000000e0100002900000000010104330000000007010433000000000076004b000012740000413d000011cd0000013d0000000106000039000000000702001900000000070704330000000008060019000000050980021000000000092900190000000009090433000000000979013f000005c200900198000011a70000613d0000000108800039000000000048004b000012af0000413d000000050760021000000000072700190000000106600039000000000046004b000012ad0000413d000011d00000013d000005c6042001970000000102200039000705ba0020019b00000007044001af0000000402000039000d00000004001d000000000042041b000000000003004b000013280000613d000d00000000001d000000400200043d000c00000002001d000005bf0020009c00000b200000213d0000000d030000290000000502300210000000000121001900000020011000390000000004010433000000400140003900000000010104330000000c050000290000006002500039000000400020043f0000004002500039000b00000002001d000000000032043500000007020000290000000002250436000000ff0110018f000900000002001d0000000000120435000800000004001d0000000021040434000a00000002001d000005c201100197000000000010043f0000000501000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d0000000c020000290000000002020433000005ba02200197000000000101043b000000000301041a000005d003300197000000000223019f000000090300002900000000030304330000002003300210000005d103300197000000000232019f0000000b0300002900000000030304330000002803300210000005d203300197000000000232019f000000000021041b0000000a010000290000000001010433000005c201100197000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f000000010020019000000bf10000613d000000000101043b000000000201041a000005d30220019700000008030000290000006003300039000000000303043300000008033002100000ff000330018f000000000232019f00000001022001bf000000000021041b0000000d01000029000000ff0010008c000012650000613d0000000d010000290000000101100039000d00ff001001930000000e01000029000000000101043300000000020104330000000d0020006b000012c80000413d0000000401000039000000000101041a000d00000001001d000005c201000041000000000010043f0000000901000039000000200010043f000005d401000041000000000201041a000005d30220019700000001022001bf000000000021041b000005d50100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d0000000d02000029000005d702200197000000000101043b0000002001100210000005d801100197000000000121019f0000000402000039000000000012041b0000002002000039000000400100043d00000000022104360000000e03000029000000000303043300000060040000390000000000420435000000800210003900000000040304330000000000420435000000a002100039000000000004004b000013680000613d0000000005000019000000200330003900000000060304330000000087060434000005c20770019700000000077204360000000008080433000005c208800197000000000087043500000040076000390000000007070433000000ff0770018f0000004008200039000000000078043500000060066000390000000006060433000000ff0660018f0000006007200039000000000067043500000080022000390000000105500039000000000045004b000013520000413d000000060300002900000000030304330000ffff0330018f00000040041000390000000000340435000000050300002900000000030304330000ffff0330018f000000600410003900000000003404350000000002120049000005ba0020009c000005ba020080410000006002200210000005ba0010009c000005ba010080410000004001100210000000000112019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c70000800d020000390000000203000039000005da04000041000000070500002916e316d90000040f000000010020019000000bf10000613d000000400100043d000e00000001001d000005db0010009c00000b200000213d0000000e02000029000000c001200039000000400010043f00000004010000390000000001120436000d00000001001d000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000013ba0000613d000000000101043b000005bd011001970000000d0200002900000000001204350000000e04000029000000a00140003900000000000104350000008002400039000000000002043500000060034000390000000000030435000000400440003900000000000404350000000c05000039000000000605041a000005bd0060009c00000b200000213d0000000107600039000000000075041b000000000050043f0000000e050000290000000005050433000000050050008c000013bb0000413d0000064001000041000000000010043f0000002101000039000000040010043f0000061f01000041000016e500010430000000000001042f0000000d0700002900000000070704330000000807700210000005dd077001970000000106600210000005de0860009a000000000908041a000005df09900197000000000779019f0000000004040433000000000004004b000005e0040000410000000004006019000000000447019f00000000030304330000005003300210000005e103300197000000000334019f000000000353019f000000000038041b000000000202043300000080022002700000000001010433000005e201100197000000000121019f000005e30260009a000000000012041b000000200100003900000100001004430000012000000443000005e401000041000016e40001042e000000000301001900000000040104330000000001420436000000000004004b000013e80000613d000000000200001900000020033000390000000005030433000005c20550019700000000015104360000000102200039000000000042004b000013e10000413d000000000001042d0000001f022000390000064c022001970000000001120019000000000021004b00000000020000390000000102004039000005bd0010009c000013f50000213d0000000100200190000013f50000c13d000000400010043f000000000001042d0000064001000041000000000010043f0000004101000039000000040010043f0000061f01000041000016e5000104300000000046010434000000600300003900000000053204360000006003200039000000000706043300000000007304350000008003200039000000000007004b0000141f0000613d00000000080000190000000009020019000000000a0300190000002006600039000000000306043300000000cb030434000005c20bb001970000000000ba0435000000000b0c0433000005c20bb00197000000a00c9000390000000000bc0435000000400b300039000000000b0b0433000000ff0bb0018f000000c00c9000390000000000bc0435000000e00990003900000060033000390000000003030433000000ff0330018f00000000003904350000008003a000390000000108800039000000000078004b00000000090a0019000014060000413d00000000040404330000ffff0440018f00000000004504350000004002200039000000400110003900000000010104330000ffff0110018f00000000001204350000000001030019000000000001042d000000400100043d0000064d0010009c000014640000813d0000006002100039000000400020043f0000000204000039000000000304041a000005bd0030009c000014640000213d00000005053002100000003f05500039000005c0055001970000000005250019000005bd0050009c000014640000213d000000400050043f0000000000320435000000000040043f000000000003004b0000145a0000613d0000060a0400004100000000050000190000000006020019000000400700043d000005c10070009c000014640000213d0000008008700039000000400080043f000000000804041a000005c208800197000000000887043600000001094001bf000000000909041a000005c20a9001970000000000a80435000000a808900270000000ff0880018f000000600a70003900000000008a0435000000a008900270000000ff0880018f000000400970003900000000008904350000002006600039000000000076043500000002044000390000000105500039000000000035004b000014400000413d00000000022104360000000303000039000000000303041a0000ffff0430018f000000000042043500000010023002700000ffff0220018f00000040031000390000000000230435000000000001042d0000064001000041000000000010043f0000004101000039000000040010043f0000061f01000041000016e500010430000000000100041a000005c2011001970000000002000411000000000012004b000014700000c13d000000000001042d000000400100043d000000440210003900000616030000410000000000320435000000240210003900000016030000390000000000320435000005e8020000410000000000210435000000040210003900000020030000390000000000320435000005ba0010009c000005ba010080410000004001100210000005e9011001c7000016e500010430000a000000000002000a00000001001d0000000021010434000200000002001d0000000001010433000000110210008a0000064b0020009c000016af0000413d000000020200002900000000020204330000ffff00200190000016af0000613d0000000a020000290000004002200039000100000002001d00000000020204330000ffff00200190000016af0000613d0000000604100210000000400300043d00000000024300190000002002200039000000000032004b00000000050000390000000105004039000005bd0020009c000016b90000213d0000000100500190000016b90000c13d000000400020043f000000010110021000000000021304360000001f0140018f000000000004004b000014ac0000613d0000000004420019000000000500003100000001055003670000000006020019000000005705043c0000000006760436000000000046004b000014a80000c13d000000000001004b0000000a0100002900000000010104330000000004010433000000000004004b000014ef0000613d00000000060000190000000005000019000000000400001900000005076002100000000001710019000000200110003900000000070104330000000018070434000005c208800198000016af0000613d0000000009010433000005c209900198000016af0000613d000005c20090009c000016af0000613d0000004009700039000000000a090433000000ff00a001900000006007700039000014c90000c13d000000000a070433000000ff00a00190000016af0000613d000005c50060009c000016bf0000813d000000010a600210000000000b0304330000000000ab004b000016c50000a13d000000060b600210000000000b2b001900000000008b04350000000108a001bf000000000a03043300000000008a004b000016c50000a13d000000050880021000000000082800190000000001010433000005c20110019700000000001804350000000001090433000000ff0110018f000000000051001a000016bf0000413d0000000007070433000000ff0770018f000000000047001a000016bf0000413d0000000005510019000000000447001900000001066000390000000a0100002900000000010104330000000007010433000000000076004b000014b50000413d0000000003030433000000020030008c000014f40000813d000015060000013d000000000400001900000000050000190000000003030433000000020030008c000015060000413d0000000106000039000000000702001900000000070704330000000008060019000000050980021000000000092900190000000009090433000000000979013f000005c200900198000016af0000613d0000000108800039000000000038004b000014f80000413d000000050760021000000000072700190000000106600039000000000036004b000014f60000413d000000020200002900000000020204330000ffff0220018f000000000025004b000016af0000413d000000010300002900000000030304330000ffff0530018f000000000054004b000016af0000413d0000001003300210000005c7033001970000000304000039000000000504041a000005c605500197000000000335019f000000000223019f000000000024041b0000000208000039000000000408041a000000000004004b000015630000613d0000801002000039000000000080043f000000400100043d000005c10010009c000016b90000213d0000008003100039000000400030043f0000000104400210000005c80340009a000000000303041a000005c2033001970000000007310436000005c90440009a000000000604041a000000a804600270000000ff0440018f00000060051000390000000000450435000000a004600270000000ff0440018f00000040011000390000000000410435000005c201600197000900000007001d0000000000170435000000000030043f0000000501000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c716e316de0000040f0000000100200190000016b70000613d000000000101043b000000000001041b00000009010000290000000001010433000005c201100197000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f0000000100200190000016b70000613d0000801002000039000000000101043b000000000001041b0000000208000039000000000108041a000000000001004b000016cb0000613d000000000080043f000000010410008c0000000101400210000005cb0310009a000000000003041b000005cc0110009a000000000001041b000000000048041b0000151d0000c13d0000000a0100002900000000010104330000000002010433000000000002004b000015910000613d0000000002000019000000000308041a000005bd0030009c000016b90000213d00000005042002100000000001410019000000200110003900000000010104330000000104300039000000000048041b000000000080043f00000001033002100000000054010434000005c204400197000005cb0630009a000000000706041a000005c307700197000000000447019f000000000046041b000005cc0330009a0000000004050433000005c204400197000000000503041a000005cd05500197000000000445019f00000040051000390000000005050433000000a005500210000005ce05500197000000000454019f00000060011000390000000001010433000000a801100210000005cf01100197000000000114019f000000000013041b00000001022000390000000a0100002900000000010104330000000003010433000000000032004b000015670000413d000015920000013d00000000030000190000000405000039000000000205041a000005ba04200197000005ba0040009c000016bf0000613d000005c602200197000300010040003d00000003022001af000000000025041b000000000003004b000015fb0000613d00008010030000390000000005000019000000400600043d000005bf0060009c000016b90000213d0000000502500210000000000121001900000020011000390000000004010433000000400140003900000000010104330000006002600039000000400020043f0000004002600039000500000005001d000800000002001d00000000005204350000000302000029000900000006001d0000000002260436000000ff0110018f000600000002001d0000000000120435000400000004001d0000000021040434000700000002001d000005c201100197000000000010043f0000000501000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000000000203001916e316de0000040f0000000100200190000016b70000613d00000009020000290000000002020433000005ba02200197000000000101043b000000000301041a000005d003300197000000000223019f000000060300002900000000030304330000002003300210000005d103300197000000000232019f000000080300002900000000030304330000002803300210000005d203300197000000000232019f000000000021041b00000007010000290000000001010433000005c201100197000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f0000000100200190000016b70000613d000000000101043b000000000201041a000005d30220019700000004030000290000006003300039000000000303043300000008033002100000ff000330018f000000000232019f00000001022001bf000000000021041b0000000501000029000000ff0010008c000016bf0000613d0000000101100039000000ff0510018f0000000a0100002900000000010104330000000002010433000000000025004b00008010030000390000159f0000413d000005c201000041000000000010043f0000000901000039000000200010043f0000000001000414000005ba0010009c000005ba01008041000000c001100210000005ca011001c7000080100200003916e316de0000040f0000000100200190000016b70000613d000000000101043b000000000201041a000005d30220019700000001022001bf000000000021041b0000000401000039000000000101041a000900000001001d000005d50100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000016d10000613d0000000902000029000005d702200197000000000101043b0000002001100210000005d801100197000000000121019f0000000402000039000000000012041b0000002002000039000000400100043d00000000042104360000000a02000029000000000202043300000060030000390000000000340435000000800510003900000000030204330000000000350435000000a006100039000000000003004b0000164a0000613d00000000050000190000000007060019000000200220003900000000060204330000000098060434000005c20880019700000000008704350000000008090433000005c208800197000000a009400039000000000089043500000040086000390000000008080433000000ff0880018f000000c0094000390000000000890435000000e00440003900000060066000390000000006060433000000ff0660018f000000000064043500000080067000390000000105500039000000000035004b0000000004070019000016310000413d000000020200002900000000020204330000ffff0220018f00000040031000390000000000230435000000010200002900000000020204330000ffff0220018f000000600310003900000000002304350000000002160049000005ba0020009c000005ba020080410000006002200210000005ba0010009c000005ba010080410000004001100210000000000112019f0000000002000414000005ba0020009c000005ba02008041000000c002200210000000000112019f000005d9011001c70000800d020000390000000203000039000005da04000041000000030500002916e316d90000040f0000000100200190000016b70000613d000000400200043d000005db0020009c000016b90000213d000000c001200039000000400010043f0000000401000039000a00000002001d0000000001120436000900000001001d000005dc0100004100000000001004430000000001000414000005ba0010009c000005ba01008041000000c001100210000005d6011001c70000800b0200003916e316de0000040f0000000100200190000016d10000613d000000000101043b000005bd01100197000000090900002900000000001904350000000a08000029000000a00180003900000000000104350000008002800039000000000002043500000060038000390000000000030435000000400480003900000000000404350000000c05000039000000000605041a000005bd0060009c000016b90000213d0000000107600039000000000075041b000000000050043f0000000005080433000000050050008c000016d20000813d00000000070904330000000807700210000005dd077001970000000106600210000005de0860009a000000000908041a000005df09900197000000000779019f0000000004040433000000000004004b000005e0040000410000000004006019000000000447019f00000000030304330000005003300210000005e103300197000000000334019f000000000353019f000000000038041b000000000202043300000080022002700000000001010433000005e201100197000000000121019f000005e30260009a000000000012041b000000000001042d000000400100043d000005e5020000410000000000210435000005ba0010009c000005ba010080410000004001100210000005e6011001c7000016e5000104300000000001000019000016e5000104300000064001000041000000000010043f0000004101000039000000040010043f0000061f01000041000016e5000104300000064001000041000000000010043f0000001101000039000000040010043f0000061f01000041000016e5000104300000064001000041000000000010043f0000003201000039000000040010043f0000061f01000041000016e5000104300000064001000041000000000010043f0000003101000039000000040010043f0000061f01000041000016e500010430000000000001042f0000064001000041000000000010043f0000002101000039000000040010043f0000061f01000041000016e500010430000000000001042f000016dc002104210000000102000039000000000001042d0000000002000019000000000001042d000016e1002104230000000102000039000000000001042d0000000002000019000000000001042d000016e300000432000016e40001042e000016e5000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffff0000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a534bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a5330200000000000000000000000000000000000040000000000000000000000000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a532bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a531ffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00003bddde647ecb7992f4c710d4e1d59d07614508581f7c22c879a79d28544538a742cbb15ccdc3cad6266b0e7a08c0454b23bf29dc2df74b6f3c209e9336465bd10200000200000000000000000000000000000004000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff000000000000000000000000000000000000000000000000ffffffff0000000002000000000000000000000000000000000000000000000000000000000000008c49fda8177c5c8c768eb39634bc6773695c7181711537b822451c12b2efd2a9000000000000000000000000000000000000000000000000ffffffffffffff3f796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320000000000000000000000000000000000000000000000ffffffffffffffff00209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b5739ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b5738000000020000000000000000000000000000004000000100000000000000000035be3ac800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000009799861100000000000000000000000000000000000000000000000000000000586abe3b00000000000000000000000000000000000000000000000000000000970b8fc100000000000000000000000000000000000000000000000000000000d927f26600000000000000000000000000000000000000000000000000000000d927f26700000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f33f289500000000000000000000000000000000000000000000000000000000970b8fc200000000000000000000000000000000000000000000000000000000ba86a1f000000000000000000000000000000000000000000000000000000000bd147ef4000000000000000000000000000000000000000000000000000000006ba0526c000000000000000000000000000000000000000000000000000000006ba0526d0000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000586abe3c00000000000000000000000000000000000000000000000000000000631ec73e00000000000000000000000000000000000000000000000000000000397796f6000000000000000000000000000000000000000000000000000000003f42ab72000000000000000000000000000000000000000000000000000000003f42ab73000000000000000000000000000000000000000000000000000000004102e4f4000000000000000000000000000000000000000000000000000000004d61677100000000000000000000000000000000000000000000000000000000397796f7000000000000000000000000000000000000000000000000000000003d0cf61000000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000002cbc26bb00000000000000000000000000000000000000000000000000000000328d716c000000000000000000000000000000000000000000000000000000000b009be20000000000000000000000000000000000000000000000000000000015c6558802000000000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff0000000000000000000000000000000000000000000000000100000000000000405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5aceed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c660000000000000000000000000000000000000000000000000000000064000000a0000000000000000000000000000000000000000000000000000000000000003fffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000fffffffffffffe9f00000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000fffffffffffffeff000000000000000000000000000000000000000000000000fffffffffffffe7f000000000000000000000000000000000000000000000000ffffffffffffffbf4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000002000000000000000000000000000000000000600000000000000000000000007d15a6eebaa019ea7d5b7d38937c51ebd3befbfdf51bb630a694fd28635bbcba0100000000000000000000000000000100000000000000000000000000000000cf943f0e419056430919a3fdfd72276bc0b123ebdd670f4152b82bffbfb8bb380000000000000000000000000000000000000000000000ff0000000000000000cde2d97c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000a0000000000000000085412e7f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006dfbb745226fa630aeb1b9557d17d508ddb789a04f0cb873ec16e58beb8beead2a08a2bd2798f0aae9a843f0f4ad4de488c1b3d5f04049940cfed736ad69fb978257378aa73bf8e4ada848713526584a3dcee0fd3db3beed7397f7a7f5067cc9000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000ffff0000000000274d6d5b916b0a53974b7ab86c844b97a2e03a60f658cd9a4b1c028b604d7bf1604c7677000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000a000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e03bddde647ecb7992f4c710d4e1d59d07614508581f7c22c879a79d28544538a8078f34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff000000000000000000000000000000000000000000000000ffff00000000000002000000000000000000000000000000000000c00000000000000000000000008137bc8a8d712aaa27bfc6506d5566ac405618bd53f9831b8ca6b6fe5442ee7affffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff0000000000000000000000000000000000000000000000010000000000000000cfdbfd8ce9a56b5f7c202c0e102184d24f47ca87121dc165063fc4c290957bde0200000000000000000000000000000000000080000000000000000000000000a96a155bd67c927a6c056befbd979b78465e2b2f1276bf7d4e90a31d4f430aa8020000000000000000000000000000000000002000000000000000000000000065d0e78c3625f0956f58610cf0fb157eaf627683258875ef29af2f71d25ac8fdbabb0d7099e6ca14a29fad2a2cfb4fda2bd30f97cb3c27e546174bfb4277c1cc2432d8ea0000000000000000000000000000000000000000000000000000000055e9b08b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000599336d74a1247d50642b66dd6abeaa5484f6bd96b415b31bb99e26578c939794e487b7100000000000000000000000000000000000000000000000000000000dca892154bbc36d0c05ccd01b3d0411875cb1b841fcdeebb384e5d0d6eb06b44599336d74a1247d50642b66dd6abeaa5484f6bd96b415b31bb99e26578c9397866b4b4752c65ae8cd2f3a0a48c7dc8b2118c60d5ea15514992eb2ddf56c9cb1501000000000000000000000000000000000000000000000000000000000000001d4cd6d2639449a552dbfb463b59316946d78c518b3170daa4a4c217bef019ba524d4e20312e352e3000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000e00000000000000000fb106b6a00000000000000000000000000000000000000000000000000000000a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffa044d9bb0f580241649043c326e7c7fc68b913546c25f81bb71179db55f02df99e") + type GetBlessProgress struct { BlessVoteAddrs []common.Address AccumulatedWeight uint16 @@ -2702,6 +2723,82 @@ func (_RMNContract *RMNContract) Address() common.Address { return _RMNContract.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncRMNContract(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *RMNContract, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(RMNContractZkBin) + fmt.Println("deploying") + RMNContractAbi, err := RMNContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := RMNContractAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := RMNContractMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &RMNContract{address: address, abi: *parsed, RMNContractCaller: RMNContractCaller{contract: contractBind}, RMNContractTransactor: RMNContractTransactor{contract: contractBind}, RMNContractFilterer: RMNContractFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type RMNContractInterface interface { GetBlessProgress(opts *bind.CallOpts, taggedRoot IRMNTaggedRoot) (GetBlessProgress, diff --git a/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go b/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go index 18fd9898d8..398e43b4aa 100644 --- a/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go +++ b/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go @@ -4,6 +4,7 @@ package rmn_proxy_contract import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -39,7 +44,21 @@ var RMNProxyContractABI = RMNProxyContractMetaData.ABI var RMNProxyContractBin = RMNProxyContractMetaData.Bin -func DeployRMNProxyContract(auth *bind.TransactOpts, backend bind.ContractBackend, arm common.Address) (common.Address, *types.Transaction, *RMNProxyContract, error) { +func DeployRMNProxyContract(auth *bind.TransactOpts, backend bind.ContractBackend, arm common.Address) (common.Address, *CustomTransaction, *RMNProxyContract, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncRMNProxyContract(auth, backend, arm) + } + parsed, err := RMNProxyContractMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -52,7 +71,7 @@ func DeployRMNProxyContract(auth *bind.TransactOpts, backend bind.ContractBacken if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &RMNProxyContract{address: address, abi: *parsed, RMNProxyContractCaller: RMNProxyContractCaller{contract: contract}, RMNProxyContractTransactor: RMNProxyContractTransactor{contract: contract}, RMNProxyContractFilterer: RMNProxyContractFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &RMNProxyContract{address: address, abi: *parsed, RMNProxyContractCaller: RMNProxyContractCaller{contract: contract}, RMNProxyContractTransactor: RMNProxyContractTransactor{contract: contract}, RMNProxyContractFilterer: RMNProxyContractFilterer{contract: contract}}, nil } type RMNProxyContract struct { @@ -674,6 +693,8 @@ func (_RMNProxyContract *RMNProxyContractFilterer) ParseOwnershipTransferred(log return event, nil } +var RMNProxyContractZkBin string = ("0x000400000000000200010000000000020000006004100270000000670340019700030000003103550002000000010355000000670040019d00000001002001900000002b0000c13d0000008002000039000000400020043f000000040030008c000000820000413d000000000201043b000000e002200270000000740020009c000000620000213d000000780020009c000000ce0000613d000000790020009c000000de0000613d0000007a0020009c000000820000c13d000000240030008c0000018a0000413d0000000002000416000000000002004b0000018a0000c13d0000000401100370000000000101043b0000006a0010009c0000018a0000213d000000000200041a0000006a022001970000000003000411000000000023004b000001530000c13d000000000001004b000001690000c13d0000006f01000041000000800010043f000000840100004100000199000104300000000002000416000000000002004b0000018a0000c13d0000001f0230003900000068022001970000008002200039000000400020043f0000001f0430018f000000690530019800000080025000390000003c0000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b000000380000c13d000000000004004b000000490000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c0000018a0000413d000000800100043d0000006a0010009c0000018a0000213d0000000003000411000000000003004b000001050000c13d000000400100043d00000044021000390000007103000041000000000032043500000024021000390000001803000039000000000032043500000072020000410000000000210435000000040210003900000020030000390000000000320435000000670010009c0000006701008041000000400110021000000073011001c70000019900010430000000750020009c000000e40000613d000000760020009c000000fd0000613d000000770020009c000000820000c13d000000240030008c0000018a0000413d0000000002000416000000000002004b0000018a0000c13d0000000401100370000000000601043b0000006a0060009c0000018a0000213d000000000100041a0000006a011001970000000005000411000000000015004b000001530000c13d000000000056004b000001780000c13d0000007201000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f0000007d01000041000000c40010043f0000007e0100004100000199000104300000000001000416000000000001004b0000018a0000c13d0000000201000039000000000101041a000000870200004100000000002004430000006a01100197000100000001001d00000004001004430000000001000414000000670010009c0000006701008041000000c00110021000000088011001c70000800202000039019701920000040f0000000100200190000000cd0000613d000000000101043b000000000001004b0000018a0000613d0000000204000367000000000100003100000089031001980000001f0510018f000000a30000613d000000000604034f0000000007000019000000006806043c0000000007870436000000000037004b0000009f0000c13d000000000005004b000000b00000613d000000000434034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f000000000043043500000000030004140000000102000029000000040020008c000001130000c13d0000000303000367000000010100003100000089021001980000001f0410018f000000bf0000613d000000000503034f0000000006000019000000005705043c0000000006760436000000000026004b000000bb0000c13d000000000004004b000001350000613d000000000323034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000001350000013d000000000001042f0000000001000416000000000001004b0000018a0000c13d000000c001000039000000400010043f0000000e01000039000000800010043f0000008502000041000000a00020043f0000002003000039000000c00030043f000000e00010043f000001000020043f0000010e0000043f0000008601000041000001980001042e0000000001000416000000000001004b0000018a0000c13d0000000201000039000000000101041a000001010000013d0000000001000416000000000001004b0000018a0000c13d0000000101000039000000000201041a0000006a032001970000000006000411000000000036004b0000015d0000c13d000000000300041a0000006b04300197000000000464019f000000000040041b0000006b02200197000000000021041b00000000010004140000006a05300197000000670010009c0000006701008041000000c0011002100000007b011001c70000800d0200003900000003030000390000008104000041000001850000013d0000000001000416000000000001004b0000018a0000c13d000000000100041a0000006a01100197000000800010043f0000007f01000041000001980001042e0000006a02100198000000000100041a0000006b01100197000000000131019f000000000010041b000000400100043d000001390000c13d0000006f020000410000000000210435000000670010009c0000006701008041000000400110021000000070011001c700000199000104300000006001100210000000670030009c0000006703008041000000c00330021000000000011300190197018d0000040f000300000001035500000060031002700000001f0530018f000100670030019d0000006904300198000001250000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000001210000c13d000000000005004b000001320000613d000000000141034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000067013001970000000100200190000001670000613d000000670010009c00000067010080410000006001100210000001980001042e0000000203000039000000000403041a0000006b04400197000000000424019f000000000043041b0000000000210435000000670010009c000000670100804100000040011002100000000002000414000000670020009c0000006702008041000000c002200210000000000112019f0000006c011001c70000800d0200003900000001030000390000006d040000410197018d0000040f00000001002001900000018a0000613d0000002001000039000001000010044300000120000004430000006e01000041000001980001042e0000007201000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000008201000041000000c40010043f0000007e0100004100000199000104300000007201000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000008001000041000000c40010043f0000007e010000410000019900010430000000600110021000000199000104300000000202000039000000000302041a0000006b03300197000000000313019f000000000032041b000000800010043f0000000001000414000000670010009c0000006701008041000000c00110021000000083011001c70000800d0200003900000001030000390000006d04000041000001850000013d0000000101000039000000000201041a0000006b02200197000000000262019f000000000021041b0000000001000414000000670010009c0000006701008041000000c0011002100000007b011001c70000800d0200003900000003030000390000007c040000410197018d0000040f00000001002001900000018a0000613d0000000001000019000001980001042e00000000010000190000019900010430000000000001042f00000190002104210000000102000039000000000001042d0000000002000019000000000001042d00000195002104230000000102000039000000000001042d0000000002000019000000000001042d0000019700000432000001980001042e00000199000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ef31f568d741a833c6a9dc85a6e1c65e06fa772740d5dc94d1da21827a4e0cab00000002000000000000000000000000000000400000010000000000000000008579befe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000079ba50960000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000002e90aa2100000000000000000000000000000000000000000000000000000000458fec3b0200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c66000000000000000000000000000000000000000000000000000000006400000080000000000000000000000000000000000000000000000000000000200000008000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f6e6c792063616c6c61626c65206279206f776e6572000000000000000000000200000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000400000080000000000000000041524d50726f787920312e302e300000000000000000000000000000000000000000000000000000000000000000000000000060000000c000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe05d351c610fe567c075ee9a491ba3f98baf2d8bf4cbf9cba246ec4c42125afd41") + func (_RMNProxyContract *RMNProxyContract) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _RMNProxyContract.abi.Events["ARMSet"].ID: @@ -704,6 +725,82 @@ func (_RMNProxyContract *RMNProxyContract) Address() common.Address { return _RMNProxyContract.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncRMNProxyContract(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *RMNProxyContract, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(RMNProxyContractZkBin) + fmt.Println("deploying") + RMNProxyContractAbi, err := RMNProxyContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := RMNProxyContractAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := RMNProxyContractMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &RMNProxyContract{address: address, abi: *parsed, RMNProxyContractCaller: RMNProxyContractCaller{contract: contractBind}, RMNProxyContractTransactor: RMNProxyContractTransactor{contract: contractBind}, RMNProxyContractFilterer: RMNProxyContractFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type RMNProxyContractInterface interface { GetARM(opts *bind.CallOpts) (common.Address, error) diff --git a/core/gethwrappers/ccip/generated/router/router.go b/core/gethwrappers/ccip/generated/router/router.go index 9a0d4a4055..bdf279bb0c 100644 --- a/core/gethwrappers/ccip/generated/router/router.go +++ b/core/gethwrappers/ccip/generated/router/router.go @@ -4,6 +4,7 @@ package router import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -70,7 +75,21 @@ var RouterABI = RouterMetaData.ABI var RouterBin = RouterMetaData.Bin -func DeployRouter(auth *bind.TransactOpts, backend bind.ContractBackend, wrappedNative common.Address, armProxy common.Address) (common.Address, *types.Transaction, *Router, error) { +func DeployRouter(auth *bind.TransactOpts, backend bind.ContractBackend, wrappedNative common.Address, armProxy common.Address) (common.Address, *CustomTransaction, *Router, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncRouter(auth, backend, wrappedNative, armProxy) + } + parsed, err := RouterMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -83,7 +102,7 @@ func DeployRouter(auth *bind.TransactOpts, backend bind.ContractBackend, wrapped if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &Router{address: address, abi: *parsed, RouterCaller: RouterCaller{contract: contract}, RouterTransactor: RouterTransactor{contract: contract}, RouterFilterer: RouterFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &Router{address: address, abi: *parsed, RouterCaller: RouterCaller{contract: contract}, RouterTransactor: RouterTransactor{contract: contract}, RouterFilterer: RouterFilterer{contract: contract}}, nil } type Router struct { @@ -1304,6 +1323,8 @@ func (_Router *RouterFilterer) ParseOwnershipTransferred(log types.Log) (*Router return event, nil } +var RouterZkBin string = ("0x0004000000000002000d0000000000020000006003100270000003de0030019d000003de063001970003000000610355000200000001035500000001002001900000002d0000c13d0000008002000039000000400020043f000000040060008c000000530000413d000000000201043b000000e002200270000003e70020009c000000550000213d000003f40020009c000000920000a13d000003f50020009c0000030c0000a13d000003f60020009c000004b40000613d000003f70020009c0000047d0000613d000003f80020009c000000530000c13d000000440060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000402100370000000000202043b000004000020009c000000530000213d0000002401100370000000000101043b000003e10010009c000000530000213d000000a0022002100000041002200197000000000121019f0f720f250000040f000003020000013d0000000002000416000000000002004b000000530000c13d0000001f02600039000003df02200197000000a002200039000000400020043f0000001f0360018f000003e004600198000000a0024000390000003e0000613d000000a005000039000000000701034f000000007807043c0000000005850436000000000025004b0000003a0000c13d000000000003004b0000004b0000613d000000000141034f0000000303300210000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f0000000000120435000000400060008c000000530000413d000000a00100043d000003e10010009c000000530000213d000000c00200043d000003e10020009c000002ce0000a13d000000000100001900000f7400010430000003e80020009c000001b60000a13d000003e90020009c0000032b0000a13d000003ea0020009c000004bb0000613d000003eb0020009c0000049a0000613d000003ec0020009c000000530000c13d000000240060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000401100370000000000101043b000b00000001001d000004000010009c000000530000213d0000000b01000029000000000010043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b000000000101041a000003e100100198000005240000c13d000000400100043d000004070010009c000004f90000213d0000002002100039000000400020043f0000000000010435000000400200043d00000020030000390000000003320436000000000401043300000000004304350000004003200039000000000004004b000000900000613d000000000500001900000020011000390000000006010433000003e10660019700000000036304360000000105500039000000000045004b000000890000413d0000000001230049000004750000013d000003fb0020009c000002e20000213d000003fe0020009c000003e30000613d000003ff0020009c000000530000c13d000000440060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000402100370000000000202043b000004000020009c000000530000213d0000002403100370000000000303043b000004000030009c000000530000213d0000000004360049000004040040009c000000530000213d000000a40040008c000000530000413d0000012004000039000000400040043f0000000405300039000000000751034f000000000707043b000004000070009c000000530000213d00000000083700190000002307800039000000000067004b000000530000813d0000000409800039000000000791034f000000000707043b000004000070009c000004f90000213d0000001f0a700039000004400aa001970000003f0aa00039000004400aa001970000041c00a0009c000004f90000213d000001200aa000390000004000a0043f000001200070043f00000000087800190000002408800039000000000068004b000000530000213d0000002008900039000000000981034f000004400a7001980000001f0b70018f0000014008a00039000000d30000613d000001400c000039000000000d09034f00000000de0d043c000000000cec043600000000008c004b000000cf0000c13d00000000000b004b000000e00000613d0000000009a9034f000000030ab00210000000000b080433000000000bab01cf000000000bab022f000000000909043b000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f000000000098043500000140077000390000000000070435000000800040043f0000002004500039000000000541034f000000000505043b000004000050009c000000530000213d00000000093500190000002305900039000000000065004b000000530000813d000000040a9000390000000005a1034f000000000505043b000004000050009c000004f90000213d0000001f0750003900000440077001970000003f077000390000044008700197000000400700043d0000000008870019000000000078004b000000000b000039000000010b004039000004000080009c000004f90000213d0000000100b00190000004f90000c13d000000400080043f000000000857043600000000095900190000002409900039000000000069004b000000530000213d0000002009a00039000000000a91034f000004400b5001980000001f0c50018f0000000009b80019000001100000613d000000000d0a034f000000000e08001900000000df0d043c000000000efe043600000000009e004b0000010c0000c13d00000000000c004b0000011d0000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a9043500000000055800190000000000050435000000a00070043f0000002004400039000000000541034f000000000505043b000004000050009c000000530000213d00000000073500190000002305700039000000000065004b000000530000813d0000000405700039000000000551034f000000000905043b000004000090009c000004f90000213d00000005059002100000003f055000390000040608500197000000400500043d0000000008850019000000000058004b000000000a000039000000010a004039000004000080009c000004f90000213d0000000100a00190000004f90000c13d000000400080043f0000000000950435000000240770003900000006089002100000000008780019000000000068004b000000530000213d000000000009004b0000088f0000c13d000000c00050043f0000002004400039000000000541034f000000000505043b000003e10050009c000000530000213d000000e00050043f0000002004400039000000000441034f000000000404043b000004000040009c000000530000213d00000000073400190000002303700039000000000063004b000000000400001900000405040080410000040503300197000000000003004b00000000050000190000040505004041000004050030009c000000000504c019000000000005004b000000530000c13d0000000408700039000000000381034f000000000303043b000004000030009c000004f90000213d0000001f0430003900000440044001970000003f044000390000044005400197000000400400043d0000000005540019000000000045004b00000000090000390000000109004039000004000050009c000004f90000213d0000000100900190000004f90000c13d000000400050043f000000000534043600000000073700190000002407700039000000000067004b000000530000213d0000002006800039000000000661034f00000440073001980000001f0830018f0000000001750019000001800000613d000000000906034f000000000a050019000000009b09043c000000000aba043600000000001a004b0000017c0000c13d000000000008004b0000018d0000613d000000000676034f0000000307800210000000000801043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f000000000061043500000000013500190000000000010435000001000040043f000000e00100043d000003e100100198000001970000c13d0000000201000039000000000101041a000003e101100197000000e00010043f0000040001200197000a00000001001d000000000010043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000400200043d000b00000002001d0000000403200039000000000101043b000000000101041a000003e102100198000008db0000c13d0000042e010000410000000b0200002900000000001204350000000a010000290000000000130435000003de0020009c000003de02008041000000400120021000000403011001c700000f7400010430000003ef0020009c000002f40000213d000003f20020009c000003f70000613d000003f30020009c000000530000c13d000000440060008c000000530000413d0000000402100370000000000202043b000b00000002001d000004000020009c000000530000213d0000002402100370000000000202043b000004000020009c000000530000213d0000000003260049000004040030009c000000530000213d000000a40030008c000000530000413d0000012003000039000000400030043f0000000404200039000000000541034f000000000505043b000004000050009c000000530000213d00000000072500190000002305700039000000000065004b000000530000813d0000000408700039000000000581034f000000000505043b000004000050009c000004f90000213d0000001f0950003900000440099001970000003f0990003900000440099001970000041c0090009c000004f90000213d0000012009900039000000400090043f000001200050043f00000000075700190000002407700039000000000067004b000000530000213d0000002007800039000000000871034f00000440095001980000001f0a50018f0000014007900039000001f50000613d000001400b000039000000000c08034f00000000cd0c043c000000000bdb043600000000007b004b000001f10000c13d00000000000a004b000002020000613d000000000898034f0000000309a00210000000000a070433000000000a9a01cf000000000a9a022f000000000808043b0000010009900089000000000898022f00000000089801cf0000000008a8019f000000000087043500000140055000390000000000050435000000800030043f0000002003400039000000000431034f000000000404043b000004000040009c000000530000213d00000000082400190000002304800039000000000064004b000000530000813d0000000409800039000000000491034f000000000404043b000004000040009c000004f90000213d0000001f0540003900000440055001970000003f055000390000044007500197000000400500043d0000000007750019000000000057004b000000000a000039000000010a004039000004000070009c000004f90000213d0000000100a00190000004f90000c13d000000400070043f000000000745043600000000084800190000002408800039000000000068004b000000530000213d0000002008900039000000000981034f000004400a4001980000001f0b40018f0000000008a70019000002320000613d000000000c09034f000000000d07001900000000ce0c043c000000000ded043600000000008d004b0000022e0000c13d00000000000b004b0000023f0000613d0000000009a9034f000000030ab00210000000000b080433000000000bab01cf000000000bab022f000000000909043b000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f000000000098043500000000044700190000000000040435000000a00050043f0000002003300039000000000431034f000000000404043b000004000040009c000000530000213d00000000052400190000002304500039000000000064004b000000530000813d0000000404500039000000000441034f000000000804043b000004000080009c000004f90000213d00000005048002100000003f044000390000040607400197000000400400043d0000000007740019000000000047004b00000000090000390000000109004039000004000070009c000004f90000213d0000000100900190000004f90000c13d000000400070043f0000000000840435000000240550003900000006078002100000000007570019000000000067004b000000530000213d000000000008004b000008a90000c13d000000c00040043f0000002003300039000000000431034f000000000404043b000003e10040009c000000530000213d000000e00040043f0000002003300039000000000331034f000000000303043b000004000030009c000000530000213d00000000052300190000002302500039000000000062004b000000000300001900000405030080410000040502200197000000000002004b00000000040000190000040504004041000004050020009c000000000403c019000000000004004b000000530000c13d0000000407500039000000000271034f000000000202043b000004000020009c000004f90000213d0000001f0320003900000440033001970000003f033000390000044004300197000000400300043d0000000004430019000000000034004b00000000080000390000000108004039000004000040009c000004f90000213d0000000100800190000004f90000c13d000000400040043f000000000423043600000000052500190000002405500039000000000065004b000000530000213d0000002005700039000000000551034f00000440062001980000001f0720018f0000000001640019000002a20000613d000000000805034f0000000009040019000000008a08043c0000000009a90436000000000019004b0000029e0000c13d000000000007004b000002af0000613d000000000565034f0000000306700210000000000701043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000051043500000000012400190000000000010435000001000030043f0000041d01000041000000400200043d000a00000002001d00000000001204350000041e0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003de0010009c000003de01008041000000c0011002100000041f011001c700008005020000390f720f6d0000040f000000010020019000000d0e0000613d000000000201043b0000000001000414000003e102200197000000040020008c000009440000c13d0000000103000031000000200030008c000000200400003900000000040340190000096e0000013d0000000003000411000000000003004b000003d10000c13d000000400100043d0000004402100039000003e4030000410000000000320435000000240210003900000018030000390000000000320435000003e5020000410000000000210435000000040210003900000020030000390000000000320435000003de0010009c000003de010080410000004001100210000003e6011001c700000f7400010430000003fc0020009c000003fc0000613d000003fd0020009c000000530000c13d0000000001000416000000000001004b000000530000c13d0000000001000412000d00000001001d000c00000000003d0000800501000039000000440300003900000000040004150000000d0440008a00000005044002100000041e020000410f720f4f0000040f000004e20000013d000003f00020009c000004320000613d000003f10020009c000000530000c13d000000240060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000401100370000000000101043b000004000010009c000000530000213d0f720ddb0000040f000000000001004b0000000001000039000000010100c039000000400200043d0000000000120435000003de0020009c000003de02008041000000400120021000000418011001c700000f730001042e000003f90020009c000004c00000613d000003fa0020009c000000530000c13d000000640060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000402100370000000000502043b000003e10050009c000000530000213d0000002402100370000000000402043b000003e10040009c000000530000213d000000000200041a000003e1022001970000000003000411000000000023004b000005090000c13d0000004402100370000000000302043b000000000004004b0000055c0000c13d0000043301000041000000800010043f000000840000043f000004340100004100000f7400010430000003ed0020009c000004d20000613d000003ee0020009c000000530000c13d000000640060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000402100370000000000202043b000004000020009c000000530000213d0000002303200039000000000063004b000000530000813d0000000403200039000000000331034f000000000303043b000700000003001d000004000030009c000000530000213d000600240020003d000000070200002900000006022002100000000602200029000000000062004b000000530000213d0000002402100370000000000202043b000004000020009c000000530000213d0000002303200039000000000063004b000000530000813d0000000403200039000000000331034f000000000303043b000300000003001d000004000030009c000000530000213d000200240020003d000000030200002900000006022002100000000202200029000000000062004b000000530000213d0000004402100370000000000202043b000004000020009c000000530000213d0000002303200039000000000063004b000000530000813d0000000403200039000000000131034f000000000101043b000500000001001d000004000010009c000000530000213d000400240020003d000000050100002900000006011002100000000401100029000000000061004b000000530000213d000000000100041a000003e1011001970000000002000411000000000012004b000005090000c13d000000070000006b000007b80000c13d000000030000006b000008030000c13d000000050000006b000004980000613d000b00000000001d0000037f0000013d0000000b020000290000000102200039000b00000002001d000000050020006c000004980000813d0000000b01000029000000060110021000000004011000290000000202000367000000000312034f000000000303043b000a00000003001d000004000030009c000000530000213d0000002001100039000000000112034f000000000101043b000900000001001d000003e10010009c000000530000213d0000000a01000029000000a001100210000004100110019700000009011001af000800000001001d000000000010043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b000000000101041a000000000001004b0000037a0000c13d0000000403000039000000000103041a000004000010009c000004f90000213d0000000102100039000000000023041b000004160110009a0000000802000029000000000021041b000000000103041a000700000001001d000000000020043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b0000000702000029000000000021041b000000400100043d00000009020000290000000000210435000003de0010009c000003de0100804100000040011002100000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f0000040e011001c70000800d02000039000000020300003900000417040000410000000a050000290f720f680000040f00000001002001900000037a0000c13d000000530000013d000000000400041a000003e204400197000000000334019f000000000030041b0000000203000039000000000403041a000003e204400197000000000114019f000000000013041b000000800020043f000001400000044300000160002004430000002001000039000001000010044300000001010000390000012000100443000003e30100004100000f730001042e0000000001000416000000000001004b000000530000c13d000000c001000039000000400010043f0000000c01000039000000800010043f0000043e01000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e0020000390f720dc90000040f000000c00110008a000003de0010009c000003de0100804100000060011002100000043f011001c700000f730001042e0000000001000416000000000001004b000000530000c13d000000000100041a000004e20000013d000000840060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000402100370000000000202043b000b00000002001d000004000020009c000000530000213d0000000b0260006a000004040020009c000000530000213d000000a40020008c000000530000413d0000002402100370000000000202043b000a00000002001d0000ffff0020008c000000530000213d0000006402100370000000000202043b000900000002001d000003e10020009c000000530000213d0000004401100370000000000101043b000800000001001d0000041d01000041000000800010043f0000041e0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003de0010009c000003de01008041000000c0011002100000041f011001c700008005020000390f720f6d0000040f000000010020019000000d0e0000613d000000000201043b0000000001000414000003e102200197000000040020008c000005650000c13d0000000103000031000000200030008c000000200400003900000000040340190000058a0000013d0000000001000416000000000001004b000000530000c13d0000000402000039000000000102041a000000800010043f000000000020043f000000000001004b000004e60000c13d000000a001000039000000400010043f0000002002000039000000000400001900000005034002100000003f053000390000041b055001970000000005150019000004000050009c000004f90000213d000000400050043f0000000000410435000000000004004b000004580000613d000000a0042000390000000005000019000000400600043d0000040d0060009c000004f90000213d0000004007600039000000400070043f000000200760003900000000000704350000000000060435000000000754001900000000006704350000002005500039000000000035004b0000044b0000413d000000800300043d000000000003004b000005400000c13d000000400200043d00000020030000390000000004320436000000000301043300000000003404350000004004200039000000000003004b000004740000613d0000000005000019000000000602001900000000070400190000002001100039000000000401043300000000840404340000040004400197000000000047043500000060046000390000000006080433000003e106600197000000000064043500000040047000390000000105500039000000000035004b0000000006070019000004650000413d0000000001240049000003de0010009c000003de010080410000006001100210000003de0020009c000003de020080410000004002200210000000000121019f00000f730001042e0000000001000416000000000001004b000000530000c13d0000000101000039000000000201041a000003e1032001970000000006000411000000000036004b000004ff0000c13d000000000300041a000003e204300197000000000464019f000000000040041b000003e202200197000000000021041b0000000001000414000003e105300197000003de0010009c000003de01008041000000c00110021000000408011001c70000800d02000039000000030300003900000430040000410f720f680000040f0000000100200190000000530000613d000000000100001900000f730001042e000000240060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000401100370000000000601043b000003e10060009c000000530000213d000000000100041a000003e1011001970000000005000411000000000015004b000005090000c13d000000000056004b000005130000c13d000003e501000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f0000040a01000041000000c40010043f0000040b0100004100000f74000104300000000001000416000000000001004b000000530000c13d0000008401000039000000800010043f0000040c0100004100000f730001042e0000000001000416000000000001004b000000530000c13d0000000201000039000004e10000013d000000240060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000401100370000000000101043b000b00000001001d000003e10010009c000000530000213d0f720df00000040f0000000201000039000000000201041a000003e2022001970000000b022001af000000000021041b000000000100001900000f730001042e000000240060008c000000530000413d0000000002000416000000000002004b000000530000c13d0000000401100370000000000101043b000004000010009c000000530000213d000000000010043f0000000301000039000000200010043f000000400200003900000000010000190f720f3a0000040f000000000101041a000003e101100197000000800010043f0000040c0100004100000f730001042e000000a004000039000004190200004100000000030000190000000005040019000000000402041a000000000445043600000001022000390000000103300039000000000013004b000004e90000413d000000410150008a00000440021001970000041a0020009c000004f90000213d0000008001200039000000800400043d000000400010043f000004000040009c0000043f0000a13d0000041201000041000000000010043f0000004101000039000000040010043f000004030100004100000f7400010430000003e501000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000042f01000041000000c40010043f0000040b0100004100000f7400010430000003e501000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000043101000041000000c40010043f0000040b0100004100000f74000104300000000101000039000000000201041a000003e202200197000000000262019f000000000021041b0000000001000414000003de0010009c000003de01008041000000c00110021000000408011001c70000800d02000039000000030300003900000409040000410f720f680000040f0000000100200190000000530000613d000004980000013d0000000b01000029000000000010043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b000000000201041a000000400a00043d000004020100004100000000001a04350000000401a000390000000b0300002900000000003104350000000001000414000003e102200197000000040020008c000005be0000c13d00000003010003670000000103000031000005d00000013d0000000003000019000000400400043d0000040d0040009c000004f90000213d0000000505300210000000a00550003900000000060504330000004007400039000000400070043f0000002007400039000003e1086001970000000000870435000000a006600270000004000660019700000000006404350000000006010433000000000036004b00000d890000a13d000000000525001900000000004504350000000004010433000000000034004b00000d890000a13d0000000103300039000000800400043d000000000043004b000005410000413d0000045b0000013d000000000005004b000006220000c13d0000000002000414000000040040008c000006590000c13d000000000161034f00000001020000390000000103000031000006680000013d000003de0010009c000003de01008041000000c00110021000000435011001c70f720f6d0000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a000039000005790000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000005750000c13d000000000006004b000005860000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000062f0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000530000413d000000800200043d000000000002004b0000000003000039000000010300c039000000000032004b000000530000c13d000000000002004b0000069c0000c13d0000000b010000290000002401100039000700000001001d0000000201100367000000000101043b000004000010009c000000530000213d0000000002000411000503e10020019b000000a001100210000004100110019700000005011001af000000000010043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000400200043d000600000002001d000000000101043b000000000101041a000000000001004b000006a10000c13d0000043d0100004100000006020000290000000000120435000003de0020009c000003de02008041000000400120021000000420011001c700000f7400010430000003de00a0009c000b0000000a001d000003de0300004100000000030a40190000004003300210000003de0010009c000003de01008041000000c001100210000000000131019f00000403011001c70f720f6d0000040f0000006003100270000103de0030019d000003de03300197000300000001035500000001002001900000063b0000613d0000000b0a00002900000440053001980000001f0630018f00000000045a0019000005da0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000005d60000c13d000000000006004b000005e70000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000440021001970000000001a20019000000000021004b00000000020000390000000102004039000004000010009c000004f90000213d0000000100200190000004f90000c13d000000400010043f000004040030009c000000530000213d000000200030008c000000530000413d00000000020a0433000004000020009c000000530000213d0000000003a300190000000002a200190000001f04200039000000000034004b0000000005000019000004050500804100000405044001970000040506300197000000000764013f000000000064004b00000000040000190000040504004041000004050070009c000000000405c019000000000004004b000000530000c13d0000000024020434000004000040009c000004f90000213d00000005054002100000003f0650003900000406066001970000000006160019000004000060009c000004f90000213d000000400060043f00000000004104350000000004250019000000000034004b000000530000213d000000000042004b000000800000813d00000000030100190000000025020434000003e10050009c000000530000213d00000020033000390000000000530435000000000042004b0000061a0000413d000000800000013d0000042a01000041000000a00010043f000000a40040043f000000c40030043f0000004401000039000000800010043f0000010001000039000000400010043f000000800200003900000000010500190f720e070000040f000000000100001900000f730001042e0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000006360000c13d000006460000013d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000006420000c13d000000000005004b000006530000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003de0020009c000003de020080410000004002200210000000000112019f00000f7400010430000003de0020009c000003de02008041000000c001200210000000000003004b000006600000c13d0000000002040019000006630000013d00000408011001c7000080090200003900000000050000190f720f680000040f00030000000103550000006003100270000103de0030019d000003de03300197000000000003004b000006740000c13d0000000100200190000004980000c13d000000400100043d00000432020000410000000000210435000003de0010009c000003de01008041000000400110021000000420011001c700000f7400010430000004000030009c000004f90000213d0000001f0530003900000440055001970000003f055000390000044006500197000000400500043d0000000006650019000000000056004b00000000070000390000000107004039000004000060009c000004f90000213d0000000100700190000004f90000c13d000000400060043f000000000635043600000440043001980000001f0530018f00000000034600190000068e0000613d000000000701034f000000007807043c0000000006860436000000000036004b0000068a0000c13d000000000005004b0000066a0000613d000000000141034f0000000304500210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000066a0000013d00000421020000410000000000210435000000400110021000000420011001c700000f7400010430000000060300002900000020023000390000043601000041000400000002001d00000000001204350000002401300039000000200200003900000000002104350000000704000029000300200040009200000002010003670000000302100360000000000202043b00000044033000390000000000230435000000000241034f000000000202043b000004000020009c000000530000213d0000000b030000290000000403300039000000060400002900000064044000390000000000240435000000000200003100000000043200490000001f0440008a00000007050000290000002006500039000000000561034f000000000705043b00000405087001970000040505400197000000000958013f000000000058004b00000000080000190000040508004041000000000047004b000000000a000019000004050a008041000004050090009c00000000080ac019000000000008004b000000530000c13d0000000008370019000000000781034f000000000707043b000004000070009c000000530000213d00000020088000390000000009720049000000000098004b000000000a000019000004050a0020410000040509900197000004050b800197000000000c9b013f00000000009b004b000000000900001900000405090040410000040500c0009c00000000090ac019000000000009004b000000530000c13d000000060d0000290000008409d00039000000a00a0000390000000000a90435000000e409d000390000000000790435000000000a81034f000004400b7001980000001f0c70018f0000010409d000390000000008b90019000006f30000613d000000000d0a034f000000000e09001900000000df0d043c000000000efe043600000000008e004b000006ef0000c13d00000000000c004b000007000000613d000000000aba034f000000030bc00210000000000c080433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a80435000000000897001900000000000804350000002008600039000000000681034f000000000606043b000004050a600197000000000b5a013f00000000005a004b000000000a000019000004050a004041000000000046004b000000000c000019000004050c0080410000040500b0009c000000000a0cc01900000000000a004b000000530000c13d000000000a3600190000000006a1034f000000000606043b000004000060009c000000530000213d000000200aa00039000000000b6200490000000000ba004b000000000c000019000004050c002041000004050bb00197000004050da00197000000000ebd013f0000000000bd004b000000000b000019000004050b0040410000040500e0009c000000000b0cc01900000000000b004b000000530000c13d0000001f0770003900000440077001970000000009970019000000c007700039000000060b000029000000a40bb0003900000000007b0435000000000aa1034f0000000007690436000004400b6001980000001f0c60018f0000000009b70019000007380000613d000000000d0a034f000000000e07001900000000df0d043c000000000efe043600000000009e004b000007340000c13d00000000000c004b000007450000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a90435000000000976001900000000000904350000002008800039000000000881034f000000000808043b0000040509800197000000000a59013f000000000059004b00000000050000190000040505004041000000000048004b000000000400001900000405040080410000040500a0009c000000000504c019000000000005004b000000530000c13d0000000004380019000000000341034f000000000303043b000004000030009c000000530000213d000000200440003900000006053002100000000005520049000000000054004b0000000008000019000004050800204100000405055001970000040509400197000000000a59013f000000000059004b000000000500001900000405050040410000040500a0009c000000000508c019000000000005004b000000530000c13d0000001f056000390000044005500197000000000575001900000006070000290000000006750049000000440660008a000000c40770003900000000006704350000000005350436000000000003004b000007850000613d0000000006000019000000000741034f000000000707043b000003e10070009c000000530000213d00000000077504360000002008400039000000000881034f000000000808043b0000000000870435000000400440003900000040055000390000000106600039000000000036004b000007770000413d00000006060000290000000003650049000000200430008a00000000004604350000001f0330003900000440033001970000000004630019000000000034004b00000000030000390000000103004039000200000004001d000004000040009c000004f90000213d0000000100300190000004f90000c13d0000000203000029000000400030043f000004370030009c000004f90000213d0000000205000029000000c003500039000000400030043f00000084040000390000000004450436000000000121034f000b00000004001d0000000002040019000000001401043c0000000002420436000000000032004b000007a00000c13d00000426010000410000000000100443000000090100002900000004001004430000000001000414000003de0010009c000003de01008041000000c00110021000000427011001c700008002020000390f720f6d0000040f000000010020019000000d0e0000613d000000000101043b000000000001004b000008c30000c13d0000043c01000041000000000010043f000004200100004100000f74000104300000000002000019000b00000002001d000000060120021000000006011000290000000002100079000004040020009c000000530000213d000000400020008c000000530000413d000000400400043d0000040d0040009c000004f90000213d0000004002400039000000400020043f0000000203000367000000000213034f000000000202043b000004000020009c000000530000213d00000000052404360000002001100039000000000113034f000000000301043b000003e10030009c000000530000213d0000000000350435000000000020043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c70000801002000039000a00000004001d000900000005001d000800000003001d0f720f6d0000040f000000080500002900000009040000290000000a030000290000000100200190000000530000613d000000000101043b000000000201041a000003e202200197000000000252019f000000000021041b00000000020304330000000001040433000003e101100197000000400300043d0000000000130435000003de0030009c000003de0300804100000040013002100000000003000414000003de0030009c000003de03008041000000c003300210000000000113019f0000040e011001c700000400052001970000800d0200003900000002030000390000040f040000410f720f680000040f0000000100200190000000530000613d0000000b020000290000000102200039000000070020006c000007b90000413d000003740000013d0000000002000019000900000002001d000000060120021000000002011000290000000202000367000000000312034f000000000303043b000b00000003001d000004000030009c000000530000213d0000002001100039000000000112034f000000000101043b000a00000001001d000003e10010009c000000530000213d0000000b01000029000000a00110021000000410011001970000000a011001af000800000001001d000000000010043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b000000000301041a000000000003004b000008750000613d0000000401000039000000000201041a000000000002004b000008830000613d000000010130008a000000000023004b0000084a0000613d000000000012004b00000d890000a13d000004110130009a000004110220009a000000000202041a000000000021041b000000000020043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c70000801002000039000700000003001d0f720f6d0000040f0000000100200190000000530000613d000000000101043b0000000702000029000000000021041b0000000401000039000000000301041a000000000003004b000008890000613d000000010130008a000004110230009a000000000002041b0000000402000039000000000012041b0000000801000029000000000010043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000000101043b000000000001041b000000400100043d0000000a020000290000000000210435000003de0010009c000003de0100804100000040011002100000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f0000040e011001c70000800d02000039000000020300003900000413040000410000000b050000290f720f680000040f0000000100200190000000530000613d00000009020000290000000102200039000000030020006c000008040000413d000003760000013d000000400100043d00000024021000390000000a0300002900000000003204350000041402000041000000000021043500000004021000390000000b030000290000000000320435000003de0010009c000003de01008041000000400110021000000415011001c700000f74000104300000041201000041000000000010043f0000001101000039000000040010043f000004030100004100000f74000104300000041201000041000000000010043f0000003101000039000000040010043f000004030100004100000f74000104300000000009050019000000000a7600490000040400a0009c000000530000213d0000004000a0008c000000530000413d000000400a00043d0000040d00a0009c000004f90000213d000000400ba000390000004000b0043f000000000b71034f000000000b0b043b000003e100b0009c000000530000213d0000002009900039000000000bba0436000000200c700039000000000cc1034f000000000c0c043b0000000000cb04350000000000a904350000004007700039000000000087004b000008900000413d000001430000013d00000000080400190000000009560049000004040090009c000000530000213d000000400090008c000000530000413d000000400900043d0000040d0090009c000004f90000213d000000400a9000390000004000a0043f000000000a51034f000000000a0a043b000003e100a0009c000000530000213d0000002008800039000000000aa90436000000200b500039000000000bb1034f000000000b0b043b0000000000ba043500000000009804350000004005500039000000000075004b000008aa0000413d000002650000013d00000000010004140000000a0110006c000008ca0000813d0000043b01000041000000000010043f000004200100004100000f740001043000000006021002700000000001210049000000080010006c000008d70000a13d0000000001000414000100000001001d0000000901000029000000040010008c000009a40000c13d000800010000003d00000003010003670000000102000031000009ba0000013d0000043801000041000000000010043f000004200100004100000f740001043000000423010000410000000b0600002900000000001604350000000a0100002900000000001304350000002401600039000000400300003900000000003104350000004401600039000000800300043d000000a0040000390000000000410435000000e404600039000000005303043400000000003404350000010404600039000000000003004b000008f50000613d000000000600001900000000074600190000000008650019000000000808043300000000008704350000002006600039000000000036004b000008ee0000413d000000000534001900000000000504350000001f033000390000044003300197000000000334001900000000041300490000000b050000290000006405500039000000a00600043d000000000045043500000000540604340000000003430436000000000004004b0000090b0000613d000000000600001900000000073600190000000008650019000000000808043300000000008704350000002006600039000000000046004b000009040000413d000000000543001900000000000504350000001f044000390000044004400197000000000343001900000000051300490000000b040000290000008406400039000000c00400043d000000000056043500000000050404330000000003530436000000000005004b000009250000613d0000000006000019000000200440003900000000070404330000000087070434000003e10770019700000000077304360000000008080433000000000087043500000040033000390000000106600039000000000056004b0000091a0000413d000000e00400043d000003e1044001970000000b06000029000000a40560003900000000004504350000000001130049000000c404600039000001000500043d000000000014043500000000540504340000000001430436000000000004004b0000093a0000613d000000000300001900000000061300190000000007350019000000000707043300000000007604350000002003300039000000000043004b000009330000413d000000000341001900000000000304350000000003000414000000040020008c00000a350000c13d0000000103000031000000200030008c0000002004000039000000000403401900000a670000013d0000000a03000029000003de0030009c000003de030080410000004003300210000003de0010009c000003de01008041000000c001100210000000000131019f00000420011001c70f720f6d0000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a057000290000095d0000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000009590000c13d000000000006004b0000096a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a7c0000613d0000001f01400039000000600210018f0000000a01200029000000000021004b00000000020000390000000102004039000004000010009c000004f90000213d0000000100200190000004f90000c13d000000400010043f000000200030008c000000530000413d0000000a020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000530000c13d000000000002004b00000a940000c13d0000000b010000290000040001100197000600000001001d000000000010043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d000000400200043d000b00000002001d000000000101043b000000000101041a000703e10010019c00000a960000c13d0000042e010000410000000b030000290000000000130435000000040130003900000006020000290000000000210435000003de0030009c000003de03008041000000400130021000000403011001c700000f74000104300000000401000029000003de0010009c000003de01008041000000400110021000000006020000290000000002020433000003de0020009c000003de020080410000006002200210000000000112019f0000000802000029000003de0020009c000003de02008041000000c002200210000000000121019f00000009020000290f720f680000040f000800000002001d00030000000103550000006002100270000103de0020019d000003de02200197000000840020008c00000084020080390000000003000414000900000003001d000000020300002900000000002304350000001f0320018f000000e0042001900000000b02400029000009ca0000613d000000000501034f0000000b06000029000000005705043c0000000006760436000000000026004b000009c60000c13d000000000003004b000009d70000613d000000000141034f0000000303300210000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f000000000012043500000007010000290000000201100367000000000101043b000a00000001001d000004000010009c000000530000213d0000000401000029000003de0010009c000003de01008041000000400110021000000006020000290000000002020433000003de0020009c000003de020080410000006002200210000000000112019f0000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f00000408011001c700008010020000390f720f6d0000040f0000000100200190000000530000613d00000003020000290000000202200367000000000202043b000000000101043b000000400300043d0000006004300039000000000014043500000040013000390000000504000029000000000041043500000020013000390000000a0400002900000000004104350000000000230435000003de0030009c000003de0300804100000040013002100000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f00000439011001c70000800d0200003900000001030000390000043a040000410f720f680000040f0000000100200190000000530000613d000000400100043d0000002002100039000000600300003900000000003204350000000802000029000000010220018f000000000021043500000002020000290000000002020433000000600310003900000000002304350000008003100039000000000002004b00000a240000613d000000000400001900000000053400190000000b06400029000000000606043300000000006504350000002004400039000000000024004b00000a1d0000413d0000000003320019000000000003043500000009040000290000000103400069000000400410003900000000003404350000001f0220003900000440022001970000008002200039000003de0020009c000003de020080410000006002200210000003de0010009c000003de010080410000004001100210000000000112019f00000f730001042e0000001f0440003900000440044001970000000b0500002900000000045400490000000001140019000003de0010009c000003de010080410000006001100210000003de0050009c000003de0400004100000000040540190000004004400210000000000141019f000003de0030009c000003de03008041000000c003300210000000000131019f0f720f6d0000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000a560000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000a520000c13d000000000006004b00000a630000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a880000613d0000001f01400039000000600210018f0000000b01200029000000000021004b00000000020000390000000102004039000004000010009c000004f90000213d0000000100200190000004f90000c13d000000400010043f000000200030008c000000530000413d0000000b0200002900000000020204330000000000210435000003de0010009c000003de01008041000000400110021000000418011001c700000f730001042e0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a830000c13d000006460000013d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a8f0000c13d000006460000013d00000421020000410000066e0000013d000000e00100043d000003e10010019800000b080000c13d0000000201000039000000000101041a000003e101100197000000e00010043f0000000b05000029000000240150003900000040020000390000000000210435000004230100004100000000001504350000000401500039000000060200002900000000002104350000004401500039000000800200043d000000a0030000390000000000310435000000e403500039000000004202043400000000002304350000010403500039000000000002004b00000ab80000613d000000000500001900000000063500190000000007540019000000000707043300000000007604350000002005500039000000000025004b00000ab10000413d000000000423001900000000000404350000001f022000390000044002200197000000000223001900000000031200490000000b040000290000006404400039000000a00500043d000000000034043500000000430504340000000002320436000000000003004b00000ace0000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000035004b00000ac70000413d000000000432001900000000000404350000001f033000390000044003300197000000000232001900000000041200490000000b030000290000008405300039000000c00300043d000000000045043500000000040304330000000002420436000000000004004b00000ae80000613d0000000005000019000000200330003900000000060304330000000076060434000003e10660019700000000066204360000000007070433000000000076043500000040022000390000000105500039000000000045004b00000add0000413d000000e00300043d000003e1033001970000000b05000029000000a40450003900000000003404350000000001120049000000c403500039000001000400043d000000000013043500000000430404340000000001320436000000000003004b00000afd0000613d000000000200001900000000051200190000000006240019000000000606043300000000006504350000002002200039000000000032004b00000af60000413d0000000002310019000000000002043500000000020004140000000704000029000000040040008c00000b760000c13d0000000103000031000000200030008c0000002004000039000000000403401900000ba90000013d0000000001000416000000000001004b00000bbe0000c13d0000000b05000029000000240150003900000040020000390000000000210435000004230100004100000000001504350000000401500039000000060200002900000000002104350000004401500039000000800200043d000000a0030000390000000000310435000000e403500039000000004202043400000000002304350000010403500039000000000002004b00000b260000613d000000000500001900000000063500190000000007540019000000000707043300000000007604350000002005500039000000000025004b00000b1f0000413d000000000423001900000000000404350000001f022000390000044002200197000000000223001900000000031200490000000b040000290000006404400039000000a00500043d000000000034043500000000430504340000000002320436000000000003004b00000b3c0000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000035004b00000b350000413d000000000432001900000000000404350000001f033000390000044003300197000000000232001900000000041200490000000b030000290000008405300039000000c00300043d000000000045043500000000040304330000000002420436000000000004004b00000b560000613d0000000005000019000000200330003900000000060304330000000076060434000003e10660019700000000066204360000000007070433000000000076043500000040022000390000000105500039000000000045004b00000b4b0000413d000000e00300043d000003e1033001970000000b05000029000000a40450003900000000003404350000000001120049000000c403500039000001000400043d000000000013043500000000430404340000000001320436000000000003004b00000b6b0000613d000000000200001900000000051200190000000006240019000000000606043300000000006504350000002002200039000000000032004b00000b640000413d0000000002310019000000000002043500000000020004140000000704000029000000040040008c00000bc10000c13d0000000103000031000000200030008c0000002004000039000000000403401900000bf40000013d0000001f0330003900000440033001970000000b0400002900000000034300490000000001130019000003de0010009c000003de010080410000006001100210000003de0040009c000003de0300004100000000030440190000004003300210000000000131019f000003de0020009c000003de02008041000000c002200210000000000121019f00000007020000290f720f6d0000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000b980000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000b940000c13d000000000006004b00000ba50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000ccd0000613d0000001f01400039000000600210018f0000000b01200029000000000021004b00000000020000390000000102004039000004000010009c000004f90000213d0000000100200190000004f90000c13d000000400010043f000000200030008c000000530000413d0000000b0200002900000000020204330000000003000416000500000003001d000000000023004b00000ce50000813d0000042d020000410000066e0000013d00000422010000410000000b02000029000005b80000013d0000001f0330003900000440033001970000000b0400002900000000034300490000000001130019000003de0010009c000003de010080410000006001100210000003de0040009c000003de0300004100000000030440190000004003300210000000000131019f000003de0020009c000003de02008041000000c002200210000000000121019f00000007020000290f720f6d0000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000be30000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000bdf0000c13d000000000006004b00000bf00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000cd90000613d0000001f01400039000000600110018f0000000b02100029000000000012004b00000000010000390000000101004039000004000020009c000004f90000213d0000000100100190000004f90000c13d000000400020043f000000200030008c000000530000413d0000000b0100002900000000050104330000002003200039000000e00100043d000004240400004100000000004304350000004403200039000000070400002900000000004304350000000003000411000003e103300197000000240420003900000000003404350000006403200039000500000005001d000000000053043500000064030000390000000000320435000004250020009c000004f90000213d000000a003200039000000400030043f000003e1011001970f720e070000040f000000c00100043d0000000002010433000000000002004b00000d0f0000c13d0000000001000411000400000001001d000000400500043d0000002401500039000000800200003900000000002104350000042c0100004100000000001504350000000401500039000000060200002900000000002104350000008401500039000000800200043d000000a0030000390000000000310435000001240350003900000000420204340000000000230435000b00000005001d0000014403500039000000000002004b00000c3b0000613d000000000500001900000000063500190000000007540019000000000707043300000000007604350000002005500039000000000025004b00000c340000413d000000000423001900000000000404350000001f022000390000044002200197000000000223001900000000031200490000000b04000029000000a404400039000000a00500043d000000000034043500000000430504340000000002320436000000000003004b00000c510000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000035004b00000c4a0000413d000000000432001900000000000404350000001f033000390000044003300197000000000232001900000000041200490000000b03000029000000c405300039000000c00300043d000000000045043500000000040304330000000002420436000000000004004b00000c6b0000613d0000000005000019000000200330003900000000060304330000000076060434000003e10660019700000000066204360000000007070433000000000076043500000040022000390000000105500039000000000045004b00000c600000413d000000e00300043d000003e1033001970000000b05000029000000e404500039000000000034043500000000011200490000010403500039000001000400043d000000000013043500000000430404340000000001320436000000000003004b00000c800000613d000000000200001900000000051200190000000006240019000000000606043300000000006504350000002002200039000000000032004b00000c790000413d000000000231001900000000000204350000000402000029000003e1022001970000000b050000290000006404500039000000000024043500000044025000390000000504000029000000000042043500000000020004140000000704000029000000040040008c0000093f0000613d0000001f0330003900000440033001970000000b0400002900000000034300490000000001130019000003de0010009c000003de010080410000006001100210000003de0040009c000003de0300004100000000030440190000004003300210000000000131019f000003de0020009c000003de02008041000000c002200210000000000112019f00000007020000290f720f680000040f0000006003100270000003de03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000cb00000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000cac0000c13d000000000006004b00000cbd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a670000c13d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cc80000c13d000006460000013d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cd40000c13d000006460000013d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ce00000c13d000006460000013d000000e00100043d00000426020000410000000000200443000003e101100197000b00000001001d00000004001004430000000001000414000003de0010009c000003de01008041000000c00110021000000427011001c700008002020000390f720f6d0000040f000000010020019000000d0e0000613d000000000101043b000000000001004b000000530000613d000000400200043d0000042801000041000a00000002001d0000000001120436000900000001001d00000000010004140000000b02000029000000040020008c00000d9a0000613d0000000a02000029000003de0020009c000003de020080410000004002200210000003de0010009c000003de01008041000000c001100210000000000121019f0000000002000416000000000002004b00000d8f0000c13d00000420011001c70000000b0200002900000d940000013d000000000001042f0000000002000411000400000002001d000a00000000001d0000000a020000290000000502200210000900200020003d000000090110002900000000010104330000000001010433000000400400043d0000042b020000410000000000240435000000040240003900000006030000290000000000320435000003e102100197000b00000004001d0000002401400039000800000002001d000000000021043500000000010004140000000702000029000000040020008c00000d2c0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000d560000013d0000000b02000029000003de0020009c000003de020080410000004002200210000003de0010009c000003de01008041000000c001100210000000000121019f00000415011001c700000007020000290f720f6d0000040f0000006003100270000003de03300197000000200030008c0000002004000039000000000403401900000020064001900000000b0560002900000d450000613d000000000701034f0000000b08000029000000007907043c0000000008980436000000000058004b00000d410000c13d0000001f0740019000000d520000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000db00000613d0000001f01400039000000600110018f0000000b02100029000000000012004b00000000010000390000000101004039000004000020009c000004f90000213d0000000100100190000004f90000c13d000000400020043f000000200030008c000000530000413d0000000b010000290000000001010433000003e10010009c000000530000213d000000c00300043d00000000040304330000000a0040006c00000d890000a13d000000090330002900000000030304330000002003300039000000000303043300000020042000390000042405000041000000000054043500000064042000390000000000340435000000440320003900000000001304350000000001000411000003e1011001970000002403200039000000000013043500000064010000390000000000120435000004250020009c000004f90000213d000000a001200039000000400010043f00000008010000290f720e070000040f0000000a03000029000a00010030003d000000c00100043d00000000020104330000000a0020006b00000d120000413d00000c1f0000013d0000041201000041000000000010043f0000003201000039000000040010043f000004030100004100000f740001043000000429011001c7000080090200003900000000030004160000000b0400002900000000050000190f720f680000040f00030000000103550000006003100270000103de0030019d000000010020019000000dbc0000613d0000000a01000029000004000010009c000004f90000213d0000000a04000029000000400040043f000000e00100043d0000042a0200004100000009030000290000000000230435000000440240003900000000030004160000000000320435000000240240003900000007030000290000000000320435000000440200003900000000002404350000041a0040009c000004f90000213d0000000a02000029000000800320003900000c160000013d0000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000db70000c13d000006460000013d000003de033001970000001f0530018f000003e006300198000000400200043d0000000004620019000006460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dc40000c13d000006460000013d00000000430104340000000001320436000000000003004b00000dd50000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b00000dce0000413d000000000231001900000000000204350000001f0230003900000440022001970000000001210019000000000001042d0000040001100197000000000010043f0000000301000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f000000010020019000000dee0000613d000000000101043b000000000101041a000003e1001001980000000001000039000000010100c039000000000001042d000000000100001900000f7400010430000000000100041a000003e1011001970000000002000411000000000012004b00000df60000c13d000000000001042d000000400100043d000000440210003900000431030000410000000000320435000000240210003900000016030000390000000000320435000003e5020000410000000000210435000000040210003900000020030000390000000000320435000003de0010009c000003de010080410000004001100210000003e6011001c700000f74000104300005000000000002000000400500043d000004410050009c00000eca0000813d000003e1061001970000004001500039000000400010043f000000200100003900000000041504360000044201000041000000000014043500000000230204340000000001000414000000040060008c00000e410000c13d000000010100003200000e7d0000613d000004000010009c00000eca0000213d0000001f0310003900000440033001970000003f033000390000044003300197000000400a00043d00000000033a00190000000000a3004b00000000040000390000000104004039000004000030009c00000eca0000213d000000010040019000000eca0000c13d000000400030043f00000000051a043600000440021001980000001f0310018f0000000001250019000000030400036700000e330000613d000000000604034f000000006706043c0000000005750436000000000015004b00000e2f0000c13d000000000003004b00000e7e0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f000000000021043500000e7e0000013d000100000005001d000300000004001d000003de0030009c000003de030080410000006003300210000003de0020009c000003de020080410000004002200210000000000223019f000003de0010009c000003de01008041000000c001100210000000000112019f000200000006001d00000000020600190f720f680000040f00030000000103550000006003100270000103de0030019d000003de0430019800000e950000613d0000001f03400039000003df033001970000003f033000390000044303300197000000400a00043d00000000033a00190000000000a3004b00000000050000390000000105004039000004000030009c00000eca0000213d000000010050019000000eca0000c13d000000400030043f0000001f0540018f00000000034a0436000003e006400198000000000463001900000e6f0000613d000000000701034f0000000008030019000000007907043c0000000008980436000000000048004b00000e6b0000c13d000000000005004b00000e970000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000e970000013d000000600a0000390000000002000415000000050220008a000000050220021000000000010a0433000000000001004b00000e9f0000c13d00030000000a001d00000426010000410000000000100443000000040100003900000004001004430000000001000414000003de0010009c000003de01008041000000c00110021000000427011001c700008002020000390f720f6d0000040f000000010020019000000f0b0000613d0000000002000415000000050220008a00000eb20000013d000000600a000039000000800300003900000000010a0433000000010020019000000ee60000613d0000000002000415000000040220008a0000000502200210000000000001004b00000ea20000613d000000050220027000000000020a001f00000ebc0000013d00030000000a001d00000426010000410000000000100443000000020100002900000004001004430000000001000414000003de0010009c000003de01008041000000c00110021000000427011001c700008002020000390f720f6d0000040f000000010020019000000f0b0000613d0000000002000415000000040220008a0000000502200210000000000101043b000000000001004b000000030a00002900000f0c0000613d00000000010a0433000000050220027000000000020a001f000000000001004b00000ec90000613d000004040010009c00000ed00000213d0000001f0010008c00000ed00000a13d0000002001a000390000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000ed00000c13d000000000001004b00000ed20000613d000000000001042d0000041201000041000000000010043f0000004101000039000000040010043f000004030100004100000f7400010430000000000100001900000f7400010430000000400100043d00000064021000390000044403000041000000000032043500000044021000390000044503000041000000000032043500000024021000390000002a030000390000000000320435000003e5020000410000000000210435000000040210003900000020030000390000000000320435000003de0010009c000003de01008041000000400110021000000446011001c700000f7400010430000000000001004b00000f1d0000c13d000000400100043d000003e502000041000000000021043500000004021000390000002003000039000000000032043500000001020000290000000002020433000000240310003900000000002304350000004403100039000000000002004b000000030700002900000efe0000613d000000000400001900000000053400190000000006740019000000000606043300000000006504350000002004400039000000000024004b00000ef70000413d0000001f042000390000044004400197000000000223001900000000000204350000004402400039000003de0020009c000003de020080410000006002200210000003de0010009c000003de010080410000004001100210000000000112019f00000f7400010430000000000001042f000000400100043d00000044021000390000044703000041000000000032043500000024021000390000001d030000390000000000320435000003e5020000410000000000210435000000040210003900000020030000390000000000320435000003de0010009c000003de010080410000004001100210000003e6011001c700000f7400010430000003de0030009c000003de030080410000004002300210000003de0010009c000003de010080410000006001100210000000000121019f00000f7400010430000000000010043f0000000501000039000000200010043f0000000001000414000003de0010009c000003de01008041000000c00110021000000401011001c700008010020000390f720f6d0000040f000000010020019000000f370000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d000000000100001900000f7400010430000000000001042f000003de0010009c000003de010080410000004001100210000003de0020009c000003de020080410000006002200210000000000112019f0000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f00000408011001c700008010020000390f720f6d0000040f000000010020019000000f4d0000613d000000000101043b000000000001042d000000000100001900000f740001043000000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00000f520000413d000003de0030009c000003de0300804100000060013002100000000002000414000003de0020009c000003de02008041000000c002200210000000000112019f00000448011001c700000000020500190f720f6d0000040f000000010020019000000f670000613d000000000101043b000000000001042d000000000001042f00000f6b002104210000000102000039000000000001042d0000000002000019000000000001042d00000f70002104230000000102000039000000000001042d0000000002000019000000000001042d00000f720000043200000f730001042e00000f740001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000020000000000000000000000000000008000000100000000000000000043616e6e6f7420736574206f776e657220746f207a65726f000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000a8d87a3a00000000000000000000000000000000000000000000000000000000e861e90600000000000000000000000000000000000000000000000000000000e861e90700000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fbca3b7400000000000000000000000000000000000000000000000000000000a8d87a3b00000000000000000000000000000000000000000000000000000000da5fcac800000000000000000000000000000000000000000000000000000000a40e69c600000000000000000000000000000000000000000000000000000000a40e69c700000000000000000000000000000000000000000000000000000000a48a9058000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000096f4e9f90000000000000000000000000000000000000000000000000000000052cb60c900000000000000000000000000000000000000000000000000000000787350e200000000000000000000000000000000000000000000000000000000787350e30000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000083826b2b0000000000000000000000000000000000000000000000000000000052cb60ca000000000000000000000000000000000000000000000000000000005f3e849f000000000000000000000000000000000000000000000000000000003cf97982000000000000000000000000000000000000000000000000000000003cf97983000000000000000000000000000000000000000000000000000000005246492f00000000000000000000000000000000000000000000000000000000181f5a770000000000000000000000000000000000000000000000000000000020487ded000000000000000000000000000000000000000000000000ffffffffffffffff0200000000000000000000000000000000000040000000000000000000000000fbca3b740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffdf0200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c6600000000000000000000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf02000000000000000000000000000000000000200000000000000000000000001f7d0ec248b80e5c0dde0ee531c4fc8fdb6ce9a2b3d90f560c74acd6a7202f2300000000ffffffffffffffff000000000000000000000000000000000000000075ca53043ea007e5c65182cbb028f60d7179ff4b55739a3949b401801c942e664e487b7100000000000000000000000000000000000000000000000000000000a823809efda3ba66c873364eec120fa0923d9fabda73bc97dd5663341e2d9bcb4964779000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004400000000000000000000000075ca53043ea007e5c65182cbb028f60d7179ff4b55739a3949b401801c942e65a4bdf64ebdf3316320601a081916a75aa144bcef6c4beeb0e9fb1982cacc6b9400000000000000000000000000000000000000200000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f00000000000000000000000000000000000000000000003fffffffffffffffe0000000000000000000000000000000000000000000000000fffffffffffffedf397796f700000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000004000000000000000000000000c1483715000000000000000000000000000000000000000000000000000000001841b4e10000000000000000000000000000000000000000000000000000000020487ded0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000d0e30db0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000004000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000048a98aa400000000000000000000000000000000000000000000000000000000df0aa9e90000000000000000000000000000000000000000000000000000000007da6ee600000000000000000000000000000000000000000000000000000000ae236d9c000000000000000000000000000000000000000000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f6e6c792063616c6c61626c65206279206f776e657200000000000000000000e417b80b0000000000000000000000000000000000000000000000000000000026a78f8f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000000000000000000000000000000000000000000400000080000000000000000085572ffb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f37c3be290000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000800000000000000000000000009b877de93ea9895756e337442c657f95a34fc68e7eb988bdfa693d5be83016b6afa32a2c000000000000000000000000000000000000000000000000000000000c3b563c00000000000000000000000000000000000000000000000000000000d2316ede00000000000000000000000000000000000000000000000000000000526f7574657220312e322e3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffc05361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656400000000000000000000000000000000000000000000000000000003ffffffe06f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e0000000000000000000000000000000000000084000000000000000000000000416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a9eab750d6e298d6ff1780825c0ff7a2d04cbacf6a3343715087eb6753a119f9") + func (_Router *Router) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _Router.abi.Events["MessageExecuted"].ID: @@ -1352,6 +1373,82 @@ func (_Router *Router) Address() common.Address { return _Router.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncRouter(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *Router, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(RouterZkBin) + fmt.Println("deploying") + RouterAbi, err := RouterMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := RouterAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := RouterMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &Router{address: address, abi: *parsed, RouterCaller: RouterCaller{contract: contractBind}, RouterTransactor: RouterTransactor{contract: contractBind}, RouterFilterer: RouterFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type RouterInterface interface { MAXRETBYTES(opts *bind.CallOpts) (uint16, error) diff --git a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go index 274f72bae3..2f4e4c2475 100644 --- a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go +++ b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go @@ -4,6 +4,7 @@ package self_funded_ping_pong import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -52,7 +57,21 @@ var SelfFundedPingPongABI = SelfFundedPingPongMetaData.ABI var SelfFundedPingPongBin = SelfFundedPingPongMetaData.Bin -func DeploySelfFundedPingPong(auth *bind.TransactOpts, backend bind.ContractBackend, router common.Address, feeToken common.Address, roundTripsBeforeFunding uint8) (common.Address, *types.Transaction, *SelfFundedPingPong, error) { +func DeploySelfFundedPingPong(auth *bind.TransactOpts, backend bind.ContractBackend, router common.Address, feeToken common.Address, roundTripsBeforeFunding uint8) (common.Address, *CustomTransaction, *SelfFundedPingPong, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncSelfFundedPingPong(auth, backend, router, feeToken, roundTripsBeforeFunding) + } + parsed, err := SelfFundedPingPongMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -65,7 +84,7 @@ func DeploySelfFundedPingPong(auth *bind.TransactOpts, backend bind.ContractBack if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &SelfFundedPingPong{address: address, abi: *parsed, SelfFundedPingPongCaller: SelfFundedPingPongCaller{contract: contract}, SelfFundedPingPongTransactor: SelfFundedPingPongTransactor{contract: contract}, SelfFundedPingPongFilterer: SelfFundedPingPongFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &SelfFundedPingPong{address: address, abi: *parsed, SelfFundedPingPongCaller: SelfFundedPingPongCaller{contract: contract}, SelfFundedPingPongTransactor: SelfFundedPingPongTransactor{contract: contract}, SelfFundedPingPongFilterer: SelfFundedPingPongFilterer{contract: contract}}, nil } type SelfFundedPingPong struct { @@ -1392,6 +1411,8 @@ func (_SelfFundedPingPong *SelfFundedPingPongFilterer) ParsePong(log types.Log) return event, nil } +var SelfFundedPingPongZkBin string = ("0x0003000000000002000500000000000200020000000103550000006003100270000001ed0030019d000001ed0330019700000001002001900000001f0000c13d0000008002000039000000400020043f000000040030008c000003de0000413d000000000201043b000000e002200270000001fe0020009c000000560000a13d000001ff0020009c0000009f0000a13d000002000020009c000000b90000213d000002040020009c000001760000613d000002050020009c000001aa0000613d000002060020009c000003de0000c13d0000000001000416000000000001004b000003de0000c13d0000000301000039000003160000013d000000a004000039000000400040043f0000000002000416000000000002004b000003de0000c13d0000001f02300039000001ee02200197000000a002200039000000400020043f0000001f0530018f000001ef06300198000000a002600039000000310000613d000000000701034f000000007807043c0000000004840436000000000024004b0000002d0000c13d000000000005004b0000003e0000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600030008c000003de0000413d000000a00100043d000001f00010009c000003de0000213d000000c00200043d000001f00020009c000003de0000213d000000e00300043d000300000003001d000000ff0030008c000003de0000213d000001f0031001980000031b0000c13d000000400100043d000001fc02000041000000000021043500000004021000390000000000020435000001ed0010009c000001ed010080410000004001100210000001fd011001c7000007b3000104300000020d0020009c000000ac0000213d000002140020009c000000ed0000a13d000002150020009c000001460000613d000002160020009c000001b40000613d000002170020009c000003de0000c13d0000000001000416000000000001004b000003de0000c13d000000000100041a000001f0011001970000000002000411000000000012004b000003300000c13d0000000202000039000000000102041a000001f201100197000000000012041b0000000103000039000000800030043f0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021f011001c70000800d020000390000022d0400004107b107a70000040f0000000100200190000003de0000613d0000000301000039000000000101041a0000021e01100197000002380010009c000004610000c13d0000000101000039000000000101041a000000400300043d00000239020000410000000000230435000000a001100270000001f501100197000300000003001d00000004023000390000000000120435000002250100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001ed0010009c000001ed01008041000000c00110021000000227011001c7000080050200003907b107ac0000040f0000000100200190000005240000613d000000000201043b0000000001000414000001f002200197000000040020008c000003ef0000c13d0000000103000031000000200030008c00000020040000390000000004034019000004180000013d000002070020009c000000d90000a13d000002080020009c0000012d0000613d000002090020009c000001380000613d0000020a0020009c000003de0000c13d0000000001000416000000000001004b000003de0000c13d0000000201000039000001310000013d0000020e0020009c000001060000a13d0000020f0020009c0000015a0000613d000002100020009c000001c90000613d000002110020009c000003de0000c13d0000000001000416000000000001004b000003de0000c13d000000000100041a000003170000013d000002010020009c000001960000613d000002020020009c000002dd0000613d000002030020009c000003de0000c13d000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000601043b000001f00060009c000003de0000213d000000000100041a000001f0011001970000000005000411000000000015004b000003300000c13d000000000056004b000003ce0000c13d000001f901000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f0000021c01000041000000c40010043f0000021d01000041000007b3000104300000020b0020009c000001a00000613d0000020c0020009c000003de0000c13d000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b000300000001001d000001f00010009c000003de0000213d07b107760000040f0000000201000039000000000201041a000001f1022001970000000303000029000001920000013d000002180020009c000003010000613d000002190020009c000003de0000c13d000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000201043b000000000002004b0000000001000039000000010100c039000300000002001d000000000012004b000003de0000c13d07b107760000040f000000030000006b0000000001000019000002350100c0410000000202000039000000000302041a000001f203300197000001c50000013d000002120020009c000003120000613d000002130020009c000003de0000c13d000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b000000000001004b0000000002000039000000010200c039000000000021004b000003de0000c13d000000000200041a000001f0022001970000000003000411000000000023004b000003300000c13d0000000302000039000000000302041a000001f203300197000000000001004b0000000004000019000002350400c041000000000343019f000000000032041b000000800010043f0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021f011001c70000800d0200003900000001030000390000023604000041000002fc0000013d0000000001000416000000000001004b000003de0000c13d0000000301000039000000000101041a00000224001001980000000001000039000000010100c039000000800010043f0000022101000041000007b20001042e0000000001000416000000000001004b000003de0000c13d0000000001000412000500000001001d000400000000003d000080050100003900000044030000390000000004000415000000050440008a0000000504400210000002250200004107b1078e0000040f000003170000013d0000000001000416000000000001004b000003de0000c13d000000c001000039000000400010043f0000001801000039000000800010043f0000023f01000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e00200003907b106800000040f000000c00110008a000001ed0010009c000001ed01008041000000600110021000000240011001c7000007b20001042e0000000001000416000000000001004b000003de0000c13d0000000101000039000000000201041a000001f0032001970000000006000411000000000036004b000003550000c13d000000000300041a000001f104300197000000000464019f000000000040041b000001f102200197000000000021041b0000000001000414000001f005300197000001ed0010009c000001ed01008041000000c0011002100000021a011001c70000800d020000390000000303000039000002340400004107b107a70000040f0000000100200190000002ff0000c13d000003de0000013d000000440030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000402100370000000000202043b000300000002001d000001f50020009c000003de0000213d0000002401100370000000000101043b000200000001001d000001f00010009c000003de0000213d07b107760000040f0000000301000029000000a00110021000000222011001970000000102000039000000000302041a0000022303300197000000000113019f000000000012041b0000000201000039000000000201041a000001f1022001970000000203000029000000000232019f000000000021041b0000000001000019000007b20001042e0000000001000416000000000001004b000003de0000c13d0000000301000039000000000101041a000000a801100270000000ff0110018f000000800010043f0000022101000041000007b20001042e000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b07b106920000040f0000000001000019000007b20001042e0000000001000416000000000001004b000003de0000c13d0000000101000039000000000101041a000000a001100270000001f501100197000000800010043f0000022101000041000007b20001042e000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b000300000001001d000001f50010009c000003de0000213d07b107760000040f0000000301000029000000a00110021000000222011001970000000102000039000000000302041a0000022303300197000000000113019f000000000012041b0000000001000019000007b20001042e000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b000300000001001d000001f50010009c000003de0000213d000000030130006a000002260010009c000003de0000213d000000a40010008c000003de0000413d000002250100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001ed0010009c000001ed01008041000000c00110021000000227011001c7000080050200003907b107ac0000040f0000000100200190000005240000613d000000400200043d000000000101043b000001f0011001970000000003000411000000000013004b000003e00000c13d000002280020009c0000048b0000213d000000a001200039000000400010043f000000030500002900000004035000390000000201000367000000000331034f000000000303043b00000000043204360000002403500039000000000531034f000000000505043b000001f50050009c000003de0000213d00000000005404350000002005300039000000000351034f000000000303043b000001f50030009c000003de0000213d00000003093000290000002306900039000002290760019700000000030000310000022904300197000000000847013f000000000047004b00000000070000190000022907004041000000000036004b00000000060000190000022906008041000002290080009c000000000706c019000000000007004b000003de0000c13d000000040a9000390000000006a1034f000000000606043b000001f50060009c0000048b0000213d0000001f0760003900000244077001970000003f077000390000024408700197000000400700043d0000000008870019000000000078004b000000000b000039000000010b004039000001f50080009c0000048b0000213d0000000100b001900000048b0000c13d000000400080043f000000000867043600000000096900190000002409900039000000000039004b000003de0000213d0000002009a00039000000000a91034f000002440b6001980000001f0c60018f0000000009b80019000002350000613d000000000d0a034f000000000e08001900000000df0d043c000000000efe043600000000009e004b000002310000c13d00000000000c004b000002420000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a9043500000000066800190000000000060435000000400620003900000000007604350000002006500039000000000561034f000000000505043b000001f50050009c000003de0000213d00000003095000290000002305900039000000000035004b000000000700001900000229070080410000022905500197000000000845013f000000000045004b00000000050000190000022905004041000002290080009c000000000507c019000000000005004b000003de0000c13d000000040a9000390000000005a1034f000000000505043b000001f50050009c0000048b0000213d0000001f0750003900000244077001970000003f077000390000024408700197000000400700043d0000000008870019000000000078004b000000000b000039000000010b004039000001f50080009c0000048b0000213d0000000100b001900000048b0000c13d000000400080043f000000000857043600000000095900190000002409900039000000000039004b000003de0000213d0000002009a00039000000000a91034f000002440b5001980000001f0c50018f0000000009b800190000027d0000613d000000000d0a034f000000000e08001900000000df0d043c000000000efe043600000000009e004b000002790000c13d00000000000c004b0000028a0000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a9043500000000055800190000000000050435000000600520003900000000007504350000002006600039000000000661034f000000000606043b000001f50060009c000003de0000213d00000003066000290000002307600039000000000037004b000000000800001900000229080080410000022907700197000000000947013f000000000047004b00000000040000190000022904004041000002290090009c000000000408c019000000000004004b000003de0000c13d0000000404600039000000000441034f000000000804043b000001f50080009c0000048b0000213d00000005048002100000003f044000390000022a07400197000000400400043d0000000007740019000000000047004b00000000090000390000000109004039000001f50070009c0000048b0000213d00000001009001900000048b0000c13d000000400070043f0000000000840435000000240660003900000006078002100000000007670019000000000037004b000003de0000213d000000000008004b0000057e0000c13d0000008001200039000000000041043500000000010504330000000012010434000002260020009c000003de0000213d000000200020008c000003de0000413d0000000202000039000000000202041a0000022400200198000002ff0000c13d0000000001010433000000010010003a000003e90000413d0000000102100039000000400100043d0000000000210435000001ed0010009c000001ed010080410000004001100210000300000002001d0000000100200190000005980000c13d0000000002000414000001ed0020009c000001ed02008041000000c002200210000000000112019f0000022c011001c70000800d0200003900000001030000390000022e04000041000005a10000013d000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b000000ff0010008c000003de0000213d000000000200041a000001f0022001970000000003000411000000000023004b000003300000c13d000000ff0210018f000000a8011002100000021e011001970000000303000039000000000403041a000001f704400197000000000114019f000000000013041b000000800020043f0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021f011001c70000800d020000390000000103000039000002200400004107b107a70000040f0000000100200190000003de0000613d0000000001000019000007b20001042e000000240030008c000003de0000413d0000000002000416000000000002004b000003de0000c13d0000000401100370000000000101043b0000024100100198000003de0000c13d000002420010009c00000000020000390000000102006039000002430010009c00000001022061bf000000800020043f0000022101000041000007b20001042e0000000001000416000000000001004b000003de0000c13d0000000201000039000000000101041a000001f001100197000000800010043f0000022101000041000007b20001042e000000800010043f000000400b00043d0000002401b000390000000404b000390000000005000411000000000005004b0000033a0000c13d000001f90200004100000000002b043500000020020000390000000000240435000000180200003900000000002104350000004401b00039000001fa020000410000000000210435000001ed00b0009c000001ed0b0080410000004001b00210000001fb011001c7000007b300010430000001f901000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000023701000041000000c40010043f0000021d01000041000007b300010430000001f002200197000000000600041a000001f106600197000000000556019f000000000050041b0000000205000039000000000605041a000001f206600197000000000065041b0000000306000039000000000506041a000001f105500197000000000525019f000000000056041b000001f30500004100000000005b04350000000000340435000000010300008a00000000003104350000000001000414000000040020008c0000035f0000c13d0000000103000031000000200030008c000000200400003900000000040340190000038a0000013d000001f901000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000023301000041000000c40010043f0000021d01000041000007b300010430000001ed00b0009c000001ed0300004100000000030b40190000004003300210000001ed0010009c000001ed01008041000000c001100210000000000131019f000001f4011001c700020000000b001d07b107a70000040f000000020b0000290000006003100270000001ed03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000037a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000003760000c13d000000000006004b000003870000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000003b00000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000001f50010009c0000048b0000213d00000001002001900000048b0000c13d000000400010043f000000200030008c000003de0000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000003de0000c13d00000003010000290000008000100190000003e90000c13d000000a901100210000001f6011001970000000303000039000000000203041a000001f702200197000000000112019f000000000013041b000000800100043d000001400000044300000160001004430000002001000039000001000010044300000001010000390000012000100443000001f801000041000007b20001042e0000001f0530018f000001ef06300198000000400200043d0000000004620019000003bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000003b70000c13d000000000005004b000003c80000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000001ed0020009c000001ed020080410000004002200210000000000112019f000007b3000104300000000101000039000000000201041a000001f102200197000000000262019f000000000021041b0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021a011001c70000800d0200003900000003030000390000021b0400004107b107a70000040f0000000100200190000002ff0000c13d0000000001000019000007b300010430000001fc01000041000000000012043500000004012000390000000000310435000001ed0020009c000001ed020080410000004001200210000001fd011001c7000007b3000104300000023201000041000000000010043f0000001101000039000000040010043f000001fd01000041000007b3000104300000000303000029000001ed0030009c000001ed030080410000004003300210000001ed0010009c000001ed01008041000000c001100210000000000131019f000001fd011001c707b107ac0000040f0000006003100270000001ed03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000004080000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000004040000c13d000000000006004b000004150000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000004910000613d0000001f01400039000000600210018f0000000301200029000000000021004b00000000020000390000000102004039000001f50010009c0000048b0000213d00000001002001900000048b0000c13d000000400010043f000000200030008c000003de0000413d00000003010000290000000001010433000300000001001d000002350010009c000003de0000813d0000023a010000410000000000100443000000030100002900000004001004430000000001000414000001ed0010009c000001ed01008041000000c0011002100000023b011001c7000080020200003907b107ac0000040f0000000100200190000005240000613d000000000101043b000000000001004b000003de0000613d000000400200043d0000023c01000041000200000002001d000000000012043500000000010004140000000302000029000000040020008c000004510000613d0000000202000029000001ed0020009c000001ed020080410000004002200210000001ed0010009c000001ed01008041000000c001100210000000000121019f0000023d011001c7000000030200002907b107a70000040f0000006003100270000101ed0030019d0000000100200190000005710000613d0000000201000029000001f50010009c0000048b0000213d0000000201000029000000400010043f0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021a011001c70000800d0200003900000001030000390000023e0400004107b107a70000040f0000000100200190000003de0000613d0000000201000039000000000101041a000001f001100197000000400200043d00000020032000390000000000130435000000200100003900000000001204350000022b0020009c0000048b0000213d0000004006200039000000400060043f00000060032000390000000104000039000000000043043500000000001604350000022f0020009c0000048b0000213d0000008004200039000000400040043f000002280020009c0000048b0000213d000000a001200039000000400010043f0000000000040435000000400500043d000002280050009c0000048b0000213d0000000301000039000000000101041a000000a003500039000000400030043f000001f003100197000000600150003900000000003104350000004003500039000000000043043500000000042504360000000000640435000000400600043d000002300060009c0000049d0000a13d0000023201000041000000000010043f0000004101000039000000040010043f000001fd01000041000007b3000104300000001f0530018f000001ef06300198000000400200043d0000000004620019000003bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000004980000c13d000003bb0000013d0000002002600039000000400020043f0000000000060435000000800250003900000000006204350000000106000039000000000606041a000000400900043d00000024079000390000004008000039000000000087043500000231070000410000000000790435000000a006600270000001f5066001970000000407900039000000000067043500000000050504330000004406900039000000a0070000390000000000760435000000e40890003900000000760504340000000000680435000300000009001d0000010405900039000000000006004b000004c10000613d00000000080000190000000009580019000000000a870019000000000a0a04330000000000a904350000002008800039000000000068004b000004ba0000413d000000000765001900000000000704350000001f066000390000024406600197000000000765001900000003060000290000000005670049000000440550008a00000000040404330000006406600039000000000056043500000000650404340000000004570436000000000005004b000004d80000613d000000000700001900000000084700190000000009760019000000000909043300000000009804350000002007700039000000000057004b000004d10000413d000000000654001900000000000604350000001f055000390000024405500197000000000654001900000003070000290000000004760049000000440540008a00000000040304330000008403700039000000000053043500000000050404330000000003560436000000000005004b000004f30000613d0000000006000019000000200440003900000000070404330000000087070434000001f00770019700000000077304360000000008080433000000000087043500000040033000390000000106600039000000000056004b000004e80000413d0000000001010433000001f0011001970000000305000029000000a40450003900000000001404350000000001530049000000440110008a0000000002020433000000c404500039000000000014043500000000160204340000000005630436000000000006004b000005090000613d000000000200001900000000035200190000000004210019000000000404043300000000004304350000002002200039000000000062004b000005020000413d000200000005001d000100000006001d00000000016500190000000000010435000002250100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001ed0010009c000001ed01008041000000c00110021000000227011001c7000080050200003907b107ac0000040f0000000100200190000005240000613d000000000201043b0000000001000414000001f002200197000000040020008c000005250000c13d0000000104000031000000200040008c0000002004008039000005570000013d000000000001042f00000001030000290000001f033000390000024403300197000000030500002900000000035300490000000203300029000001ed0030009c000001ed030080410000006003300210000001ed0050009c000001ed0400004100000000040540190000004004400210000000000343019f000001ed0010009c000001ed01008041000000c001100210000000000131019f07b107a70000040f0000006003100270000001ed03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000005470000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000005430000c13d000000000006004b000005540000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000005650000613d0000001f01400039000000600210018f0000000301200029000000000021004b00000000020000390000000102004039000001f50010009c0000048b0000213d00000001002001900000048b0000c13d000000400010043f000000200040008c000002ff0000813d000003de0000013d0000001f0530018f000001ef06300198000000400200043d0000000004620019000003bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000056c0000c13d000003bb0000013d000001ed033001970000001f0530018f000001ef06300198000000400200043d0000000004620019000003bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005790000c13d000003bb0000013d00000000080400190000000009630049000002260090009c000003de0000213d000000400090008c000003de0000413d000000400900043d0000022b0090009c0000048b0000213d000000400a9000390000004000a0043f000000000a61034f000000000a0a043b000001f000a0009c000003de0000213d0000002008800039000000000aa90436000000200b600039000000000bb1034f000000000b0b043b0000000000ba043500000000009804350000004006600039000000000076004b0000057f0000413d000002bb0000013d0000000002000414000001ed0020009c000001ed02008041000000c002200210000000000112019f0000022c011001c70000800d0200003900000001030000390000022d0400004107b107a70000040f0000000100200190000003de0000613d000000030100002907b106920000040f0000000201000039000000000101041a000001f001100197000000400200043d00000020032000390000000000130435000000200100003900000000001204350000022b0020009c0000048b0000213d0000004006200039000000400060043f00000060032000390000000304000029000000000043043500000000001604350000022f0020009c0000048b0000213d0000008004200039000000400040043f000002280020009c0000048b0000213d000000a001200039000000400010043f0000000000040435000000400500043d000002280050009c0000048b0000213d0000000301000039000000000101041a000000a003500039000000400030043f000001f003100197000000600150003900000000003104350000004003500039000000000043043500000000042504360000000000640435000000400600043d000002300060009c0000048b0000213d0000002002600039000000400020043f0000000000060435000000800250003900000000006204350000000106000039000000000606041a000000400900043d00000024079000390000004008000039000000000087043500000231070000410000000000790435000000a006600270000001f5066001970000000407900039000000000067043500000000050504330000004406900039000000a0070000390000000000760435000000e40690003900000000750504340000000000560435000300000009001d0000010406900039000000000005004b000005f40000613d00000000080000190000000009680019000000000a870019000000000a0a04330000000000a904350000002008800039000000000058004b000005ed0000413d000000000756001900000000000704350000001f055000390000024405500197000000000756001900000003060000290000000005670049000000440550008a00000000040404330000006406600039000000000056043500000000650404340000000004570436000000000005004b0000060b0000613d000000000700001900000000084700190000000009760019000000000909043300000000009804350000002007700039000000000057004b000006040000413d000000000654001900000000000604350000001f055000390000024405500197000000000654001900000003070000290000000004760049000000440540008a00000000040304330000008403700039000000000053043500000000050404330000000003560436000000000005004b000006260000613d0000000006000019000000200440003900000000070404330000000087070434000001f00770019700000000077304360000000008080433000000000087043500000040033000390000000106600039000000000056004b0000061b0000413d0000000001010433000001f0011001970000000305000029000000a40450003900000000001404350000000001530049000000440110008a0000000002020433000000c404500039000000000014043500000000420204340000000001230436000000000002004b0000063c0000613d000000000300001900000000051300190000000006340019000000000606043300000000006504350000002003300039000000000023004b000006350000413d0000000003210019000000000003043500000000030004140000000004000411000000040040008c000005200000613d0000001f022000390000024402200197000000030400002900000000024200490000000001120019000001ed0010009c000001ed010080410000006001100210000001ed0040009c000001ed0200004100000000020440190000004002200210000000000121019f000001ed0030009c000001ed03008041000000c002300210000000000112019f000000000200041107b107a70000040f0000006003100270000001ed03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000006640000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000006600000c13d000000000006004b000006710000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000005570000c13d0000001f0530018f000001ef06300198000000400200043d0000000004620019000003bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000067b0000c13d000003bb0000013d00000000430104340000000001320436000000000003004b0000068c0000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000006850000413d000000000231001900000000000204350000001f0230003900000244022001970000000001210019000000000001042d00010000000000020000000302000039000000000202041a000000a802200270000000ff0220018f000000010320008a000000000013004b0000072f0000813d00000000102100d9000000010010008c0000072f0000213d0000000101000039000000000101041a000000400300043d00000239020000410000000000230435000000a001100270000001f501100197000100000003001d00000004023000390000000000120435000002250100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001ed0010009c000001ed01008041000000c00110021000000227011001c7000080050200003907b107ac0000040f0000000100200190000007320000613d000000000201043b0000000001000414000001f002200197000000040020008c000006c00000c13d0000000103000031000000200030008c00000020040000390000000004034019000000010b000029000006ea0000013d0000000103000029000001ed0030009c000001ed030080410000004003300210000001ed0010009c000001ed01008041000000c001100210000000000131019f000001fd011001c707b107ac0000040f000000010b0000290000006003100270000001ed03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000006da0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000006d60000c13d000000000006004b000006e70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000007390000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000001f50010009c000007330000213d0000000100200190000007330000c13d000000400010043f000000200030008c000007300000413d00000000020b0433000002350020009c000007300000813d0000023a010000410000000000100443000100000002001d00000004002004430000000001000414000001ed0010009c000001ed01008041000000c0011002100000023b011001c7000080020200003907b107ac0000040f0000000100200190000007320000613d000000000101043b000000000001004b0000000102000029000007300000613d000000400400043d0000023c0100004100000000001404350000000001000414000000040020008c000007210000613d000001ed0040009c000001ed0300004100000000030440190000004003300210000001ed0010009c000001ed01008041000000c001100210000000000131019f0000023d011001c7000100000004001d07b107a70000040f00000001040000290000006003100270000101ed0030019d0000000100200190000007570000613d000001f50040009c000007330000213d000000400040043f0000000001000414000001ed0010009c000001ed01008041000000c0011002100000021a011001c70000800d0200003900000001030000390000023e0400004107b107a70000040f0000000100200190000007300000613d000000000001042d0000000001000019000007b300010430000000000001042f0000023201000041000000000010043f0000004101000039000000040010043f000001fd01000041000007b3000104300000001f0530018f000001ef06300198000000400200043d0000000004620019000007440000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007400000c13d000000000005004b000007510000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000001ed0020009c000001ed020080410000004002200210000000000121019f000007b300010430000001ed033001970000001f0530018f000001ef06300198000000400200043d0000000004620019000007630000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000075f0000c13d000000000005004b000007700000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000001ed0020009c000001ed020080410000004002200210000000000112019f000007b300010430000000000100041a000001f0011001970000000002000411000000000012004b0000077c0000c13d000000000001042d000000400100043d000000440210003900000237030000410000000000320435000000240210003900000016030000390000000000320435000001f9020000410000000000210435000000040210003900000020030000390000000000320435000001ed0010009c000001ed010080410000004001100210000001fb011001c7000007b300010430000000000001042f00000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b000007910000413d000001ed0030009c000001ed0300804100000060013002100000000002000414000001ed0020009c000001ed02008041000000c002200210000000000112019f00000245011001c7000000000205001907b107ac0000040f0000000100200190000007a60000613d000000000101043b000000000001042d000000000001042f000007aa002104210000000102000039000000000001042d0000000002000019000000000001042d000007af002104230000000102000039000000000001042d0000000002000019000000000001042d000007b100000432000007b20001042e000007b30001043000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff095ea7b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000fe000000000000000000000000000000000000000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff000000020000000000000000000000000000008000000100000000000000000008c379a00000000000000000000000000000000000000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f00000000000000000000000000000000000000000000000000000064000000000000000000000000d7f73334000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000000000008f491cb900000000000000000000000000000000000000000000000000000000b5a1101000000000000000000000000000000000000000000000000000000000e6c725f400000000000000000000000000000000000000000000000000000000e6c725f500000000000000000000000000000000000000000000000000000000ef686d8e00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b5a1101100000000000000000000000000000000000000000000000000000000bee518a400000000000000000000000000000000000000000000000000000000ca709a2500000000000000000000000000000000000000000000000000000000ae90de5400000000000000000000000000000000000000000000000000000000ae90de5500000000000000000000000000000000000000000000000000000000b0f479a100000000000000000000000000000000000000000000000000000000b187bd26000000000000000000000000000000000000000000000000000000008f491cba000000000000000000000000000000000000000000000000000000009d2aede5000000000000000000000000000000000000000000000000000000002b6e5d620000000000000000000000000000000000000000000000000000000079ba50960000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000085572ffb000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000002b6e5d6300000000000000000000000000000000000000000000000000000000665ed53700000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000001892b906000000000000000000000000000000000000000000000000000000002874d8bf0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000016c38b3c0200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c66000000000000000000000000000000000000000000000000000000006400000080000000000000000000000000000000000000ff00000000000000000000000000000000000000000002000000000000000000000000000000000000200000008000000000000000004768dbf8645b24c54f2887651545d24f748c0d0d1d4c689eb810fb19f0befcf3000000000000000000000000000000000000002000000080000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000ff0000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffbf020000000000000000000000000000000000002000000000000000000000000048257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b1525000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffffdf96f4e9f9000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000001000000000000000000000000000000000000000005a3fef9935c9013a24c6193df2240d34fcf6b0ebf8786b85efe8401d696cdd94f6e6c792063616c6c61626c65206279206f776e6572000000000000000000000000000000000000000001000000000000000000000000000000000000000000a8d87a3b000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000eff7cc48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c53656c6646756e64656450696e67506f6e6720312e352e3000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a70000000000000000000000000000000000000000000000000000000085572ffb00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe002000002000000000000000000000000000000000000000000000000000000009b33ae408f9f4b66895c74dd45801bbc70862d957b3a053c842a32637109b989") + func (_SelfFundedPingPong *SelfFundedPingPong) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _SelfFundedPingPong.abi.Events["CountIncrBeforeFundingSet"].ID: @@ -1446,6 +1467,82 @@ func (_SelfFundedPingPong *SelfFundedPingPong) Address() common.Address { return _SelfFundedPingPong.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncSelfFundedPingPong(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *SelfFundedPingPong, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(SelfFundedPingPongZkBin) + fmt.Println("deploying") + SelfFundedPingPongAbi, err := SelfFundedPingPongMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := SelfFundedPingPongAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := SelfFundedPingPongMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &SelfFundedPingPong{address: address, abi: *parsed, SelfFundedPingPongCaller: SelfFundedPingPongCaller{contract: contractBind}, SelfFundedPingPongTransactor: SelfFundedPingPongTransactor{contract: contractBind}, SelfFundedPingPongFilterer: SelfFundedPingPongFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type SelfFundedPingPongInterface interface { GetCountIncrBeforeFunding(opts *bind.CallOpts) (uint8, error) diff --git a/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go b/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go index 7e81051aa3..a3348a3906 100644 --- a/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go +++ b/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go @@ -4,6 +4,7 @@ package token_admin_registry import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -45,7 +50,21 @@ var TokenAdminRegistryABI = TokenAdminRegistryMetaData.ABI var TokenAdminRegistryBin = TokenAdminRegistryMetaData.Bin -func DeployTokenAdminRegistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TokenAdminRegistry, error) { +func DeployTokenAdminRegistry(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *CustomTransaction, *TokenAdminRegistry, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncTokenAdminRegistry(auth, backend) + } + parsed, err := TokenAdminRegistryMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -58,7 +77,7 @@ func DeployTokenAdminRegistry(auth *bind.TransactOpts, backend bind.ContractBack if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &TokenAdminRegistry{address: address, abi: *parsed, TokenAdminRegistryCaller: TokenAdminRegistryCaller{contract: contract}, TokenAdminRegistryTransactor: TokenAdminRegistryTransactor{contract: contract}, TokenAdminRegistryFilterer: TokenAdminRegistryFilterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &TokenAdminRegistry{address: address, abi: *parsed, TokenAdminRegistryCaller: TokenAdminRegistryCaller{contract: contract}, TokenAdminRegistryTransactor: TokenAdminRegistryTransactor{contract: contract}, TokenAdminRegistryFilterer: TokenAdminRegistryFilterer{contract: contract}}, nil } type TokenAdminRegistry struct { @@ -1391,6 +1410,8 @@ func (_TokenAdminRegistry *TokenAdminRegistryFilterer) ParseRegistryModuleRemove return event, nil } +var TokenAdminRegistryZkBin string = ("0x0003000000000002000600000000000200020000000103550000006003100270000001330030019d0000008004000039000000400040043f0000000100200190000000460000c13d0000013302300197000000040020008c0000044d0000413d000000000301043b000000e003300270000001390030009c000000560000213d000001450030009c0000006c0000213d0000014b0030009c000000ea0000213d0000014e0030009c000001950000613d0000014f0030009c0000044d0000c13d000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000400000001001d000001500010009c0000044d0000213d0000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000201043b0000000101200039000000000301041a00000150043001970000000006000411000000000064004b000002fe0000c13d000000000402041a0000013404400197000000000464019f000000000042041b0000013402300197000000000021041b0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d02000039000000030300003900000173040000410000000405000029000001720000013d0000000001000416000000000001004b0000044d0000c13d0000000001000411000000000001004b000000630000c13d0000013601000041000000800010043f0000002001000039000000840010043f0000001801000039000000a40010043f0000013701000041000000c40010043f0000013801000041000004ca000104300000013a0030009c000000a30000213d000001400030009c000001380000213d000001430030009c000001c00000613d000001440030009c0000044d0000c13d0000000001000416000000000001004b0000044d0000c13d000000000100041a000002680000013d000000000200041a0000013402200197000000000112019f000000000010041b0000002001000039000001000010044300000120000004430000013501000041000004c90001042e000001460030009c000001560000213d000001490030009c000001d40000613d0000014a0030009c0000044d0000c13d000000240020008c0000044d0000413d0000000003000416000000000003004b0000044d0000c13d0000000403100370000000000303043b000001580030009c0000044d0000213d0000002304300039000000000024004b0000044d0000813d0000000404300039000000000441034f000000000404043b000200000004001d000001580040009c0000044d0000213d000100240030003d000000020300002900000005033002100000000104300029000000000024004b0000044d0000213d0000003f043000390000016504400197000001660040009c0000044f0000213d0000008004400039000000400040043f0000000204000029000000800040043f0000001f0430018f000000000003004b0000009c0000613d000000000121034f000000a002300039000000a003000039000000001501043c0000000003530436000000000023004b000000980000c13d000000000004004b000000020000006b0000038e0000c13d000000400100043d000400000001001d00000080020000390000031a0000013d0000013b0030009c000001770000213d0000013e0030009c0000021a0000613d0000013f0030009c0000044d0000c13d000000440020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000402100370000000000202043b000400000002001d000001500020009c0000044d0000213d0000002401100370000000000101043b000300000001001d000001500010009c0000044d0000213d0000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a00000150011001970000000004000411000000000041004b000003250000c13d0000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b0000000101100039000000000201041a00000134022001970000000307000029000000000272019f000000000021041b0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d0200003900000004030000390000015a0400004100000004050000290000000006000411000001720000013d0000014c0030009c000002490000613d0000014d0030009c0000044d0000c13d000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000400000001001d000001500010009c0000044d0000213d000000000100041a00000150011001970000000002000411000000000012004b000002ea0000c13d0000000401000029000000000010043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a000000000001004b000001750000c13d0000000501000039000000000201041a0000016b0020009c0000044f0000813d0000000103200039000000000031041b0000016c0220009a0000000403000029000000000032041b000000000101041a000300000001001d000000000030043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b0000000302000029000000000021041b000000400100043d00000004020000290000000000210435000001330010009c000001330100804100000040011002100000000002000414000001330020009c0000013302008041000000c002200210000000000112019f0000016d011001c70000800d0200003900000001030000390000016e04000041000001720000013d000001410030009c000002590000613d000001420030009c0000044d0000c13d000000440020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000402100370000000000202043b000001500020009c0000044d0000213d0000002401100370000000000101043b000400000001001d000001500010009c0000044d0000213d000000000020043f0000000201000039000000200010043f04c804b10000040f000000000101041a0000015001100197000000040010006c00000000010000390000000101006039000000800010043f0000016001000041000004c90001042e000001470030009c0000026c0000613d000001480030009c0000044d0000c13d0000000001000416000000000001004b0000044d0000c13d0000000101000039000000000201041a00000150032001970000000006000411000000000036004b000002f40000c13d000000000300041a0000013404300197000000000464019f000000000040041b0000013402200197000000000021041b00000000010004140000015005300197000001330010009c0000013301008041000000c00110021000000151011001c70000800d020000390000000303000039000001630400004104c804be0000040f00000001002001900000044d0000613d0000000001000019000004c90001042e0000013c0030009c000002bb0000613d0000013d0030009c0000044d0000c13d000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000601043b000001500060009c0000044d0000213d000000000100041a00000150011001970000000005000411000000000015004b000002ea0000c13d000000000056004b000003060000c13d0000013601000041000000800010043f0000002001000039000000840010043f0000001701000039000000a40010043f0000015301000041000000c40010043f0000013801000041000004ca00010430000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000400000001001d000001500010009c0000044d0000213d000000000100041a00000150011001970000000002000411000000000012004b000002ea0000c13d0000000401000029000000000010043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a000300000001001d000000000001004b000001750000613d0000000504000039000000000204041a000000000002004b000003b20000c13d0000016f01000041000000000010043f0000001101000039000000040010043f0000015601000041000004ca00010430000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000001500010009c0000044d0000213d04c8049d0000040f000000000001004b0000000001000039000000010100c039000000400200043d0000000000120435000001330020009c0000013302008041000000400120021000000161011001c7000004c90001042e000000440020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000402100370000000000202043b000400000002001d000001500020009c0000044d0000213d0000002401100370000000000101043b000300000001001d000001500010009c0000044d0000213d0000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a00000150021001970000000001000411000000000012004b000003330000c13d0000000303000029000000000003004b000003d10000c13d0000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b0000000201100039000000000201041a000001340320019700000003033001af000000000031041b0000015006200197000000030060006c000001750000613d0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d0200003900000004030000390000016a0400004100000004050000290000000307000029000001720000013d000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000001500010009c0000044d0000213d000000e002000039000000400020043f000000800000043f000000a00000043f000000c00000043f000000000010043f0000000201000039000000200010043f04c804b10000040f000400000001001d000000e00100003904c804820000040f0000000403000029000000000103041a0000015001100197000000e00010043f0000000102300039000000000202041a0000015002200197000001000020043f0000000202300039000000000202041a0000015002200197000001200020043f000000400200043d0000000001120436000001000300043d00000150033001970000000000310435000001200100043d000001500110019700000040032000390000000000130435000001330020009c000001330200804100000040012002100000015f011001c7000004c90001042e0000000001000416000000000001004b0000044d0000c13d000000c001000039000000400010043f0000001801000039000000800010043f0000017002000041000000a00020043f0000002003000039000000c00030043f000000e00010043f000001000020043f000001180000043f0000017101000041000004c90001042e000000240020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000401100370000000000101043b000001500010009c0000044d0000213d000000000010043f0000000201000039000000200010043f04c804b10000040f0000000201100039000000000101041a0000015001100197000000800010043f0000016001000041000004c90001042e000000440020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000402100370000000000302043b000001580030009c0000044d0000213d0000002401100370000000000601043b000001580060009c0000044d0000213d00000000010004150000000304000039000000000504041a000000000235004b000003140000a13d000001580660019700000000083600190000000007000415000000060770008a0000000507700210000000000058004b0000028b0000a13d0000000007000415000000050770008a0000000507700210000001580020009c00000000060200190000044f0000213d00000005096002100000003f02900039000001640a200197000000400200043d00000000082a00190000000000a8004b000000000a000039000000010a004039000001580080009c0000044f0000213d0000000100a001900000044f0000c13d000000400080043f00000000086204360000001f0a90018f000000000009004b000002a40000613d0000000009980019000000000b000031000000020bb00367000000000c08001900000000bd0b043c000000000cdc043600000000009c004b000002a00000c13d00000000000a004b0000000507700270000000000702001f000000000006004b000003150000613d00000000070000190000000009370019000000000059004b000004040000813d000000000040043f000000000a02043300000000007a004b000004040000a13d000000050a700210000000000a8a0019000001590990009a000000000909041a000001500990019700000000009a04350000000107700039000000000067004b000002aa0000413d000003150000013d000000440020008c0000044d0000413d0000000002000416000000000002004b0000044d0000c13d0000000402100370000000000202043b000400000002001d000001500020009c0000044d0000213d0000002401100370000000000101043b000300000001001d000001500010009c0000044d0000213d0000000001000411000000000010043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a000000000001004b000002e00000c13d000000000100041a00000150011001970000000002000411000000000012004b000003df0000c13d000000030000006b000003410000c13d000000400100043d0000015b020000410000000000210435000001330010009c000001330100804100000040011002100000015c011001c7000004ca000104300000013601000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000017401000041000000c40010043f0000013801000041000004ca000104300000013601000041000000800010043f0000002001000039000000840010043f0000001601000039000000a40010043f0000016201000041000000c40010043f0000013801000041000004ca00010430000000400100043d0000002402100039000000040300002900000000003204350000017202000041000000000021043500000150026001970000032c0000013d0000000101000039000000000201041a0000013402200197000000000262019f000000000021041b0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d0200003900000003030000390000015204000041000001720000013d0000006002000039000000000300041500000000013100490000000001000002000000400100043d000400000001001d04c8048d0000040f00000004020000290000000001210049000001330010009c00000133010080410000006001100210000001330020009c00000133020080410000004002200210000000000121019f000004c90001042e000000400100043d0000002402100039000000040300002900000000003204350000015d020000410000000000210435000001500240019700000004031000390000000000230435000001330010009c000001330100804100000040011002100000015e011001c7000004ca00010430000000400200043d0000002403200039000000040400002900000000004304350000015d030000410000000000320435000001500110019700000004032000390000000000130435000001330020009c000001330200804100000040012002100000015e011001c7000004ca000104300000000401000029000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000201041a0000015000200198000004550000c13d0000000101100039000000000201041a000001340220019700000003022001af000000000021041b0000000401000029000000000010043f0000000401000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000101041a000000000001004b000003820000c13d0000000301000039000000000201041a000001580020009c0000044f0000213d0000000103200039000000000031041b000001590220009a0000000403000029000000000032041b000000000101041a000200000001001d000000000030043f0000000401000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b0000000202000029000000000021041b0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d0200003900000004030000390000015a04000041000000040500002900000000060000190000000307000029000001720000013d0000000003000019000400000003001d0000000502300210000300000002001d00000001012000290000000201100367000000000101043b000001500010009c0000044d0000213d000000000010043f0000000201000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000800200043d0000000403000029000000000032004b000004040000a13d0000000302000029000000a002200039000000000101043b0000000201100039000000000101041a000001500110019700000000001204350000000103300039000000020030006c0000038f0000413d0000009f0000013d0000000303000029000000010130008a000000000023004b000003e50000c13d000001750230009a000000000002041b000000000014041b0000000401000029000000000010043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b000000000001041b0000000001000414000001330010009c0000013301008041000000c00110021000000151011001c70000800d0200003900000002030000390000017604000041000000440000013d000000400b00043d000001670100004100000000001b04350000000401b00039000000040200002900000000002104350000000001000414000000040030008c0000040a0000c13d0000000103000031000000200030008c00000020040000390000000004034019000004360000013d000000400100043d00000155020000410000000000210435000000040210003900000000030004110000045a0000013d000000000012004b000004040000a13d000001750130009a000001750220009a000000000202041a000000000021041b000000000020043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f00000001002001900000044d0000613d000000000101043b0000000302000029000000000021041b0000000501000039000000000101041a000000000001004b0000047e0000c13d0000016f01000041000000000010043f0000003101000039000000040010043f0000015601000041000004ca000104300000016f01000041000000000010043f0000003201000039000000040010043f0000015601000041000004ca000104300000013300b0009c000001330200004100000000020b40190000004002200210000001330010009c0000013301008041000000c001100210000000000121019f00000156011001c7000000000203001900020000000b001d04c804c30000040f00000060031002700000013303300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000020b0000290000000205700029000004260000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000004220000c13d000000000006004b000004330000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000004600000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000001580010009c0000044f0000213d00000001002001900000044f0000c13d000000400010043f000000200030008c0000044d0000413d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b0000044d0000c13d000000000002004b000001f90000c13d0000016902000041000004570000013d0000000001000019000004ca000104300000016f01000041000000000010043f0000004101000039000000040010043f0000015601000041000004ca00010430000000400100043d00000157020000410000000000210435000000040210003900000004030000290000000000320435000001330010009c0000013301008041000000400110021000000156011001c7000004ca000104300000001f0530018f0000016806300198000000400200043d00000000046200190000046b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000004670000c13d000000000005004b000004780000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000001330020009c00000133020080410000004002200210000000000112019f000004ca000104300000000003010019000000010110008a0000000504000039000003b60000013d000001770010009c000004870000813d0000006001100039000000400010043f000000000001042d0000016f01000041000000000010043f0000004101000039000000040010043f0000015601000041000004ca0001043000000020030000390000000004310436000000000302043300000000003404350000004001100039000000000003004b0000049c0000613d000000000400001900000020022000390000000005020433000001500550019700000000015104360000000104400039000000000034004b000004950000413d000000000001042d000000000010043f0000000601000039000000200010043f0000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f0000000100200190000004af0000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d0000000001000019000004ca000104300000000001000414000001330010009c0000013301008041000000c00110021000000154011001c7000080100200003904c804c30000040f0000000100200190000004bc0000613d000000000101043b000000000001042d0000000001000019000004ca00010430000004c1002104210000000102000039000000000001042d0000000002000019000000000001042d000004c6002104230000000102000039000000000001042d0000000002000019000000000001042d000004c800000432000004c90001042e000004ca00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000020000000000000000000000000000004000000100000000000000000008c379a00000000000000000000000000000000000000000000000000000000043616e6e6f7420736574206f776e657220746f207a65726f00000000000000000000000000000000000000000000000000000064000000800000000000000000000000000000000000000000000000000000000000000000000000007d3f255100000000000000000000000000000000000000000000000000000000cb67e3b000000000000000000000000000000000000000000000000000000000e677ae3600000000000000000000000000000000000000000000000000000000e677ae3700000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000cb67e3b100000000000000000000000000000000000000000000000000000000ddadfa8e00000000000000000000000000000000000000000000000000000000bbe4f6da00000000000000000000000000000000000000000000000000000000bbe4f6db00000000000000000000000000000000000000000000000000000000c1af6e03000000000000000000000000000000000000000000000000000000007d3f2552000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000004e847fc60000000000000000000000000000000000000000000000000000000072d64a800000000000000000000000000000000000000000000000000000000072d64a810000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000004e847fc7000000000000000000000000000000000000000000000000000000005e63547a00000000000000000000000000000000000000000000000000000000181f5a7600000000000000000000000000000000000000000000000000000000181f5a77000000000000000000000000000000000000000000000000000000003dc457720000000000000000000000000000000000000000000000000000000010cbcf1800000000000000000000000000000000000000000000000000000000156194da000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0200000000000000000000000000000000000000000000000000000000000000ed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127843616e6e6f74207472616e7366657220746f2073656c66000000000000000000020000000000000000000000000000000000004000000000000000000000000051ca1ec300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045ed80e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff3da8a5f161a6c3ff06a60736d0ed24d7963cc6a5c4fafd2fa1dae9bb908e07a5c54c3051ff16e63bb9203214432372aca006c589e3653619b577a3265675b716d92e233d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000ed5d85b50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000004d7573742062652070726f706f736564206f776e6572000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000003fffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f240028e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffe0962b60e600000000000000000000000000000000000000000000000000000000754449ec3aff3bd528bfce43ae9319c4a381b67fcd1d20097b3b24dacaecc35d0000000000000000000000000000000000000000000000010000000000000000fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c25002000000000000000000000000000000000000200000000000000000000000003cabf004338366bfeaeb610ad827cb58d16b588017c509501f2c97c83caae7b24e487b7100000000000000000000000000000000000000000000000000000000546f6b656e41646d696e526567697374727920312e352e3000000000000000000000000000000000000000000000000000000060000000c000000000000000003edffe7500000000000000000000000000000000000000000000000000000000399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a74f6e6c792063616c6c61626c65206279206f776e657200000000000000000000fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c25193eaa26dcb9275e56bacb1d33fdbf402262da6f0f4baf2a6e2cd154b73f387f8000000000000000000000000000000000000000000000000ffffffffffffffa0c62b7ae969768fb75e3aa619cab4cbd1a648751c970b8155c813589d397ffef0") + func (_TokenAdminRegistry *TokenAdminRegistry) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _TokenAdminRegistry.abi.Events["AdministratorTransferRequested"].ID: @@ -1445,6 +1466,82 @@ func (_TokenAdminRegistry *TokenAdminRegistry) Address() common.Address { return _TokenAdminRegistry.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncTokenAdminRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *TokenAdminRegistry, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(TokenAdminRegistryZkBin) + fmt.Println("deploying") + TokenAdminRegistryAbi, err := TokenAdminRegistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := TokenAdminRegistryAbi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := TokenAdminRegistryMetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &TokenAdminRegistry{address: address, abi: *parsed, TokenAdminRegistryCaller: TokenAdminRegistryCaller{contract: contractBind}, TokenAdminRegistryTransactor: TokenAdminRegistryTransactor{contract: contractBind}, TokenAdminRegistryFilterer: TokenAdminRegistryFilterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type TokenAdminRegistryInterface interface { GetAllConfiguredTokens(opts *bind.CallOpts, startIndex uint64, maxCount uint64) ([]common.Address, error) diff --git a/core/gethwrappers/ccip/generated/weth9/weth9.go b/core/gethwrappers/ccip/generated/weth9/weth9.go index 50d0aa23f7..9820f08f96 100644 --- a/core/gethwrappers/ccip/generated/weth9/weth9.go +++ b/core/gethwrappers/ccip/generated/weth9/weth9.go @@ -4,6 +4,7 @@ package weth9 import ( + "context" "errors" "fmt" "math/big" @@ -14,8 +15,12 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/event" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated" + zkSyncAccounts "github.com/zksync-sdk/zksync2-go/accounts" + zkSyncClient "github.com/zksync-sdk/zksync2-go/clients" + zktypes "github.com/zksync-sdk/zksync2-go/types" ) var ( @@ -39,7 +44,21 @@ var WETH9ABI = WETH9MetaData.ABI var WETH9Bin = WETH9MetaData.Bin -func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WETH9, error) { +func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *CustomTransaction, *WETH9, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + chainId, err := client.ChainID(context.Background()) + if err != nil { + return common.Address{}, nil, nil, err + } + switch chainId.Uint64() { + + case 324, 280, 300: + return DeployZkSyncWETH9(auth, backend) + } + parsed, err := WETH9MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -52,7 +71,7 @@ func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common. if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &WETH9{address: address, abi: *parsed, WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil + return address, &CustomTransaction{Transaction: tx, CustomHash: tx.Hash()}, &WETH9{address: address, abi: *parsed, WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil } type WETH9 struct { @@ -905,6 +924,8 @@ func (_WETH9 *WETH9Filterer) ParseWithdrawal(log types.Log) (*WETH9Withdrawal, e return event, nil } +var WETH9ZkBin string = ("0x000200000000000200020000000000020000006003100270000000cc0330019700010000003103550000008004000039000000400040043f00000001002001900000002f0000c13d000000040030008c000000590000413d000000000201043b000000e002200270000000d70020009c000000830000a13d000000d80020009c000000ac0000213d000000dc0020009c000001830000613d000000dd0020009c0000014f0000613d000000de0020009c000001950000c13d0000000001000416000000000001004b000001950000c13d0000000103000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000390000000106002039000000000662013f0000000100600190000000530000c13d000000800010043f000000000005004b000001b10000c13d000000ee01200197000000a00010043f000000000004004b000000c001000039000000a001006039000001c80000013d0000000001000416000000000001004b000001950000c13d000000000100041a000000010310019000000001021002700000007f0220618f0000001f0020008c00000000010000390000000101002039000000000013004b000000530000c13d000000200020008c000000460000413d000000cd010000410000001f022000390000000502200270000000ce0220009a000000000000043f000000000001041b0000000101100039000000000021004b000000420000413d000000cf01000041000000000010041b0000000101000039000000000301041a000000010030019000000001023002700000007f0220618f0000001f0020008c00000000040000390000000104002039000000000343013f0000000100300190000000c70000613d000000e701000041000000000010043f0000002201000039000000040010043f000000e8010000410000032f00010430000000000003004b000001950000c13d0000000001000411000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000001950000613d000000000101043b000000000301041a0000000002000416000000000023001a000002240000413d0000000003230019000000000031041b000000400100043d0000000000210435000000cc0010009c000000cc0100804100000040011002100000000002000414000000cc0020009c000000cc02008041000000c002200210000000000112019f000000d5011001c70000800d020000390000000203000039000000d6040000410000000005000411032d03230000040f0000000100200190000001950000613d00000000010000190000032e0001042e000000df0020009c000000de0000a13d000000e00020009c0000017b0000613d000000e10020009c0000013e0000613d000000e20020009c000001950000c13d000000240030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000401100370000000000101043b000200000001001d0000000001000411000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f00000002030000290000000100200190000001950000613d000000000101043b000000000201041a000000000232004b000001950000413d000000000021041b00000000010004140000000005000411000000040050008c000001b60000c13d0000000002000031000001e40000013d000000d90020009c0000018c0000613d000000da0020009c000001600000613d000000db0020009c000001950000c13d000000440030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000402100370000000000202043b000000e50020009c000001950000213d0000002401100370000000000101043b000000e50010009c000001950000213d000000000020043f000200000001001d0000000401000039000000200010043f032d03070000040f0000000202000029000000000020043f0000015a0000013d0000001f0020008c000000d20000a13d000000000010043f000000d0030000410000001f022000390000000502200270000000d10220009a000000000003041b0000000103300039000000000023004b000000ce0000413d000000d202000041000000000021041b0000000201000039000000000201041a000000ee0220019700000012022001bf000000000021041b000000200100003900000100001004430000012000000443000000d3010000410000032e0001042e000000e30020009c000001270000613d000000e40020009c000001950000c13d000000440030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000402100370000000000202043b000200000002001d000000e50020009c000001950000213d0000002401100370000000000101043b000100000001001d0000000001000411000000000010043f0000000401000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000001950000613d000000000101043b0000000202000029000000000020043f000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000001950000613d000000000101043b0000000102000029000000000021041b000000400100043d0000000000210435000000cc0010009c000000cc0100804100000040011002100000000002000414000000cc0020009c000000cc02008041000000c002200210000000000112019f000000d5011001c70000800d020000390000000303000039000000ed0400004100000000050004110000000206000029032d03230000040f0000000100200190000001950000613d000000400100043d00000001020000390000000000210435000000cc0010009c000000cc010080410000004001100210000000e9011001c70000032e0001042e0000000001000416000000000001004b000001950000c13d000000000200041a000000010420019000000001012002700000007f0310018f00000000010360190000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000000530000c13d000000800010043f000000000004004b000001a30000c13d000000ee01200197000000a00010043f000000000003004b000000c001000039000000a001006039000001c80000013d000000640030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000402100370000000000402043b000000e50040009c000001950000213d0000002402100370000000000202043b000000e50020009c000001950000213d0000004401100370000000000301043b00000000010400190000019a0000013d000000240030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000401100370000000000101043b000000e50010009c000001950000213d000000000010043f0000000301000039000000200010043f032d03070000040f000000000101041a000000800010043f000000e6010000410000032e0001042e0000000001000411000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000001950000613d000000000101043b000000000301041a0000000002000416000000000023001a000002240000413d0000000003230019000000000031041b000000400100043d0000000000210435000000cc0010009c000000cc0100804100000040011002100000000002000414000000750000013d0000000001000416000000000001004b000001950000c13d0000000001000410032d03140000040f000000800010043f000000e6010000410000032e0001042e0000000001000416000000000001004b000001950000c13d0000000201000039000000000101041a000000ff0110018f000000800010043f000000e6010000410000032e0001042e000000440030008c000001950000413d0000000002000416000000000002004b000001950000c13d0000000402100370000000000202043b000000e50020009c000001970000a13d00000000010000190000032f000104300000002401100370000000000301043b0000000001000411032d02510000040f0000000101000039000000400200043d0000000000120435000000cc0020009c000000cc020080410000004001200210000000e9011001c70000032e0001042e000000000000043f000000020020008c000001b40000413d000000cd0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000001a80000413d000001c70000013d000000000030043f000000020020008c000001bd0000813d000000a001000039000001c80000013d000000cc0010009c000000cc01008041000000c001100210000000000003004b000001d90000c13d0000000002050019000001dd0000013d000000d00200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000001bf0000413d000000c001300039000000800210008a0000008001000039032d022a0000040f000000400100043d000200000001001d0000008002000039032d023c0000040f00000002020000290000000001210049000000cc0010009c000000cc010080410000006001100210000000cc0020009c000000cc020080410000004002200210000000000121019f0000032e0001042e000000ea011001c7000080090200003900000000040500190000000005000019032d03230000040f000000020300002900000000050004110000006002100270000000cc0020019d000000cc022001970001000000010355000000000002004b0000020c0000613d0000001f04200039000000ef044001970000003f04400039000000ef04400197000000400700043d0000000004470019000000000074004b00000000060000390000000106004039000000eb0040009c0000021e0000213d00000001006001900000021e0000c13d000000400040043f0000000008270436000000ef092001980000001f0220018f00000000019800190000000104000367000001ff0000613d000000000604034f000000006706043c0000000008780436000000000018004b000001fb0000c13d000000000002004b0000020c0000613d000000000694034f0000000302200210000000000401043300000000042401cf000000000424022f000000000606043b0000010002200089000000000626022f00000000022601cf000000000242019f0000000000210435000000400100043d0000000000310435000000cc0010009c000000cc0100804100000040011002100000000002000414000000cc0020009c000000cc02008041000000c002200210000000000112019f000000d5011001c70000800d020000390000000203000039000000ec04000041032d03230000040f0000000100200190000000810000c13d000001950000013d000000e701000041000000000010043f0000004101000039000000040010043f000000e8010000410000032f00010430000000e701000041000000000010043f0000001101000039000000040010043f000000e8010000410000032f000104300000001f02200039000000ef022001970000000001120019000000000021004b00000000020000390000000102004039000000eb0010009c000002360000213d0000000100200190000002360000c13d000000400010043f000000000001042d000000e701000041000000000010043f0000004101000039000000040010043f000000e8010000410000032f0001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b0000024b0000613d000000000400001900000000054100190000000006430019000000000606043300000000006504350000002004400039000000000024004b000002440000413d000000000321001900000000000304350000001f02200039000000ef022001970000000001210019000000000001042d0003000000000002000200000003001d000100000002001d000000e501100197000300000001001d000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000101041a000000020010006c000002fe0000413d0000000002000411000000030020006b000002c20000613d0000000401000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000101041a000000f00010009c000002c20000613d0000000301000029000000000010043f0000000401000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000101041a000000020010006c000002fe0000413d0000000301000029000000000010043f0000000401000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000201041a000000020220006c000003000000413d000000000021041b0000000301000029000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000201041a000000020220006c000003000000413d000000000021041b0000000101000029000000e501100197000100000001001d000000000010043f0000000301000039000000200010043f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000002fe0000613d000000000101043b000000000201041a0000000203000029000000000032001a000003000000413d0000000002320019000000000021041b000000400100043d0000000000310435000000cc0010009c000000cc0100804100000040011002100000000002000414000000cc0020009c000000cc02008041000000c002200210000000000112019f000000d5011001c70000800d020000390000000303000039000000f10400004100000003050000290000000106000029032d03230000040f0000000100200190000002fe0000613d000000000001042d00000000010000190000032f00010430000000e701000041000000000010043f0000001101000039000000040010043f000000e8010000410000032f00010430000000000001042f0000000001000414000000cc0010009c000000cc01008041000000c001100210000000d4011001c70000801002000039032d03280000040f0000000100200190000003120000613d000000000101043b000000000001042d00000000010000190000032f00010430000000f202000041000000000020044300000004001004430000000001000414000000cc0010009c000000cc01008041000000c001100210000000f3011001c70000800a02000039032d03280000040f0000000100200190000003220000613d000000000101043b000000000001042d000000000001042f00000326002104210000000102000039000000000001042d0000000002000019000000000001042d0000032b002104230000000102000039000000000001042d0000000002000019000000000001042d0000032d000004320000032e0001042e0000032f0001043000000000000000000000000000000000000000000000000000000000ffffffff290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563d6f21326ab749d5729fcba5677c79037b459436ab7bff709c9d06ce9f10c1a9d577261707065642045746865720000000000000000000000000000000000001ab10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf64ef1d2ad89edf8c4d91132028e8195cdf30bb4b5053d4f8cd260341d4805f30a5745544800000000000000000000000000000000000000000000000000000008000000020000000000000000000000000000004000000100000000000000000002000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000d0e30db000000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddc0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000002e1a7d4d0000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b3000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000008000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000ffffffffffffffffffffffffffffffffddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f390200000200000000000000000000000000000024000000000000000000000000ed66186ba03746514cfc59bbc5f74bd9e6ce34e503da71faa52fde5c988798b7") + func (_WETH9 *WETH9) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _WETH9.abi.Events["Approval"].ID: @@ -941,6 +962,82 @@ func (_WETH9 *WETH9) Address() common.Address { return _WETH9.address } +type CustomTransaction struct { + *types.Transaction + CustomHash common.Hash +} + +func (tx *CustomTransaction) Hash() common.Hash { + return tx.CustomHash +} + +func ConvertToTransaction(resp zktypes.TransactionResponse) *CustomTransaction { + dtx := &types.DynamicFeeTx{ + ChainID: resp.ChainID.ToInt(), + Nonce: uint64(resp.Nonce), + GasTipCap: resp.MaxPriorityFeePerGas.ToInt(), + GasFeeCap: resp.MaxFeePerGas.ToInt(), + To: &resp.To, + Value: resp.Value.ToInt(), + Data: resp.Data, + Gas: uint64(resp.Gas), + } + + tx := types.NewTx(dtx) + customTransaction := CustomTransaction{Transaction: tx, CustomHash: resp.Hash} + return &customTransaction +} + +func DeployZkSyncWETH9(auth *bind.TransactOpts, backend bind.ContractBackend, params ...interface{}) (common.Address, *CustomTransaction, *WETH9, error) { + client, ok := backend.(*ethclient.Client) + if !ok { + return common.Address{}, nil, nil, errors.New("backend is not an ethclient") + } + fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) + fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) + fmt.Println("got wallet") + fmt.Println("getting bytes") + decodedBytes := common.FromHex(WETH9ZkBin) + fmt.Println("deploying") + WETH9Abi, err := WETH9MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + constructor, err := WETH9Abi.Pack("", params...) + if err != nil { + return common.Address{}, nil, nil, err + } + hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ + Bytecode: decodedBytes, + Calldata: constructor, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + tx, _, err := zksyncClient.TransactionByHash(context.Background(), hash) + if err != nil { + return common.Address{}, nil, nil, err + } + fmt.Println("tx hash", tx.Hash) + + ethTx := ConvertToTransaction(*tx) + address := receipt.ContractAddress + + parsed, err := WETH9MetaData.GetAbi() + contractBind := bind.NewBoundContract(address, *parsed, backend, backend, backend) + + contractReturn := &WETH9{address: address, abi: *parsed, WETH9Caller: WETH9Caller{contract: contractBind}, WETH9Transactor: WETH9Transactor{contract: contractBind}, WETH9Filterer: WETH9Filterer{contract: contractBind}} + + return address, ethTx, contractReturn, err +} + type WETH9Interface interface { Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index ed9f855b6f..23795b5733 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -14,6 +14,7 @@ ether_sender_receiver: ../../../contracts/solc/v0.8.24/EtherSenderReceiver/Ether evm_2_evm_offramp: ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.bin b0d77babbe635cd6ba04c2af049badc9e9d28a4b6ed6bb75f830ad902a618beb evm_2_evm_onramp: ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.bin 5c02c2b167946b3467636ff2bb58594cb4652fc63d8bdfee2488ed562e2a3e50 fee_quoter: ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.bin 503823a939ff99fe3bdaaef7a89cd4bbe475e260d3921335dbf9c80d4f584b76 +link_token: ../../../contracts/solc/v0.8.19/LinkToken/LinkToken.abi ../../../contracts/solc/v0.8.19/LinkToken/LinkToken.bin c0ef9b507103aae541ebc31d87d051c2764ba9d843076b30ec505d37cdfffaba lock_release_token_pool: ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.abi ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.bin e6a8ec9e8faccb1da7d90e0f702ed72975964f97dc3222b54cfcca0a0ba3fea2 lock_release_token_pool_and_proxy: ../../../contracts/solc/v0.8.24/LockReleaseTokenPoolAndProxy/LockReleaseTokenPoolAndProxy.abi ../../../contracts/solc/v0.8.24/LockReleaseTokenPoolAndProxy/LockReleaseTokenPoolAndProxy.bin e632b08be0fbd1d013e8b3a9d75293d0d532b83071c531ff2be1deec1fa48ec1 maybe_revert_message_receiver: ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.abi ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.bin d73956c26232ebcc4a5444429fa99cbefed960e323be9b5a24925885c2e477d5 @@ -28,6 +29,8 @@ offramp: ../../../contracts/solc/v0.8.24/OffRamp/OffRamp.abi ../../../contracts/ onramp: ../../../contracts/solc/v0.8.24/OnRamp/OnRamp.abi ../../../contracts/solc/v0.8.24/OnRamp/OnRamp.bin 330be295a313aa4064819fb76d27f4b1a35fdcbd0959d68a71f1ebb72d0b1d7f ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin c1c2f8a65c7ffd971899cae7fe62f2da57d09e936151e2b92163c4bebe699d6b price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin e7781d600c1bb7aa4620106af7f6e146a109b97f4cb6a7d06c9e15773340ecb2 +price_registry_1_2_0: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin 7ccc11d3c1d7cf422cd38911ea6a09471b9054a18b4339c28ba7b90b4aa9e21c +price_registy_1_2_0: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin 7ccc11d3c1d7cf422cd38911ea6a09471b9054a18b4339c28ba7b90b4aa9e21c registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.abi ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.bin 75be86323c227917a9bbc3f799d7ed02f92db546653a36db30ed0ebe64461353 report_codec: ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.abi ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.bin 738616a62c24ad4c5b851d174f40a06b51ccbc0bbfc65f04ff9d1c865f0be5bc rmn_contract: ../../../contracts/solc/v0.8.24/RMN/RMN.abi ../../../contracts/solc/v0.8.24/RMN/RMN.bin 8b45b0fb08631c6b582fd3c0b4052a79cc2b4e091e6286af1ab131bef63661f9 From 73fb6db24abec40a8544d05f4a51e6f67fd8a72e Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Sun, 24 Nov 2024 22:37:37 +0000 Subject: [PATCH 3/6] Adding abi comment --- core/gethwrappers/abigen.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/gethwrappers/abigen.go b/core/gethwrappers/abigen.go index b237a4028b..19c149e3fd 100644 --- a/core/gethwrappers/abigen.go +++ b/core/gethwrappers/abigen.go @@ -80,6 +80,7 @@ func DeployZkSync%s(auth *bind.TransactOpts, backend bind.ContractBackend, param if err != nil { return common.Address{}, nil, nil, err } + // TODO: we should not pass nil as the first argument here, we should use auth values provided by the user hash, err := wallet.DeployWithCreate(nil, zkSyncAccounts.CreateTransaction{ Bytecode: decodedBytes, Calldata: constructor, From dc6de3bd6f634bf167cb2fd35f287639a3a2daac Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Tue, 26 Nov 2024 04:13:23 +0000 Subject: [PATCH 4/6] trying to build --- .../evm/client/simulated_backend_client.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/core/chains/evm/client/simulated_backend_client.go b/core/chains/evm/client/simulated_backend_client.go index 11828e5871..654aebf0a7 100644 --- a/core/chains/evm/client/simulated_backend_client.go +++ b/core/chains/evm/client/simulated_backend_client.go @@ -124,11 +124,13 @@ func (c *SimulatedBackendClient) SubscribeFilterLogs(ctx context.Context, q ethe // currentBlockNumber returns index of *pending* block in simulated blockchain func (c *SimulatedBackendClient) currentBlockNumber() *big.Int { - return c.b.Blockchain().CurrentBlock().Number + // return c.b.Blockchain().CurrentBlock().Number + return big.NewInt(0) } func (c *SimulatedBackendClient) finalizedBlockNumber() *big.Int { - return c.b.Blockchain().CurrentFinalBlock().Number + // return c.b.Blockchain().CurrentFinalBlock().Number + return big.NewInt(0) } func (c *SimulatedBackendClient) TokenBalance(ctx context.Context, address common.Address, contractAddress common.Address) (balance *big.Int, err error) { @@ -540,12 +542,12 @@ func (c *SimulatedBackendClient) IsL2() bool { func (c *SimulatedBackendClient) fetchHeader(ctx context.Context, blockNumOrTag string) (*types.Header, error) { switch blockNumOrTag { - case rpc.SafeBlockNumber.String(): - return c.b.Blockchain().CurrentSafeBlock(), nil - case rpc.LatestBlockNumber.String(): - return c.b.Blockchain().CurrentHeader(), nil - case rpc.FinalizedBlockNumber.String(): - return c.b.Blockchain().CurrentFinalBlock(), nil + // case rpc.SafeBlockNumber.String(): + // return c.b.Blockchain().CurrentSafeBlock(), nil + // case rpc.LatestBlockNumber.String(): + // return c.b.Blockchain().CurrentHeader(), nil + // case rpc.FinalizedBlockNumber.String(): + // return c.b.Blockchain().CurrentFinalBlock(), nil default: blockNum, ok := new(big.Int).SetString(blockNumOrTag, 0) if !ok { From 5808c3ddd9eb796e97e865824c0c270ab3acec54 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Tue, 26 Nov 2024 04:21:03 +0000 Subject: [PATCH 5/6] commenting to build --- core/chains/evm/client/simulated_backend_client.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/chains/evm/client/simulated_backend_client.go b/core/chains/evm/client/simulated_backend_client.go index 654aebf0a7..083162c768 100644 --- a/core/chains/evm/client/simulated_backend_client.go +++ b/core/chains/evm/client/simulated_backend_client.go @@ -717,13 +717,14 @@ func (c *SimulatedBackendClient) ethGetHeaderByNumber(ctx context.Context, resul } func (c *SimulatedBackendClient) LatestFinalizedBlock(ctx context.Context) (*evmtypes.Head, error) { - block := c.b.Blockchain().CurrentFinalBlock() + // block := c.b.Blockchain().CurrentFinalBlock() + block, _ := c.b.BlockByNumber(ctx, big.NewInt(0)) return &evmtypes.Head{ EVMChainID: ubig.NewI(c.chainId.Int64()), Hash: block.Hash(), - Number: block.Number.Int64(), - ParentHash: block.ParentHash, - Timestamp: time.Unix(int64(block.Time), 0), + // Number: block.Number.Int64(), + // ParentHash: block.ParentHash, + // Timestamp: time.Unix(int64(block.Time), 0), }, nil } From e2a529d8612771be7cacf3652b3e21a9f01d9172 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Tue, 26 Nov 2024 05:55:35 +0000 Subject: [PATCH 6/6] removing wrapper comments --- core/gethwrappers/abigen.go | 14 +++++++------- .../ccip/generated/commit_store/commit_store.go | 14 +++++++------- .../evm_2_evm_offramp/evm_2_evm_offramp.go | 14 +++++++------- .../generated/evm_2_evm_onramp/evm_2_evm_onramp.go | 14 +++++++------- .../ccip/generated/fee_quoter/fee_quoter.go | 14 +++++++------- .../ccip/generated/link_token/link_token.go | 14 +++++++------- .../lock_release_token_pool.go | 14 +++++++------- .../registry_module_owner_custom.go | 14 +++++++------- .../ccip/generated/rmn_contract/rmn_contract.go | 14 +++++++------- .../rmn_proxy_contract/rmn_proxy_contract.go | 14 +++++++------- core/gethwrappers/ccip/generated/router/router.go | 14 +++++++------- .../self_funded_ping_pong/self_funded_ping_pong.go | 14 +++++++------- .../token_admin_registry/token_admin_registry.go | 14 +++++++------- core/gethwrappers/ccip/generated/weth9/weth9.go | 14 +++++++------- 14 files changed, 98 insertions(+), 98 deletions(-) diff --git a/core/gethwrappers/abigen.go b/core/gethwrappers/abigen.go index 19c149e3fd..6f2df3b090 100644 --- a/core/gethwrappers/abigen.go +++ b/core/gethwrappers/abigen.go @@ -64,14 +64,14 @@ func DeployZkSync%s(auth *bind.TransactOpts, backend bind.ContractBackend, param if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(%sZkBin) - fmt.Println("deploying") + %sAbi, err := %sMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -88,7 +88,7 @@ func DeployZkSync%s(auth *bind.TransactOpts, backend bind.ContractBackend, param if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -97,7 +97,7 @@ func DeployZkSync%s(auth *bind.TransactOpts, backend bind.ContractBackend, param if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + // this should generated.ConvertToTransaction ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/commit_store/commit_store.go b/core/gethwrappers/ccip/generated/commit_store/commit_store.go index 8e92870f17..77034c40f5 100644 --- a/core/gethwrappers/ccip/generated/commit_store/commit_store.go +++ b/core/gethwrappers/ccip/generated/commit_store/commit_store.go @@ -2120,14 +2120,14 @@ func DeployZkSyncCommitStore(auth *bind.TransactOpts, backend bind.ContractBacke if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(CommitStoreZkBin) - fmt.Println("deploying") + CommitStoreAbi, err := CommitStoreMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2143,7 +2143,7 @@ func DeployZkSyncCommitStore(auth *bind.TransactOpts, backend bind.ContractBacke if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2152,7 +2152,7 @@ func DeployZkSyncCommitStore(auth *bind.TransactOpts, backend bind.ContractBacke if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go b/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go index 465e05ddb6..3d65eba44b 100644 --- a/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go +++ b/core/gethwrappers/ccip/generated/evm_2_evm_offramp/evm_2_evm_offramp.go @@ -2710,14 +2710,14 @@ func DeployZkSyncEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBa if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(EVM2EVMOffRampZkBin) - fmt.Println("deploying") + EVM2EVMOffRampAbi, err := EVM2EVMOffRampMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2733,7 +2733,7 @@ func DeployZkSyncEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBa if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2742,7 +2742,7 @@ func DeployZkSyncEVM2EVMOffRamp(auth *bind.TransactOpts, backend bind.ContractBa if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go b/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go index ebce0c1c67..2b31b67472 100644 --- a/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go +++ b/core/gethwrappers/ccip/generated/evm_2_evm_onramp/evm_2_evm_onramp.go @@ -2369,14 +2369,14 @@ func DeployZkSyncEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBac if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(EVM2EVMOnRampZkBin) - fmt.Println("deploying") + EVM2EVMOnRampAbi, err := EVM2EVMOnRampMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2392,7 +2392,7 @@ func DeployZkSyncEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBac if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2401,7 +2401,7 @@ func DeployZkSyncEVM2EVMOnRamp(auth *bind.TransactOpts, backend bind.ContractBac if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go index e7477c2e58..7545217a16 100644 --- a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go +++ b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go @@ -2959,14 +2959,14 @@ func DeployZkSyncFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(FeeQuoterZkBin) - fmt.Println("deploying") + FeeQuoterAbi, err := FeeQuoterMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2982,7 +2982,7 @@ func DeployZkSyncFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2991,7 +2991,7 @@ func DeployZkSyncFeeQuoter(auth *bind.TransactOpts, backend bind.ContractBackend if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/link_token/link_token.go b/core/gethwrappers/ccip/generated/link_token/link_token.go index 04d8b15fa8..930ed7e2a2 100644 --- a/core/gethwrappers/ccip/generated/link_token/link_token.go +++ b/core/gethwrappers/ccip/generated/link_token/link_token.go @@ -1995,14 +1995,14 @@ func DeployZkSyncLinkToken(auth *bind.TransactOpts, backend bind.ContractBackend if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(LinkTokenZkBin) - fmt.Println("deploying") + LinkTokenAbi, err := LinkTokenMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2018,7 +2018,7 @@ func DeployZkSyncLinkToken(auth *bind.TransactOpts, backend bind.ContractBackend if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2027,7 +2027,7 @@ func DeployZkSyncLinkToken(auth *bind.TransactOpts, backend bind.ContractBackend if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go b/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go index fa26ed7b34..cc36d4d9a9 100644 --- a/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go +++ b/core/gethwrappers/ccip/generated/lock_release_token_pool/lock_release_token_pool.go @@ -3231,14 +3231,14 @@ func DeployZkSyncLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.Cont if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(LockReleaseTokenPoolZkBin) - fmt.Println("deploying") + LockReleaseTokenPoolAbi, err := LockReleaseTokenPoolMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -3254,7 +3254,7 @@ func DeployZkSyncLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.Cont if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -3263,7 +3263,7 @@ func DeployZkSyncLockReleaseTokenPool(auth *bind.TransactOpts, backend bind.Cont if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go b/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go index 929f9965a4..ea7f7acbef 100644 --- a/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go +++ b/core/gethwrappers/ccip/generated/registry_module_owner_custom/registry_module_owner_custom.go @@ -423,14 +423,14 @@ func DeployZkSyncRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(RegistryModuleOwnerCustomZkBin) - fmt.Println("deploying") + RegistryModuleOwnerCustomAbi, err := RegistryModuleOwnerCustomMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -446,7 +446,7 @@ func DeployZkSyncRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -455,7 +455,7 @@ func DeployZkSyncRegistryModuleOwnerCustom(auth *bind.TransactOpts, backend bind if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go b/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go index 023d1745a6..a8d4ef158b 100644 --- a/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go +++ b/core/gethwrappers/ccip/generated/rmn_contract/rmn_contract.go @@ -2754,14 +2754,14 @@ func DeployZkSyncRMNContract(auth *bind.TransactOpts, backend bind.ContractBacke if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(RMNContractZkBin) - fmt.Println("deploying") + RMNContractAbi, err := RMNContractMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -2777,7 +2777,7 @@ func DeployZkSyncRMNContract(auth *bind.TransactOpts, backend bind.ContractBacke if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -2786,7 +2786,7 @@ func DeployZkSyncRMNContract(auth *bind.TransactOpts, backend bind.ContractBacke if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go b/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go index 398e43b4aa..215126a984 100644 --- a/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go +++ b/core/gethwrappers/ccip/generated/rmn_proxy_contract/rmn_proxy_contract.go @@ -756,14 +756,14 @@ func DeployZkSyncRMNProxyContract(auth *bind.TransactOpts, backend bind.Contract if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(RMNProxyContractZkBin) - fmt.Println("deploying") + RMNProxyContractAbi, err := RMNProxyContractMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -779,7 +779,7 @@ func DeployZkSyncRMNProxyContract(auth *bind.TransactOpts, backend bind.Contract if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -788,7 +788,7 @@ func DeployZkSyncRMNProxyContract(auth *bind.TransactOpts, backend bind.Contract if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/router/router.go b/core/gethwrappers/ccip/generated/router/router.go index bdf279bb0c..ed0b93687d 100644 --- a/core/gethwrappers/ccip/generated/router/router.go +++ b/core/gethwrappers/ccip/generated/router/router.go @@ -1404,14 +1404,14 @@ func DeployZkSyncRouter(auth *bind.TransactOpts, backend bind.ContractBackend, p if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(RouterZkBin) - fmt.Println("deploying") + RouterAbi, err := RouterMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -1427,7 +1427,7 @@ func DeployZkSyncRouter(auth *bind.TransactOpts, backend bind.ContractBackend, p if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -1436,7 +1436,7 @@ func DeployZkSyncRouter(auth *bind.TransactOpts, backend bind.ContractBackend, p if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go index 2f4e4c2475..77511e5a91 100644 --- a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go +++ b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go @@ -1498,14 +1498,14 @@ func DeployZkSyncSelfFundedPingPong(auth *bind.TransactOpts, backend bind.Contra if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(SelfFundedPingPongZkBin) - fmt.Println("deploying") + SelfFundedPingPongAbi, err := SelfFundedPingPongMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -1521,7 +1521,7 @@ func DeployZkSyncSelfFundedPingPong(auth *bind.TransactOpts, backend bind.Contra if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -1530,7 +1530,7 @@ func DeployZkSyncSelfFundedPingPong(auth *bind.TransactOpts, backend bind.Contra if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go b/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go index a3348a3906..7976c722af 100644 --- a/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go +++ b/core/gethwrappers/ccip/generated/token_admin_registry/token_admin_registry.go @@ -1497,14 +1497,14 @@ func DeployZkSyncTokenAdminRegistry(auth *bind.TransactOpts, backend bind.Contra if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(TokenAdminRegistryZkBin) - fmt.Println("deploying") + TokenAdminRegistryAbi, err := TokenAdminRegistryMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -1520,7 +1520,7 @@ func DeployZkSyncTokenAdminRegistry(auth *bind.TransactOpts, backend bind.Contra if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -1529,7 +1529,7 @@ func DeployZkSyncTokenAdminRegistry(auth *bind.TransactOpts, backend bind.Contra if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress diff --git a/core/gethwrappers/ccip/generated/weth9/weth9.go b/core/gethwrappers/ccip/generated/weth9/weth9.go index 9820f08f96..4d2286d9b7 100644 --- a/core/gethwrappers/ccip/generated/weth9/weth9.go +++ b/core/gethwrappers/ccip/generated/weth9/weth9.go @@ -993,14 +993,14 @@ func DeployZkSyncWETH9(auth *bind.TransactOpts, backend bind.ContractBackend, pa if !ok { return common.Address{}, nil, nil, errors.New("backend is not an ethclient") } - fmt.Println("Deploying zksync contract") + zksyncClient := zkSyncClient.NewClient(client.Client()) - fmt.Println("getting wallet") + wallet := auth.Context.Value("wallet").(*zkSyncAccounts.Wallet) - fmt.Println("got wallet") - fmt.Println("getting bytes") + + decodedBytes := common.FromHex(WETH9ZkBin) - fmt.Println("deploying") + WETH9Abi, err := WETH9MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -1016,7 +1016,7 @@ func DeployZkSyncWETH9(auth *bind.TransactOpts, backend bind.ContractBackend, pa if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("hash of tx", hash) + receipt, err := zksyncClient.WaitMined(context.Background(), hash) if err != nil { return common.Address{}, nil, nil, err @@ -1025,7 +1025,7 @@ func DeployZkSyncWETH9(auth *bind.TransactOpts, backend bind.ContractBackend, pa if err != nil { return common.Address{}, nil, nil, err } - fmt.Println("tx hash", tx.Hash) + ethTx := ConvertToTransaction(*tx) address := receipt.ContractAddress