Files
2026-03-02 12:14:09 -08:00

446 lines
30 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "TwoWayTokenBridgeL1",
"sourceName": "contracts/bridge/TwoWayTokenBridgeL1.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_router",
"type": "address"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_feeToken",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint64",
"name": "destChain",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "CcipSend",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "l2Bridge",
"type": "address"
}
],
"name": "DestinationAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "DestinationRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "l2Bridge",
"type": "address"
}
],
"name": "DestinationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Locked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Released",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "l2Bridge",
"type": "address"
}
],
"name": "addDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "canonicalToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"internalType": "uint64",
"name": "sourceChainSelector",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "sender",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "enum IRouterClient.TokenAmountType",
"name": "amountType",
"type": "uint8"
}
],
"internalType": "struct IRouterClient.TokenAmount[]",
"name": "tokenAmounts",
"type": "tuple[]"
}
],
"internalType": "struct IRouterClient.Any2EVMMessage",
"name": "message",
"type": "tuple"
}
],
"name": "ccipReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "ccipRouter",
"outputs": [
{
"internalType": "contract IRouterClient",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "changeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "destinationChains",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"name": "destinations",
"outputs": [
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "l2Bridge",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDestinationChains",
"outputs": [
{
"internalType": "uint64[]",
"name": "",
"type": "uint64[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "destSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "lockAndSend",
"outputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "processed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "removeDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "l2Bridge",
"type": "address"
}
],
"name": "updateDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newFee",
"type": "address"
}
],
"name": "updateFeeToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60c0346200013657601f6200153838819003918201601f19168301916001600160401b038311848410176200013b5780849260609460405283398101031262000136576200004d8162000151565b620000696040620000616020850162000151565b930162000151565b916001600160a01b03918216801515806200012a575b806200011e575b15620000ed5760805260a05260018060a01b03199116816000541617600055339060015416176001556040516113d190816200016782396080518181816108a701528181610b100152610d57015260a0518181816103e0015281816109840152610bf30152f35b60405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b6044820152606490fd5b50828416151562000086565b5082821615156200007f565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001365756fe608080604052600436101561001357600080fd5b60009060e08235811c91826309fa215b14610b3f575081630de2298414610afa5781634c133f0614610868578163647846a5146108415781638f283970146107ef57816396c75c5e14610793578163abc343a714610611578163b217be2414610490578163c1f0808a14610461578163c89245d51461040f578163ceb76b55146103ca578163ced719f31461022a578163e0620a941461013657508063f2c2af43146100f35763f851a440146100c857600080fd5b346100f057806003193601126100f0576001546040516001600160a01b039091168152602090f35b80fd5b50346100f05760203660031901126100f057600435906003548210156100f05760206001600160401b03610126846110c3565b90549060031b1c16604051908152f35b905034610226576040366003190112610226577f2dae8bd8211b67fa11381d1e0de2945698c5910d9ba2cabc120b161ea802e6809061017361107c565b61017b611097565b916101c360018060a01b03610195816001541633146112c4565b6101ba60ff6001600160401b03861694858a52600260205260408a2054901c1661132f565b84161515611365565b845260026020526040808520805468010000000000000000600160e01b0319169184901b68010000000000000000600160e01b03169190911790555b604080516001600160401b039290921682526001600160a01b03929092166020820152a180f35b5080fd5b82346100f05760403660031901126100f05761024461107c565b9161024d611097565b60015490916001600160a01b039161026890831633146112c4565b81831691610277831515611365565b6001600160401b039283871691828752600260205260ff6040882054851c1661039c5761030a91604051956102ab87611119565b8487526020870191825260408701946001865289526002602052604089209651166001600160401b031987541617865551168490815490600160401b600160e01b039060401b16906001600160401b0363ffffffff60e01b0116179055565b51825460ff60e01b191690151590911b60ff60e01b1617905560035492600160401b841015610388576101ff816103698660017f4db4426797acc64f4ffbac3f974c24bcf6fa22cc979a57405f1026a98b755db39798016003556110c3565b9091906001600160401b038084549260031b9316831b921b1916179055565b634e487b7160e01b83526041600452602483fd5b60405162461bcd60e51b815260206004820152600660248201526565786973747360d01b6044820152606490fd5b82346100f057806003193601126100f0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346100f05760203660031901126100f0576104296110ad565b6001546001600160a01b03919061044390831633146112c4565b1661044f8115156112fd565b81546001600160a01b03191617815580f35b82346100f05760203660031901126100f05760ff60406020926004358152600484522054166040519015158152f35b905034610226576020366003190112610226576104ab61107c565b60016104c260018060a01b036001541633146112c4565b6104e860ff6001600160401b038094169485875260026020526040872054901c1661132f565b828452600260205260408420805460ff60e01b1916905583815b610536575b847f3e56699e78729087a3e66cfc966bca0dc33f48d3b232219e8626bd4712949dad602086604051908152a180f35b600380548083101561060a57858561054d856110c3565b905490851b1c1614610563575050810181610502565b90925060001991908281019081116105f6579061036985610586610593946110c3565b905490871b1c16916110c3565b815480156105e25791602093917f3e56699e78729087a3e66cfc966bca0dc33f48d3b232219e8626bd4712949dad959301916105ce836110c3565b9091825491841b1b19169055559138610507565b634e487b7160e01b86526031600452602486fd5b634e487b7160e01b87526011600452602487fd5b5050610507565b82346100f057806003193601126100f05760405180600391600354808252826020808094018096600389527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9489915b818184011061074657506106a09554918482821061072d575b828210610711575b8282106106f5575b50106106e7575b5090509592949395038561114a565b60405193838594850191818652518092526040850193925b8281106106c757505050500390f35b83516001600160401b0316855286955093810193928101926001016106b8565b60c01c815201839088610691565b600191946001600160401b038560801c1681520193018461068a565b600191946001600160401b038560401c16815201930184610682565b600191946001600160401b03851681520193018461067a565b94509250906004600184928754906001600160401b03918281168252828160401c168b83015260809281841c16604083015260c01c60608201520196019201905085928794959295610661565b905034610226576020366003190112610226579060ff60609260406001600160401b0393846107c061107c565b1681526002602052205490604051938216845260018060a01b038260401c1660208501521c1615156040820152f35b82346100f05760203660031901126100f0576108096110ad565b600154906001600160a01b039061082333838516146112c4565b16906108308215156112fd565b6001600160a01b0319161760015580f35b82346100f057806003193601126100f057546040516001600160a01b039091168152602090f35b82346100f05760031960203682018113610af6576004356001600160401b0392838211610a8b5760a082360391820112610a8b576001600160a01b03917f000000000000000000000000000000000000000000000000000000000000000083163303610ac35780600401358087526004855260ff604088205416610a935786526004845260408620805460ff1916600117905560648101359160221901821215610a8f5701926004840135908111610a8b5760248401908036038213610a8f578460409181010312610a8b573592818416809403610a8b57604401359083151580610a82575b15610a535760405163a9059cbb60e01b81526001600160a01b0385166004820152602481018390529083908290604490829089907f0000000000000000000000000000000000000000000000000000000000000000165af1908115610a48578591610a1b575b50156109e757907fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e91604051908152a280f35b60405162461bcd60e51b815260048101839052600c60248201526b1c995b19585cd94819985a5b60a21b6044820152606490fd5b610a3b9150833d8511610a41575b610a33818361114a565b81019061116b565b856109b4565b503d610a29565b6040513d87823e3d90fd5b60405162461bcd60e51b8152600481018490526007602482015266626164206d736760c81b6044820152606490fd5b5081151561094e565b8480fd5b8580fd5b60405162461bcd60e51b81526004810186905260086024820152671c995c1b185e595960c21b6044820152606490fd5b60405162461bcd60e51b815260048101859052600b60248201526a37b7363c903937baba32b960a91b6044820152606490fd5b8280fd5b82346100f057806003193601126100f0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90915034610af6576060366003190112610af657610b5b61107c565b91610b64611097565b9160443515158061106a575b1561103d57506001600160401b038316845260026020526040842060ff60405191610b9a83611119565b546001600160401b0381168352602083019360018060a01b038260401c1685521c16159060408215910152611008576040516323b872dd60e01b81523360048201523060248201526044803590820152602081606481887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610a48578591610fe9575b5015610fb85760405160443581527f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd6000860203392a2604080516001600160a01b03841660208201526044358183015290815290610c8860608361114a565b60018060a01b0390511690604051916020830152602082528160408101106001600160401b03604084011117610fa457606082016040830181106001600160401b03821117610f905760405284604083015260018060a01b0385541691604051918260a08101106001600160401b0360a085011117610f7c579060409160a0840183528184526020840152016040820152816060820152604051602081018181106001600160401b03821117610f7c576040908152868252608083019190915251632bb74f2960e11b815285927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929160208180610d93868b600484016111c3565b0381875afa908115610a48578591610f4a575b5080610e9d575b5050604091610dd291835194858094819363306ab04160e21b83528a600484016111c3565b03925af1938415610e91578094610e39575b602085807fb1228efac11bdc49c10342577751fdf1418dff5e719621b7825cfe54dfe58c52606088886001600160401b036040519216825260018060a01b0316868201526044356040820152a2604051908152f35b9093506040843d604011610e89575b81610e556040938361114a565b810103126100f057509151917fb1228efac11bdc49c10342577751fdf1418dff5e719621b7825cfe54dfe58c526060610de4565b3d9150610e48565b604051903d90823e3d90fd5b60405163095ea7b360e01b81526001600160a01b03851660048201526024810191909152919360209183916044918391905af1908115610f3f578691610f20575b5015610eed5784913880610dad565b60405162461bcd60e51b815260206004820152600b60248201526a66656520617070726f766560a81b6044820152606490fd5b610f39915060203d602011610a4157610a33818361114a565b38610ede565b6040513d88823e3d90fd5b90506020813d602011610f74575b81610f656020938361114a565b81010312610a8b575138610da6565b3d9150610f58565b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b86526041600452602486fd5b634e487b7160e01b85526041600452602485fd5b60405162461bcd60e51b81526020600482015260096024820152681c1d5b1b0819985a5b60ba1b6044820152606490fd5b611002915060203d602011610a4157610a33818361114a565b38610c2b565b60405162461bcd60e51b815260206004820152600d60248201526c19195cdd08191a5cd8589b1959609a1b6044820152606490fd5b62461bcd60e51b8152602060048201526008602482015267626164206172677360c01b6044820152606490fd5b506001600160a01b0383161515610b70565b600435906001600160401b038216820361109257565b600080fd5b602435906001600160a01b038216820361109257565b600435906001600160a01b038216820361109257565b9060035482101561110357600360005260188260021c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b019260031b1690565b634e487b7160e01b600052603260045260246000fd5b606081019081106001600160401b0382111761113457604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761113457604052565b90816020910312611092575180151581036110925790565b919082519283825260005b8481106111af575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161118e565b909291926001600160401b036040911682526020916040838201526111f4855160a0604084015260e0830190611183565b9183860151611212603f199460609286868303016060870152611183565b604088015195858583030160808601528080885193848152019701936000936000915b848310611270575050505050505060c0608061126d959660018060a01b0360608201511660a085015201519282850301910152611183565b90565b90919293949598818a5160018060a01b0381511683528681015187840152015160028110156112b057828201528201988401959493926001019190611235565b634e487b7160e01b88526021600452602488fd5b156112cb57565b60405162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b6044820152606490fd5b1561130457565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b1561133657565b60405162461bcd60e51b81526020600482015260076024820152666d697373696e6760c81b6044820152606490fd5b1561136c57565b60405162461bcd60e51b81526020600482015260076024820152663d32b93790361960c91b6044820152606490fdfea264697066735822122021b19730de58d4c5fe091d50ae97b0a3b70da40d558a374ccc39a06a630734f064736f6c63430008160033",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c91826309fa215b14610b3f575081630de2298414610afa5781634c133f0614610868578163647846a5146108415781638f283970146107ef57816396c75c5e14610793578163abc343a714610611578163b217be2414610490578163c1f0808a14610461578163c89245d51461040f578163ceb76b55146103ca578163ced719f31461022a578163e0620a941461013657508063f2c2af43146100f35763f851a440146100c857600080fd5b346100f057806003193601126100f0576001546040516001600160a01b039091168152602090f35b80fd5b50346100f05760203660031901126100f057600435906003548210156100f05760206001600160401b03610126846110c3565b90549060031b1c16604051908152f35b905034610226576040366003190112610226577f2dae8bd8211b67fa11381d1e0de2945698c5910d9ba2cabc120b161ea802e6809061017361107c565b61017b611097565b916101c360018060a01b03610195816001541633146112c4565b6101ba60ff6001600160401b03861694858a52600260205260408a2054901c1661132f565b84161515611365565b845260026020526040808520805468010000000000000000600160e01b0319169184901b68010000000000000000600160e01b03169190911790555b604080516001600160401b039290921682526001600160a01b03929092166020820152a180f35b5080fd5b82346100f05760403660031901126100f05761024461107c565b9161024d611097565b60015490916001600160a01b039161026890831633146112c4565b81831691610277831515611365565b6001600160401b039283871691828752600260205260ff6040882054851c1661039c5761030a91604051956102ab87611119565b8487526020870191825260408701946001865289526002602052604089209651166001600160401b031987541617865551168490815490600160401b600160e01b039060401b16906001600160401b0363ffffffff60e01b0116179055565b51825460ff60e01b191690151590911b60ff60e01b1617905560035492600160401b841015610388576101ff816103698660017f4db4426797acc64f4ffbac3f974c24bcf6fa22cc979a57405f1026a98b755db39798016003556110c3565b9091906001600160401b038084549260031b9316831b921b1916179055565b634e487b7160e01b83526041600452602483fd5b60405162461bcd60e51b815260206004820152600660248201526565786973747360d01b6044820152606490fd5b82346100f057806003193601126100f0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346100f05760203660031901126100f0576104296110ad565b6001546001600160a01b03919061044390831633146112c4565b1661044f8115156112fd565b81546001600160a01b03191617815580f35b82346100f05760203660031901126100f05760ff60406020926004358152600484522054166040519015158152f35b905034610226576020366003190112610226576104ab61107c565b60016104c260018060a01b036001541633146112c4565b6104e860ff6001600160401b038094169485875260026020526040872054901c1661132f565b828452600260205260408420805460ff60e01b1916905583815b610536575b847f3e56699e78729087a3e66cfc966bca0dc33f48d3b232219e8626bd4712949dad602086604051908152a180f35b600380548083101561060a57858561054d856110c3565b905490851b1c1614610563575050810181610502565b90925060001991908281019081116105f6579061036985610586610593946110c3565b905490871b1c16916110c3565b815480156105e25791602093917f3e56699e78729087a3e66cfc966bca0dc33f48d3b232219e8626bd4712949dad959301916105ce836110c3565b9091825491841b1b19169055559138610507565b634e487b7160e01b86526031600452602486fd5b634e487b7160e01b87526011600452602487fd5b5050610507565b82346100f057806003193601126100f05760405180600391600354808252826020808094018096600389527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9489915b818184011061074657506106a09554918482821061072d575b828210610711575b8282106106f5575b50106106e7575b5090509592949395038561114a565b60405193838594850191818652518092526040850193925b8281106106c757505050500390f35b83516001600160401b0316855286955093810193928101926001016106b8565b60c01c815201839088610691565b600191946001600160401b038560801c1681520193018461068a565b600191946001600160401b038560401c16815201930184610682565b600191946001600160401b03851681520193018461067a565b94509250906004600184928754906001600160401b03918281168252828160401c168b83015260809281841c16604083015260c01c60608201520196019201905085928794959295610661565b905034610226576020366003190112610226579060ff60609260406001600160401b0393846107c061107c565b1681526002602052205490604051938216845260018060a01b038260401c1660208501521c1615156040820152f35b82346100f05760203660031901126100f0576108096110ad565b600154906001600160a01b039061082333838516146112c4565b16906108308215156112fd565b6001600160a01b0319161760015580f35b82346100f057806003193601126100f057546040516001600160a01b039091168152602090f35b82346100f05760031960203682018113610af6576004356001600160401b0392838211610a8b5760a082360391820112610a8b576001600160a01b03917f000000000000000000000000000000000000000000000000000000000000000083163303610ac35780600401358087526004855260ff604088205416610a935786526004845260408620805460ff1916600117905560648101359160221901821215610a8f5701926004840135908111610a8b5760248401908036038213610a8f578460409181010312610a8b573592818416809403610a8b57604401359083151580610a82575b15610a535760405163a9059cbb60e01b81526001600160a01b0385166004820152602481018390529083908290604490829089907f0000000000000000000000000000000000000000000000000000000000000000165af1908115610a48578591610a1b575b50156109e757907fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e91604051908152a280f35b60405162461bcd60e51b815260048101839052600c60248201526b1c995b19585cd94819985a5b60a21b6044820152606490fd5b610a3b9150833d8511610a41575b610a33818361114a565b81019061116b565b856109b4565b503d610a29565b6040513d87823e3d90fd5b60405162461bcd60e51b8152600481018490526007602482015266626164206d736760c81b6044820152606490fd5b5081151561094e565b8480fd5b8580fd5b60405162461bcd60e51b81526004810186905260086024820152671c995c1b185e595960c21b6044820152606490fd5b60405162461bcd60e51b815260048101859052600b60248201526a37b7363c903937baba32b960a91b6044820152606490fd5b8280fd5b82346100f057806003193601126100f0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90915034610af6576060366003190112610af657610b5b61107c565b91610b64611097565b9160443515158061106a575b1561103d57506001600160401b038316845260026020526040842060ff60405191610b9a83611119565b546001600160401b0381168352602083019360018060a01b038260401c1685521c16159060408215910152611008576040516323b872dd60e01b81523360048201523060248201526044803590820152602081606481887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610a48578591610fe9575b5015610fb85760405160443581527f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd6000860203392a2604080516001600160a01b03841660208201526044358183015290815290610c8860608361114a565b60018060a01b0390511690604051916020830152602082528160408101106001600160401b03604084011117610fa457606082016040830181106001600160401b03821117610f905760405284604083015260018060a01b0385541691604051918260a08101106001600160401b0360a085011117610f7c579060409160a0840183528184526020840152016040820152816060820152604051602081018181106001600160401b03821117610f7c576040908152868252608083019190915251632bb74f2960e11b815285927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929160208180610d93868b600484016111c3565b0381875afa908115610a48578591610f4a575b5080610e9d575b5050604091610dd291835194858094819363306ab04160e21b83528a600484016111c3565b03925af1938415610e91578094610e39575b602085807fb1228efac11bdc49c10342577751fdf1418dff5e719621b7825cfe54dfe58c52606088886001600160401b036040519216825260018060a01b0316868201526044356040820152a2604051908152f35b9093506040843d604011610e89575b81610e556040938361114a565b810103126100f057509151917fb1228efac11bdc49c10342577751fdf1418dff5e719621b7825cfe54dfe58c526060610de4565b3d9150610e48565b604051903d90823e3d90fd5b60405163095ea7b360e01b81526001600160a01b03851660048201526024810191909152919360209183916044918391905af1908115610f3f578691610f20575b5015610eed5784913880610dad565b60405162461bcd60e51b815260206004820152600b60248201526a66656520617070726f766560a81b6044820152606490fd5b610f39915060203d602011610a4157610a33818361114a565b38610ede565b6040513d88823e3d90fd5b90506020813d602011610f74575b81610f656020938361114a565b81010312610a8b575138610da6565b3d9150610f58565b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b86526041600452602486fd5b634e487b7160e01b85526041600452602485fd5b60405162461bcd60e51b81526020600482015260096024820152681c1d5b1b0819985a5b60ba1b6044820152606490fd5b611002915060203d602011610a4157610a33818361114a565b38610c2b565b60405162461bcd60e51b815260206004820152600d60248201526c19195cdd08191a5cd8589b1959609a1b6044820152606490fd5b62461bcd60e51b8152602060048201526008602482015267626164206172677360c01b6044820152606490fd5b506001600160a01b0383161515610b70565b600435906001600160401b038216820361109257565b600080fd5b602435906001600160a01b038216820361109257565b600435906001600160a01b038216820361109257565b9060035482101561110357600360005260188260021c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b019260031b1690565b634e487b7160e01b600052603260045260246000fd5b606081019081106001600160401b0382111761113457604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761113457604052565b90816020910312611092575180151581036110925790565b919082519283825260005b8481106111af575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161118e565b909291926001600160401b036040911682526020916040838201526111f4855160a0604084015260e0830190611183565b9183860151611212603f199460609286868303016060870152611183565b604088015195858583030160808601528080885193848152019701936000936000915b848310611270575050505050505060c0608061126d959660018060a01b0360608201511660a085015201519282850301910152611183565b90565b90919293949598818a5160018060a01b0381511683528681015187840152015160028110156112b057828201528201988401959493926001019190611235565b634e487b7160e01b88526021600452602488fd5b156112cb57565b60405162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b6044820152606490fd5b1561130457565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b1561133657565b60405162461bcd60e51b81526020600482015260076024820152666d697373696e6760c81b6044820152606490fd5b1561136c57565b60405162461bcd60e51b81526020600482015260076024820152663d32b93790361960c91b6044820152606490fdfea264697066735822122021b19730de58d4c5fe091d50ae97b0a3b70da40d558a374ccc39a06a630734f064736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}