@settlemint/solidity-diamond-bond
Version:
Smart contract set to build an enterprise bond usecase in SettleMint
1 lines • 537 kB
JSON
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAddressOfSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBuyingAfterCampaignEnds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCancelCampaign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testClaimAndWithdrawCoupon","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDiamaondReceivesEth","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEditBondParameters","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEditBondParametersWhenBondIsIssued","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFacetLoupeSupportsInterface","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFallback","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFallbackFunction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetCouponDates","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetCouponRates","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testInitializeCampaigns","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIssueBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLoupeFacetAddresses","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLoupeFacets","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testLoupeSselectors","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPauseUnpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveFacet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveAndRescind","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveBondsBeforeOrAfterCampaign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveMoreThanMax","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveWhenNotAvailable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTerminateBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawCouponBeforeAllClaimsReceived","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BondTerminated","inputs":[{"name":"bondId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Cancelled","inputs":[{"name":"bondId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234603157600160ff19600c541617600c55600160ff19601f541617601f55620168f49081620000368239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302e962b71461881a575080630a9254e4146176e15780630d739422146175945780631b4d0cb01461749a5780631ed7831c1461741c57806326616e521461684f57806326e113e21461651b5780632ade3880146163275780633e5e3c23146162a95780633f7286f41461622b57806347ba7710146161eb57806356e3d00214615fdc578063583b0ad514615dc25780635a7d9aaa14615b4c5780635abe5ded14615a8957806366d9a9a01461594c5780637e6e915f146157f657806385226c811461576c5780638a46bf6d1461569e578063916a17c6146155f4578063962482b014614af457806397eb4d8b146146685780639df78cd814613dc7578063a95409b314613955578063ad1565ec14613887578063ae40739614613400578063b0464fdc14613356578063b5508aa9146132cc578063ba414fa6146132a7578063c62a4f591461306c578063d60fa40014612b44578063d906bdf714611132578063d937818414610f7f578063dec02a0514610d58578063e20c9f7114610cca578063eb109a13146109ac578063ec2a0b04146107a4578063f2267ce4146105d7578063f2acf6f014610405578063f88ed61f146102065763fa7626d4146101e1575f80fd5b34610203578060031936011261020357602060ff601f54166040519015158152f35b80fd5b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103f0575b5060206102b46001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b835260048301619066565b03925af1801561039a576103bd575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103a8575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a576103895750f35b8161039391618bfa565b6102035780f35b6040513d84823e3d90fd5b50fd5b816103b291618bfa565b61020357805f61032a565b6020813d6020116103e8575b816103d660209383618bfa565b810103126103e457516102c3565b5f80fd5b3d91506103c9565b816103fa91618bfa565b61020357805f61027a565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576105c2575b506001600160a01b0360295416803b156103a5578180916024604051809481937fde99347a000000000000000000000000000000000000000000000000000000008352600160048401525af1801561039a576105ad575b506001600160a01b0360295416803b156103a5578180916024604051809481937f43a19a65000000000000000000000000000000000000000000000000000000008352600160048401525af1801561039a57610598575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103895750f35b816105a291618bfa565b61020357805f61052a565b816105b791618bfa565b61020357805f6104d3565b816105cc91618bfa565b61020357805f61047c565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761078f575b50506001600160a01b0360235416604051907f4b503f0b0000000000000000000000000000000000000000000000000000000082528282600481845afa91821561076057839261076b575b5060207fffffffff000000000000000000000000000000000000000000000000000000006106d26001600160a01b036029541694618d63565b51166024604051809581937fcdffacc600000000000000000000000000000000000000000000000000000000835260048301525afa8015610760578390610721575b61071e92506194d2565b80f35b506020823d602011610758575b8161073b60209383618bfa565b810103126107545761074f61071e92618c1d565b610714565b8280fd5b3d915061072e565b6040513d85823e3d90fd5b6107889192503d8085833e6107808183618bfa565b810190618cd0565b905f610699565b8161079991618bfa565b61020357805f61064e565b50346102035780600319360112610203576001600160a01b03602354166040517f4b503f0b0000000000000000000000000000000000000000000000000000000081528281600481855afa908115610760578391610992575b506040519161080b83618bde565b825260208201526004826001600160a01b0360295416604051928380927f7a0ed6270000000000000000000000000000000000000000000000000000000082525afa90811561076057839161087d575b506001600160a01b036108748161071e94511692618cf9565b515116906194d2565b90503d8084833e61088e8183618bfa565b81019060208183031261098a5780519067ffffffffffffffff821161098e570181601f8201121561098a578051906108c582618c31565b926108d36040519485618bfa565b82845260208085019360051b830101918183116109865760208101935b83851061090b57506001600160a01b03935061085b92505050565b845167ffffffffffffffff8111610982578201906040601f198386030112610982576040519061093a82618bde565b61094660208401618c1d565b825260408301519167ffffffffffffffff831161097e5761096f86602080969581960101618c49565b838201528152019401936108f0565b8a80fd5b8880fd5b8680fd5b8380fd5b8480fd5b6109a691503d8085833e6107808183618bfa565b5f6107fd565b5034610203578060031936011261020357806001600160a01b0360205416604051906109d782618bc1565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c08301526113886101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57610cb1575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f491cc7c2000000000000000000000000000000000000000000000000000000008152818180610bf160048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610c9c575b50507fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a9602060405160028152a1806001600160a01b0360295416803b156103a5578180916024604051809481937f40e58ee5000000000000000000000000000000000000000000000000000000008352600260048401525af1801561039a576103895750f35b81610ca691618bfa565b61020357805f610c16565b81610cbb91618bfa565b61020357805f610b86565b5050fd5b503461020357806003193601126102035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610d3957610d3585610d2981870382618bfa565b604051918291826189d5565b0390f35b82546001600160a01b0316845260209093019260019283019201610d12565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610f6a575b506020610e066001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b835260048301619066565b03925af1801561039a57610f3b575b50806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610f26575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947f25830db300000000000000000000000000000000000000000000000000000000825260606004830152610f0860648301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b9060016024840152604483015203925af1801561039a576103895750f35b81610f3091618bfa565b61020357805f610e79565b6020813d602011610f62575b81610f5460209383618bfa565b810103126103e45751610e15565b3d9150610f47565b81610f7491618bfa565b61020357805f610dcc565b503461020357806003193601126102035760405190610f9d82618bde565b6107b282526107b3602083015260405191610fb783618bde565b600183526001602084015260405192610fcf84618bde565b60018452600160208501526024836001600160a01b0360295416604051928380927fa8314de7000000000000000000000000000000000000000000000000000000008252600160048301525afa92831561112757849385928691611096575b50855b8151811015611092578061105c61104a60019385618d93565b5161105583876194c1565b519061955e565b6110746110698287618d93565b5161105583896194c1565b61108c6110818289618d93565b51611055838c6194c1565b01611031565b8680f35b94505090503d8085853e6110aa8185618bfa565b83019060608483031261098e57835167ffffffffffffffff811161112357826110d4918601618edf565b91602085015167ffffffffffffffff811161098657816110f5918701618edf565b9460408101519067ffffffffffffffff821161111f57611116929101618edf565b9193915f61102e565b8780fd5b8580fd5b6040513d86823e3d90fd5b5034610203578060031936011261020357806001600160a01b03602054166040519061115d82618bc1565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600660c0830152606460e0830152600a610100830152606461012083015261014082018381526101608301848152610180840191601883526101a08501908682526101c086019087825260056101e088015261020087019360028552886102208901526102408801968988526102608901526001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612ad757604051906303223eab60e11b82526004820152898160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612b2f575b50506001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612b1a575b50506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612ad757604051906303223eab60e11b82526004820152898160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612b05575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098257604051633d21120560e21b8152898160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612af0575b50506001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612adb575b505060038852600185526001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612ab7575b5050600a60649260048a52600287525252600285526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612aa2575b5050600586526002835260028152600485526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612a8d575b5050600686526001835260038152600485526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612a6d575b5050600c906007875287845252600484526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a58575b50506008855260028252600281526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a43575b50506009855260018252600381526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a2e575b5050600a855285825260038452600c81526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a19575b5050600b8552600182526003845260028152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561112357604051633d21120560e21b8152868160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129cf578791612a04575b50506001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf5787916129ef575b5050600c855285825260038452600b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561112357604051633d21120560e21b8152868160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129cf5787916129da575b50506001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf5787916129ba575b5090600d865281835281855252600b8252737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098e57604051633d21120560e21b8152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129465786916129a5575b50506001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612990575b5050600e845260018152848352600b8252737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098e57604051633d21120560e21b8152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561294657869161297b575b50506001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612966575b5050600f845284815260018352601882526001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612951575b5050601084526001815260018352601882526001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612931575b50506018926002600192601187525252526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829081838161028481015b03925af1801561039a57610598575050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103895750f35b8161293b91618bfa565b61098e57845f612790565b6040513d88823e3d90fd5b8161295b91618bfa565b61098e57845f61265b565b8161297091618bfa565b61098e57845f612527565b8161298591618bfa565b61098e57845f612402565b8161299a91618bfa565b61098e57845f61239e565b816129af91618bfa565b61098e57845f612279565b816129c491618bfa565b61112357855f612215565b6040513d89823e3d90fd5b816129e491618bfa565b61112357855f6120f0565b816129f991618bfa565b61112357855f61208c565b81612a0e91618bfa565b61112357855f611f67565b81612a2391618bfa565b61112357855f611f02565b81612a3891618bfa565b61112357855f611dce565b81612a4d91618bfa565b61112357855f611c9d565b81612a6291618bfa565b61112357855f611b6c565b81612a7791618bfa565b61098657865f611a38565b6040513d8a823e3d90fd5b81612a9791618bfa565b61098657865f611903565b81612aac91618bfa565b61098657865f6117ce565b81612ac191618bfa565b61098257885f611696565b6040513d8c823e3d90fd5b8980fd5b81612ae591618bfa565b61098257885f611569565b81612afa91618bfa565b61098257885f611444565b81612b0f91618bfa565b61098257885f6113ef565b81612b2491618bfa565b61098257885f611385565b81612b3991618bfa565b61098257885f611260565b5034610203578060031936011261020357806001600160a01b036020541660405190612b6f82618bc1565b600282526103e86020830152620186a06040830152600260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c083015260056101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57613057575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613042575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761302d575b50602954602154604051634835898d60e11b815260806004820152600e60848201527f626f6e645075726368617365496400000000000000000000000000000000000060a482015260026024820152600160448201526001600160a01b03918216606482015292602092849260c49284929091165af1801561039a57612ffe575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152660e35fa931a00006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57612fe9575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57612fd4575b50602954602154604051634835898d60e11b815260806004820152600e60848201527f626f6e645075726368617365496400000000000000000000000000000000000060a482015260026024820152600160448201526001600160a01b039182166064820152926020928492169082908160c481015b03925af1801561039a57612fa8575080f35b612fc99060203d602011612fcd575b612fc18183618bfa565b810190618f54565b5080f35b503d612fb7565b81612fde91618bfa565b61020357805f612f20565b81612ff391618bfa565b61020357805f612ecd565b6020813d602011613025575b8161301760209383618bfa565b810103126103e45751612e55565b3d915061300a565b8161303791618bfa565b61020357805f612dd4565b8161304c91618bfa565b61020357805f612d81565b8161306191618bfa565b61020357805f612d1e565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613292575b506001600160a01b03602954166024826001600160a01b036023541692604051928380927fadfca15e0000000000000000000000000000000000000000000000000000000082528660048301525afa9081156107605760049284918293613276575b50604051938480927f4b503f0b0000000000000000000000000000000000000000000000000000000082525afa91821561076057839261322e575b506131b77fffffffff000000000000000000000000000000000000000000000000000000006131af8193618cf9565b511692618cf9565b5116737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cc657604051917f7c84c69b000000000000000000000000000000000000000000000000000000008352600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561039a576103895750f35b7fffffffff00000000000000000000000000000000000000000000000000000000809293506131af61326c6131b7933d8089833e6107808183618bfa565b9493505050613180565b61328b9193503d8084833e6107808183618bfa565b915f613145565b8161329c91618bfa565b61020357805f6130e3565b503461020357806003193601126102035760206132c26193e8565b6040519015158152f35b50346102035780600319360112610203576019546132e981618c31565b916132f76040519384618bfa565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106133395760405180610d358782618a91565b60016020819261334885618f63565b815201920192019190613324565b5034610203578060031936011261020357601c5461337381618c31565b916133816040519384618bfa565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106133c35760405180610d358782618b0e565b600260206001926040516133d681618bde565b6001600160a01b0386541681526133ee8587016190be565b838201528152019201920191906133ae565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613872575b5060206134ae6001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b835260048301619066565b03925af1801561039a57613843575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761382e575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a57613819575b506001600160a01b03602b54166001600160a01b0360215416813b15610cc65782916044839260405194859384927f40c10f190000000000000000000000000000000000000000000000000000000084526004840152683635c9adc5dea0000060248401525af1801561039a57613804575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576137ef575b5060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a576137c2575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576137ad575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947fe3adc7ee00000000000000000000000000000000000000000000000000000000825260606004830152610f0860648301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b816137b791618bfa565b61020357805f61371e565b6137e39060203d6020116137e8575b6137db8183618bfa565b810190618f3c565b6136b7565b503d6137d1565b816137f991618bfa565b61020357805f613656565b8161380e91618bfa565b61020357805f6135f3565b8161382391618bfa565b61020357805f613581565b8161383891618bfa565b61020357805f613524565b6020813d60201161386a575b8161385c60209383618bfa565b810103126103e457516134bd565b3d915061384f565b8161387c91618bfa565b61020357805f613474565b503461020357806003193601126102035761071e81806001600160a01b03602954166040518260208201917f15667403000000000000000000000000000000000000000000000000000000008352600481526138e4602482618bfa565b51925af16138f0619362565b5060405190613900606083618bfa565b603982527f46616c6c6261636b2066756e6374696f6e2073686f756c64207265766572742060208301527f666f72206e6f6e2d6578697374656e742066756e6374696f6e0000000000000060408301526195ed565b50346102035780600319360112610203576040805191906139768184618bfa565b60018352601f1901815b818110613d70578280856004826001600160a01b0360235416604051928380927f4b503f0b0000000000000000000000000000000000000000000000000000000082525afa908115610760578391613d56575b50604051906139e182618ba5565b8382526002602083015260408201526139f982618cf9565b52613a0381618cf9565b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cc6576040519063ca669fa760e01b82526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610760578391613d41575b50506001600160a01b0360295416803b15610cc657613ac683916020938360405195869485937f1f931c1c000000000000000000000000000000000000000000000000000000008552606060048601526064850190618da7565b8260248501528284820391600319830160448701525201925af1801561039a57613d2c575b506004816001600160a01b0360295416604051928380927f52ef6b2c0000000000000000000000000000000000000000000000000000000082525afa90811561039a578291613d0a575b5051737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152600660248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561039a57613cf5575b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613ce0575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613ccb575b50506001600160a01b036029541660206001600160a01b03601f5460081c166044604051809481937efdd58e0000000000000000000000000000000000000000000000000000000083526004830152600160248301525afa801561039a57612fa8575080f35b81613cd591618bfa565b610203578082613c65565b81613cea91618bfa565b610203578082613c12565b81613cff91618bfa565b610203578082613bac565b613d2691503d8084833e613d1e8183618bfa565b810190618e5d565b83613b35565b81613d3691618bfa565b610203578082613aeb565b81613d4b91618bfa565b6103a5578184613a6c565b613d6a91503d8085833e6107808183618bfa565b846139d3565b602090604051613d7f81618ba5565b84815284838201526060604082015282828701015201613980565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614653575b506020613e756001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b8352600483016193a1565b03925af1801561039a57614624575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a57614607575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576145f2575b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576145dd575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a576145c8575b506001600160a01b03602b54166001600160a01b0360215416813b15610cc65782916044839260405194859384927f40c10f19000000000000000000000000000000000000000000000000000000008452600484015269021e19e0c9bab240000060248401525af1801561039a576145b3575b506001600160a01b03602b54166001600160a01b0360205416813b15610cc65782916044839260405194859384927f40c10f19000000000000000000000000000000000000000000000000000000008452600484015269021e19e0c9bab240000060248401525af1801561039a5761459e575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614589575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614574575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947fe3adc7ee0000000000000000000000000000000000000000000000000000000082526060600483015261425860648301604090600381527f627031000000000000000000000000000000000000000000000000000000000060208201520190565b9060016024840152604483015203925af1801561039a5761455f575b5060206001600160a01b036029541660446001600160a01b036021541660405194859384927ff97656340000000000000000000000000000000000000000000000000000000084526001600485015260248401525af1801561039a57614530575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761451b575b506001600160a01b0360205416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614506575b5060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a576144e9575b50806001600160a01b0360205416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576144d4575b506001600160a01b03602954166001600160a01b0360215416813b15610cc65782916044839260405194859384927f22e29d590000000000000000000000000000000000000000000000000000000084526001600485015260248401525af1801561039a576103895750f35b816144de91618bfa565b61020357805f614468565b6145019060203d6020116137e8576137db8183618bfa565b614404565b8161451091618bfa565b61020357805f6143a3565b8161452591618bfa565b61020357805f614340565b6020813d602011614557575b8161454960209383618bfa565b810103126103e457516142d5565b3d915061453c565b8161456991618bfa565b61020357805f614274565b8161457e91618bfa565b61020357805f6141c9565b8161459391618bfa565b61020357805f614166565b816145a891618bfa565b61020357805f6140fa565b816145bd91618bfa565b61020357805f614087565b816145d291618bfa565b61020357805f614014565b816145e791618bfa565b61020357805f613fb7565b816145fc91618bfa565b61020357805f613f51565b61461f9060203d6020116137e8576137db8183618bfa565b613ee6565b6020813d60201161464b575b8161463d60209383618bfa565b810103126103e45751613e84565b3d9150614630565b8161465d91618bfa565b61020357805f613e3b565b5034610203578060031936011261020357806001600160a01b03602054166040519061469382618bc1565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c083015260646101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57614adf575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614aca575b5060206001600160a01b03602954166001600160a01b0360215416906040518094818094634835898d60e11b82526080600483015261491160848301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b906002602484015260646044840152606483015203925af1801561039a57614a9b575b50806001600160a01b0360225416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614a86575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614a71575b5060206001600160a01b036029541660c46001600160a01b03602254166040519485938492634835898d60e11b845260806004850152600f60848501527f626f6e645075726368617365496432000000000000000000000000000000000060a4850152600260248501526064604485015260648401525af1801561039a57612fa8575080f35b81614a7b91618bfa565b61020357805f6149eb565b81614a9091618bfa565b61020357805f614998565b6020813d602011614ac2575b81614ab460209383618bfa565b810103126103e45751614934565b3d9150614aa7565b81614ad491618bfa565b61020357805f6148a4565b81614ae991618bfa565b61020357805f614841565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576155df575b506020614ba26001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b8352600483016193a1565b03925af1801561039a576155b0575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a57615593575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761557e575b506001600160a01b0360225416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57615569575b5060206001600160a01b03602954166001600160a01b0360225416906040518094818094634835898d60e11b825260806004830152614d4e60848301604090600381527f627032000000000000000000000000000000000000000000000000000000000060208201520190565b906001602484015260016044840152606483015203925af1801561039a5761553a575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039