[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "IXERC20_INVALID_0_VALUE", "type": "error" }, { "inputs": [], "name": "IXERC20_NotFactory", "type": "error" }, { "inputs": [], "name": "IXERC20_NotHighEnoughLimits", "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": false, "internalType": "uint256", "name": "_mintingLimit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_burningLimit", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_bridge", "type": "address" } ], "name": "BridgeLimitsSet", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_lockbox", "type": "address" } ], "name": "LockboxSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "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" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FACTORY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "address", "name": "", "type": "address" } ], "name": "bridges", "outputs": [ { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "ratePerSecond", "type": "uint256" }, { "internalType": "uint256", "name": "maxLimit", "type": "uint256" }, { "internalType": "uint256", "name": "currentLimit", "type": "uint256" } ], "internalType": "struct IXERC20.BridgeParameters", "name": "minterParams", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "ratePerSecond", "type": "uint256" }, { "internalType": "uint256", "name": "maxLimit", "type": "uint256" }, { "internalType": "uint256", "name": "currentLimit", "type": "uint256" } ], "internalType": "struct IXERC20.BridgeParameters", "name": "burnerParams", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridge", "type": "address" } ], "name": "burningCurrentLimitOf", "outputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridge", "type": "address" } ], "name": "burningMaxLimitOf", "outputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "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": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_factory", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lockbox", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridge", "type": "address" } ], "name": "mintingCurrentLimitOf", "outputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridge", "type": "address" } ], "name": "mintingMaxLimitOf", "outputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridge", "type": "address" }, { "internalType": "uint256", "name": "_mintingLimit", "type": "uint256" }, { "internalType": "uint256", "name": "_burningLimit", "type": "uint256" } ], "name": "setLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_lockbox", "type": "address" } ], "name": "setLockbox", "outputs": [], "stateMutability": "nonpayable", "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": "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61269780620000ed5f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063715018a6116100fe578063a08d56541161009e578063ced67f0c1161006e578063ced67f0c14610423578063d505accf146104b5578063dd62ed3e146104c8578063f2fde38b14610500575f80fd5b8063a08d5654146103be578063a457c2d7146103d1578063a9059cbb146103e4578063c1eb7137146103f7575f80fd5b80638da5cb5b116100d95780638da5cb5b1461037f57806395d89b4114610390578063998955d3146103985780639dc29fac146103ab575f80fd5b8063715018a6146103495780637ecebe001461035157806384b0196e14610364575f80fd5b8063313ce56711610174578063435350b711610144578063435350b7146102e8578063651fd268146102fb57806366cc57021461030e57806370a0823114610321575f80fd5b8063313ce567146102ab5780633644e515146102ba57806339509351146102c257806340c10f19146102d5575f80fd5b80630c05f82c116101af5780630c05f82c1461022b57806318160ddd1461026557806323b872dd1461026d5780632dd3100014610280575f80fd5b806306fdde03146101d5578063077f224a146101f3578063095ea7b314610208575b5f80fd5b6101dd610513565b6040516101ea919061202e565b60405180910390f35b61020661020136600461212f565b6105a3565b005b61021b61021636600461219e565b61076c565b60405190151581526020016101ea565b6102576102393660046121c6565b6001600160a01b03165f908152610100602052604090206002015490565b6040519081526020016101ea565b603554610257565b61021b61027b3660046121df565b610785565b60fe54610293906001600160a01b031681565b6040516001600160a01b0390911681526020016101ea565b604051601281526020016101ea565b6102576107aa565b61021b6102d036600461219e565b6107b8565b6102066102e336600461219e565b6107f6565b6102066102f63660046121c6565b610805565b6102576103093660046121c6565b6108b5565b60ff54610293906001600160a01b031681565b61025761032f3660046121c6565b6001600160a01b03165f9081526033602052604090205490565b6102066108e9565b61025761035f3660046121c6565b6108fc565b61036c610919565b6040516101ea9796959493929190612218565b6065546001600160a01b0316610293565b6101dd6109d6565b6102576103a63660046121c6565b6109e5565b6102066103b936600461219e565b610a1c565b6102066103cc3660046122c8565b610a42565b61021b6103df36600461219e565b610aa7565b61021b6103f236600461219e565b610b5b565b6102576104053660046121c6565b6001600160a01b03165f908152610100602052604090206006015490565b6104a76104313660046121c6565b61010060209081525f9182526040918290208251608080820185528254825260018301548285015260028301548286015260038301546060808401919091528551918201865260048401548252600584015494820194909452600683015494810194909452600790910154918301919091529082565b6040516101ea9291906122f8565b6102066104c3366004612344565b610b68565b6102576104d63660046123b1565b6001600160a01b039182165f90815260346020908152604080832093909416825291909152205490565b61020661050e3660046121c6565b610cc9565b606060368054610522906123e2565b80601f016020809104026020016040519081016040528092919081815260200182805461054e906123e2565b80156105995780601f1061057057610100808354040283529160200191610599565b820191905f5260205f20905b81548152906001019060200180831161057c57829003601f168201915b5050505050905090565b5f54610100900460ff16158080156105c157505f54600160ff909116105b806105da5750303b1580156105da57505f5460ff166001145b6106515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156106ad575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106b78484610d59565b6106c084610ddf565b6106c8610e9a565b6106d182610f1e565b60fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790558015610766575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f33610779818585610f87565b60019150505b92915050565b5f336107928582856110de565b61079d858585611187565b60019150505b9392505050565b5f6107b3611379565b905090565b335f8181526034602090815260408083206001600160a01b038716845290915281205490919061077990829086906107f190879061245a565b610f87565b610801338383611382565b5050565b60fe546001600160a01b03163314610849576040517f2029e52500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527ffa2e15ea41196e438f0593ecdd6036acd83bdfcd39d627b77c17eab43f376a399060200160405180910390a150565b6001600160a01b0381165f9081526101006020526040812060038101546002820154825460019093015461077f9390611431565b6108f16114a7565b6108fa5f610f1e565b565b6001600160a01b0381165f90815260cb602052604081205461077f565b5f6060805f805f60606097545f801b1480156109355750609854155b6109815760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610648565b610989611501565b610991611510565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606060378054610522906123e2565b6001600160a01b0381165f9081526101006020526040812060078101546006820154600483015460059093015461077f9390611431565b336001600160a01b03831614610a3757610a378233836110de565b61080133838361151f565b610a4a6114a7565b610a5483836115c9565b610a5e838261166d565b60408051838152602081018390526001600160a01b038516917f93f3bbfe8cfb354ec059175107653f49f6eb479a8622a7d83866ea015435c944910160405180910390a2505050565b335f8181526034602090815260408083206001600160a01b038716845290915281205490919083811015610b435760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610648565b610b508286868403610f87565b506001949350505050565b5f33610779818585611187565b83421115610bb85760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610648565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610be68c611717565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610c408261173e565b90505f610c4f82878787611785565b9050896001600160a01b0316816001600160a01b031614610cb25760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610648565b610cbd8a8a8a610f87565b50505050505050505050565b610cd16114a7565b6001600160a01b038116610d4d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610648565b610d5681610f1e565b50565b5f54610100900460ff16610dd55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b61080182826117ab565b5f54610100900460ff16610e5b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b610d56816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611840565b5f54610100900460ff16610f165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b6108fa6118e3565b606580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166110025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b03821661107e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b038381165f8181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610766578181101561117a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610648565b6107668484848403610f87565b6001600160a01b0383166112035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b03821661127f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b0383165f908152603360205260409020548181101561130d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b038085165f8181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061136c9086815260200190565b60405180910390a3610766565b5f6107b3611968565b805f036113bb576040517f10915ea400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff546001600160a01b03848116911614611422575f6113da846108b5565b905081811015611416576040517f0b6842aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61142084836119db565b505b61142c8282611a30565b505050565b8383811461149f5742611447620151808561245a565b1161145357508261149f565b42611461620151808561245a565b111561149f575f611472844261246d565b90505f61147f8483612480565b611489908461245a565b9050858111611498578061149a565b855b925050505b949350505050565b6065546001600160a01b031633146108fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610648565b606060998054610522906123e2565b6060609a8054610522906123e2565b805f03611558576040517f10915ea400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff546001600160a01b038481169116146115bf575f611577846109e5565b9050818110156115b3576040517f0b6842aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bd8483611aef565b505b61142c8282611b48565b6001600160a01b0382165f9081526101006020526040812060020154906115ef846108b5565b6001600160a01b0385165f90815261010060205260409020600201849055905061161a838383611cb1565b6001600160a01b0385165f90815261010060205260409020600301556116436201518084612497565b6001600160a01b039094165f90815261010060205260409020600181019490945550504290915550565b6001600160a01b0382165f908152610100602052604081206006015490611693846109e5565b6001600160a01b0385165f9081526101006020526040902060060184905590506116be838383611cb1565b6001600160a01b0385165f90815261010060205260409020600701556116e76201518084612497565b6001600160a01b039094165f90815261010060205260409020600581019490945550504260049092019190915550565b6001600160a01b0381165f90815260cb602052604090208054600181018255905b50919050565b5f61077f61174a611379565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f61179487878787611d06565b915091506117a181611de1565b5095945050505050565b5f54610100900460ff166118275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b6036611833838261251c565b50603761142c828261251c565b5f54610100900460ff166118bc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b60996118c8838261251c565b50609a6118d5828261251c565b50505f609781905560985550565b5f54610100900460ff1661195f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610648565b6108fa33610f1e565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611992611f45565b61199a611f9d565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f6119e5836108b5565b6001600160a01b0384165f908152610100602052604090204290559050611a0c828261246d565b6001600160a01b039093165f90815261010060205260409020600301929092555050565b6001600160a01b038216611a865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610648565b8060355f828254611a97919061245a565b90915550506001600160a01b0382165f818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f611af9836109e5565b6001600160a01b0384165f90815261010060205260409020426004909101559050611b24828261246d565b6001600160a01b039093165f90815261010060205260409020600701929092555050565b6001600160a01b038216611bc45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b0382165f9081526033602052604090205481811015611c525760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610648565b6001600160a01b0383165f8181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b5f8084841115611ce557611cc5858561246d565b9050808311611cd4575f611cde565b611cde818461246d565b9150611cfe565b611cef848661246d565b9050611cfb818461245a565b91505b509392505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d3b57505f90506003611dd8565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611d8c573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611dd2575f60019250925050611dd8565b91505f90505b94509492505050565b5f816004811115611df457611df4612634565b03611dfc5750565b6001816004811115611e1057611e10612634565b03611e5d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610648565b6002816004811115611e7157611e71612634565b03611ebe5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610648565b6003816004811115611ed257611ed2612634565b03610d565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610648565b5f80611f4f611501565b805190915015611f66578051602090910120919050565b6097548015611f755792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f80611fa7611510565b805190915015611fbe578051602090910120919050565b6098548015611f755792915050565b5f81518084525f5b81811015611ff157602081850181015186830182015201611fd5565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107a36020830184611fcd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261207c575f80fd5b813567ffffffffffffffff8082111561209757612097612040565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156120dd576120dd612040565b816040528381528660208588010111156120f5575f80fd5b836020870160208301375f602085830101528094505050505092915050565b80356001600160a01b038116811461212a575f80fd5b919050565b5f805f60608486031215612141575f80fd5b833567ffffffffffffffff80821115612158575f80fd5b6121648783880161206d565b94506020860135915080821115612179575f80fd5b506121868682870161206d565b92505061219560408501612114565b90509250925092565b5f80604083850312156121af575f80fd5b6121b883612114565b946020939093013593505050565b5f602082840312156121d6575f80fd5b6107a382612114565b5f805f606084860312156121f1575f80fd5b6121fa84612114565b925061220860208501612114565b9150604084013590509250925092565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e08184015261225360e084018a611fcd565b8381036040850152612265818a611fcd565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b818110156122b65783518352928401929184019160010161229a565b50909c9b505050505050505050505050565b5f805f606084860312156122da575f80fd5b6122e384612114565b95602085013595506040909401359392505050565b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e082015261010081016107a3565b5f805f805f805f60e0888a03121561235a575f80fd5b61236388612114565b965061237160208901612114565b95506040880135945060608801359350608088013560ff81168114612394575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f80604083850312156123c2575f80fd5b6123cb83612114565b91506123d960208401612114565b90509250929050565b600181811c908216806123f657607f821691505b602082108103611738577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561077f5761077f61242d565b8181038181111561077f5761077f61242d565b808202811582820484141761077f5761077f61242d565b5f826124ca577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b601f82111561142c575f81815260208120601f850160051c810160208610156124f55750805b601f850160051c820191505b8181101561251457828155600101612501565b505050505050565b815167ffffffffffffffff81111561253657612536612040565b61254a8161254484546123e2565b846124cf565b602080601f83116001811461259c575f84156125665750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612514565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156125e8578886015182559484019460019091019084016125c9565b508582101561262457878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220f8f51fdfbd10352b46915ae5c03e4fe68cfb8cd506795172ae3db8c49b248ecf64736f6c63430008150033