From 46a2afe30f6f072ec3f6e4a34e7bd4e6efb772a0 Mon Sep 17 00:00:00 2001 From: 0xRektora <13756173+0xRektora@users.noreply.github.com> Date: Thu, 19 Oct 2023 10:19:06 -0400 Subject: [PATCH] feat: Bar export from `f5280a79bd158390f98559747b65ba35cd4cee92` --- src/artifacts/tapioca-bar/BBBorrow.json | 4 +- src/artifacts/tapioca-bar/BBCollateral.json | 4 +- src/artifacts/tapioca-bar/BBCommon.json | 4 +- .../tapioca-bar/BBLendingCommon.json | 4 +- src/artifacts/tapioca-bar/BBLeverage.json | 4 +- src/artifacts/tapioca-bar/BBLiquidation.json | 22 +- src/artifacts/tapioca-bar/BBStorage.json | 4 +- src/artifacts/tapioca-bar/BaseUSDO.json | 390 +- .../tapioca-bar/BaseUSDOStorage.json | 87 +- src/artifacts/tapioca-bar/BigBang.json | 22 +- src/artifacts/tapioca-bar/MarketERC20.json | 4 +- .../tapioca-bar/MarketLiquidatorReceiver.json | 332 ++ src/artifacts/tapioca-bar/Penrose.json | 36 +- src/artifacts/tapioca-bar/SGLBorrow.json | 17 +- src/artifacts/tapioca-bar/SGLCollateral.json | 17 +- src/artifacts/tapioca-bar/SGLCommon.json | 17 +- .../tapioca-bar/SGLLendingCommon.json | 17 +- src/artifacts/tapioca-bar/SGLLeverage.json | 17 +- src/artifacts/tapioca-bar/SGLLiquidation.json | 40 +- src/artifacts/tapioca-bar/SGLStorage.json | 17 +- src/artifacts/tapioca-bar/Singularity.json | 63 +- src/artifacts/tapioca-bar/Test.json | 4 +- src/artifacts/tapioca-bar/USDO.json | 462 +- src/artifacts/tapioca-bar/USDOCommon.json | 83 - .../tapioca-bar/USDOFlashloanHelper.json | 330 ++ .../tapioca-bar/USDOGenericModule.json | 1783 ++++++ .../USDOLeverageDestinationModule.json | 1813 ++++++ .../tapioca-bar/USDOLeverageModule.json | 291 +- .../USDOMarketDestinationModule.json | 1917 +++++++ .../tapioca-bar/USDOMarketModule.json | 350 +- .../USDOOptionsDestinationModule.json | 1818 ++++++ .../tapioca-bar/USDOOptionsModule.json | 404 +- src/typechain/tapioca-bar/Penrose.ts | 91 + .../tapioca-bar/factories/Penrose__factory.ts | 34 +- .../tapioca-bar/factories/Test__factory.ts | 2 +- .../factories/markets/MarketERC20__factory.ts | 2 +- .../MarketLiquidatorReceiver__factory.ts | 392 ++ .../markets/bigBang/BBBorrow__factory.ts | 2 +- .../markets/bigBang/BBCollateral__factory.ts | 2 +- .../markets/bigBang/BBCommon__factory.ts | 2 +- .../bigBang/BBLendingCommon__factory.ts | 2 +- .../markets/bigBang/BBLeverage__factory.ts | 2 +- .../markets/bigBang/BBLiquidation__factory.ts | 20 +- .../markets/bigBang/BBStorage__factory.ts | 2 +- .../markets/bigBang/BigBang__factory.ts | 20 +- .../tapioca-bar/factories/markets/index.ts | 1 + .../markets/singularity/SGLBorrow__factory.ts | 15 +- .../singularity/SGLCollateral__factory.ts | 15 +- .../markets/singularity/SGLCommon__factory.ts | 15 +- .../singularity/SGLLendingCommon__factory.ts | 15 +- .../singularity/SGLLeverage__factory.ts | 15 +- .../singularity/SGLLiquidation__factory.ts | 38 +- .../singularity/SGLStorage__factory.ts | 15 +- .../singularity/Singularity__factory.ts | 61 +- .../usd0/BaseUSDOStorage__factory.ts | 85 +- .../factories/usd0/BaseUSDO__factory.ts | 428 +- .../usd0/USDOFlashloanHelper__factory.ts | 394 ++ .../factories/usd0/USDO__factory.ts | 476 +- .../tapioca-bar/factories/usd0/index.ts | 1 + .../usd0/modules/USDOCommon__factory.ts | 83 - .../modules/USDOGenericModule__factory.ts | 1855 ++++++ .../USDOLeverageDestinationModule__factory.ts | 1889 ++++++ .../modules/USDOLeverageModule__factory.ts | 287 +- .../USDOMarketDestinationModule__factory.ts | 1995 +++++++ .../usd0/modules/USDOMarketModule__factory.ts | 350 +- .../USDOOptionsDestinationModule__factory.ts | 1895 ++++++ .../modules/USDOOptionsModule__factory.ts | 403 +- .../factories/usd0/modules/index.ts | 4 + src/typechain/tapioca-bar/hardhat.d.ts | 54 + src/typechain/tapioca-bar/index.ts | 12 + .../markets/MarketLiquidatorReceiver.ts | 1123 ++++ .../markets/bigBang/BBLiquidation.ts | 106 +- .../tapioca-bar/markets/bigBang/BigBang.ts | 106 +- src/typechain/tapioca-bar/markets/index.ts | 1 + .../markets/singularity/SGLBorrow.ts | 41 - .../markets/singularity/SGLCollateral.ts | 41 - .../markets/singularity/SGLCommon.ts | 41 - .../markets/singularity/SGLLendingCommon.ts | 41 - .../markets/singularity/SGLLeverage.ts | 41 - .../markets/singularity/SGLLiquidation.ts | 159 +- .../markets/singularity/SGLStorage.ts | 41 - .../markets/singularity/Singularity.ts | 256 +- src/typechain/tapioca-bar/usd0/BaseUSDO.ts | 818 +-- .../tapioca-bar/usd0/BaseUSDOStorage.ts | 156 - src/typechain/tapioca-bar/usd0/USDO.ts | 1138 ++-- .../tapioca-bar/usd0/USDOFlashloanHelper.ts | 1024 ++++ src/typechain/tapioca-bar/usd0/index.ts | 1 + .../tapioca-bar/usd0/modules/USDOCommon.ts | 156 - .../usd0/modules/USDOGenericModule.ts | 4889 ++++++++++++++++ .../modules/USDOLeverageDestinationModule.ts | 5011 ++++++++++++++++ .../usd0/modules/USDOLeverageModule.ts | 612 +- .../modules/USDOMarketDestinationModule.ts | 5086 +++++++++++++++++ .../usd0/modules/USDOMarketModule.ts | 699 +-- .../modules/USDOOptionsDestinationModule.ts | 4947 ++++++++++++++++ .../usd0/modules/USDOOptionsModule.ts | 701 +-- .../tapioca-bar/usd0/modules/index.ts | 4 + 96 files changed, 41449 insertions(+), 7141 deletions(-) create mode 100644 src/artifacts/tapioca-bar/MarketLiquidatorReceiver.json create mode 100644 src/artifacts/tapioca-bar/USDOFlashloanHelper.json create mode 100644 src/artifacts/tapioca-bar/USDOGenericModule.json create mode 100644 src/artifacts/tapioca-bar/USDOLeverageDestinationModule.json create mode 100644 src/artifacts/tapioca-bar/USDOMarketDestinationModule.json create mode 100644 src/artifacts/tapioca-bar/USDOOptionsDestinationModule.json create mode 100644 src/typechain/tapioca-bar/factories/markets/MarketLiquidatorReceiver__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/usd0/modules/USDOGenericModule__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageDestinationModule__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketDestinationModule__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsDestinationModule__factory.ts create mode 100644 src/typechain/tapioca-bar/markets/MarketLiquidatorReceiver.ts create mode 100644 src/typechain/tapioca-bar/usd0/USDOFlashloanHelper.ts create mode 100644 src/typechain/tapioca-bar/usd0/modules/USDOGenericModule.ts create mode 100644 src/typechain/tapioca-bar/usd0/modules/USDOLeverageDestinationModule.ts create mode 100644 src/typechain/tapioca-bar/usd0/modules/USDOMarketDestinationModule.ts create mode 100644 src/typechain/tapioca-bar/usd0/modules/USDOOptionsDestinationModule.ts diff --git a/src/artifacts/tapioca-bar/BBBorrow.json b/src/artifacts/tapioca-bar/BBBorrow.json index 7445b04d..a020a320 100644 --- a/src/artifacts/tapioca-bar/BBBorrow.json +++ b/src/artifacts/tapioca-bar/BBBorrow.json @@ -1621,8 +1621,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a8c9283620001ab8439608051836127cf015260a05183612899015260c05183612799015260e0518361281e01525182612844015251816127fb0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611d865750836302ce728f14611d5d578363078dfbe714611c6a578363095ea7b314611c405783630996efb71461178a5783630c4e84f01461167357836318160ddd146116585783631c9e379b146116205783631da8bf10146115785783631fb8f81a1461155957836323b872dd146113d1578363331960ff146113b257836334ce998a1461138957836334d441d01461136a5783633644e5151461134d57836337b6b7b91461132e57836338d52e0f146113055783633ba0b9a9146112e65783633f741adb146112bd57836340626d8b1461129e57836344de240a1461127f578363473e3ce71461126057836348e4163e146112285783634e71e0c8146111855783635224372c146110ce578363529898f2146110af57836357935462146110905783636b19ad16146110715783636c3d8b8f1461104857836370a08231146110105783637277854714610fd857836374645ff314610ed95783637dc0d1d014610eb05783637ecebe0014610e795783637fa0b84e14610e485783638285ef4014610e1757836387b2793714610ddf5783638c5d0ed314610dc05783638da5cb5b14610d97578363910dd7c814610b62578363959916dc14610b4457836399a9702814610b1b5783639e15e89f14610ae0578363a9059cbb14610a05578363b0e21e8a146109e6578363b27c0e74146109b4578363b7113f1914610990578363bb4cfe3b14610971578363bde39c5d14610952578363c1ad5c8d1461092e578363cd0211eb146105b3578363ce8849ed1461058a578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea61376b565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611dcd565b826103e8611de8565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105865761044a36611e1c565b918394989597934211610555579161050a91610512938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612aef565b90558c8751956020870197600080516020613997833981519152895260008a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b5190206104db612796565b915190602082019261190160f01b8452602283015260428201526042815261050281611f69565b519020612a6a565b91909161296b565b160361052457506102ea939450612b4c565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206139778339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206139578339815191526044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f576105cf611dcd565b916105d8611de8565b936105e1611e0d565b50606435600183526020956007875261060060ff868620541615612ba3565b6001600160a01b03918183169161061930841415612be0565b610621612297565b505061062b61376b565b61067061065f6106428461063d6131be565b613434565b90506011549060ff61065789600d5416613121565b1691856132e1565b61066a811515612c2b565b89613364565b8286526017895286862054808311610926575b5081156108eb5781610694916138c2565b96818810156108b057828652602489528686206106b28982546120a4565b90556106c08261063d6131be565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b528888206106f88582546120a4565b90558989888860095416868c600e546107268651978896879586946311a5cc7760e31b865230928601613893565b03925af180156108a6578c9388938c8e9998979461075b94610878575b505061074f878a6120a4565b80610855575b506120a4565b806107cf575b50895193845216916000805160206139b78339815191529190a4600a541690813b15610586578351632ebe913360e21b81529183918391829084905af180156107c5576107b1575b505051908152f35b6107bb8291611f09565b6102ed57806107a9565b83513d84823e3d90fd5b925092939450600d541690813b1561085157610804889283928b51948580948193632770a7eb60e21b83528d30908401613862565b03925af1801561084757918a918a959493610822575b908691610761565b6000805160206139b783398151915292919861083e8892611f09565b9891925061081a565b88513d89823e3d90fd5b8780fd5b610872915061086b620186a091601a549061204d565b04896120a4565b8f610755565b8161089792903d1061089f575b61088f8183611f84565b81019061387d565b8e9150610743565b503d610885565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610683565b84833461030f578160031936011261030f5760209061094b6134e8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed575060255481516001600160401b03808316825291831c9091166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a22611dcd565b82602435928315801590610ace575b610a61575b50519182526001600160a01b0316903390600080516020613a17833981519152908590a35160018152f35b3381526001865281812054610a78858210156128bf565b6001600160a01b038416908533839003610a95575b505050610a36565b610aa991610aa4841515612904565b6120a4565b3383526001885283832055815220610ac28382546120b1565b90558285808085610a8d565b50336001600160a01b03841614610a31565b84833461030f578060031936011261030f57606090610b09610b00611dcd565b602435906121f0565b91929081519384526020840152820152f35b84833461030f578060031936011261030f5760209061094b610b3b611dcd565b60243590612664565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610d935780600319360112610d93578135926001600160401b038411610d8f5736602385011215610d8f578383013592610b9f84611fa7565b94610bac84519687611f84565b84865286602091828801963660248284010111610586578060248593018937880101526024359361ffff851680950361085157610100958688805181010312610d8b57610bf89061228a565b93610c04828901612949565b90610c1160608a01612949565b9860808101519860a082015192610c2a60c0840161295d565b91818401519301519360018060a01b03808097169d169a814211610d5a57928d8f819897948f948f8f968f918f959a8f8c8195610cf49f9c61050a9f50600014610d45576000805160206139978339815191529a5b825289522093845494610c9186612aef565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610cc281611f4d565b519020610ccd612796565b908951908b82019261190160f01b8452602283015260428201526042815261050281611f69565b1603610d1657505050600014610d0d576102ea92612b4c565b6102ea92612afe565b5162461bcd60e51b815291820152601e6024820152600080516020613977833981519152604482015260649150fd5b6000805160206139f78339815191529a610c7f565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206139578339815191526044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610e07611dcd565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610e72610e68611dcd565b6024359033612afe565b5160018152f35b848383346105865760203660031901126105865760209282916001600160a01b03610ea2611dcd565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610efb83611ecf565b808352600193808516908115610fb75750600114610f6c575b50610f2492509492940384611f84565b815192839160208084528251928382860152825b848110610f5657505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610f38565b60108752600080516020613a3783398151915293602092508791905b818310610f9f575050610f24935082010186610f14565b85548784018501529485019486945091830191610f88565b9050610f2494506020925060ff191682840152151560051b82010186610f14565b8483833461058657602036600319011261058657359160098310156102ed575060ff611005602093611ea0565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03611038611dcd565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105865761113c9061113060ff84956111036110ed36611e6b565b9491989093808052600760205220541615612ba3565b6111186001600160a01b038216301415612be0565b611120612297565b505061112a61376b565b85612c81565b929093601154906131e4565b1561114e575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105865782600319360112610586576006546001600160a01b039290918383169190338390036111e5575050806005549384166000805160206139d78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b03611250611dcd565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed575061094b6020926044359060243590356120d7565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f5760209061094b612796565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576113e236611e6b565b91928261141c575b508351918252602094506001600160a01b03908116921690600080516020613a17833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611447878310156128bf565b851692838a0361145b575b505050506113ea565b8985526002835288852033865283528885205490600182016114c5575b5050928260209960018a946114a48a8e99610aa4600080516020613a178339815191529c9a1515612904565b92855252838320558152206114ba8582546120b1565b905591878080611452565b87821061151b57509260209960018a946114a48a8e99966114f682600080516020613a178339815191529d9b6120a4565b86895260028552898920338a5285528989205596995050509450509981949650611478565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105865761158936611e1c565b9397949690928042116105555793869361160e938c8c8961050a968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936115cb85612aef565b905588519660208801986000805160206139f78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b160361052457506102ea939450612afe565b84833461030f57602036600319011261030f5760209181906001600160a01b03611648611dcd565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105865781600319360112610586578035906009821015610d935761169a611dfe565b6008549093906001600160a01b031633036117505760ff6116ba84611ea0565b54161515931515938414611718575050808260ff6116da61170894611ea0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ea0565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105865761018036600319011261058657602480356001600160a01b0381811691829003611c3c576001600160401b036044358181116108515736602382011215610851578086013591821161085157368583830101116108515760643593838516809503610d8b5761180684600554163314611fc2565b863580611bfc575b5080611bbe575b508482611a64575b50505081611a24575b505060843580611a0c575b5060a435806119f4575b5060c435806119dd575b5060e435806119b9575b506101043580611995575b506101243580611964575b5061014435806118f3575b5061016435928361187f578480f35b601e54841061189657505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611902620186a082111561200d565b601f54811161191457601e5584611870565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584611865565b6119a3620186a0821061200d565b6119b0601b54821161200d565b601c558461185a565b6119c7620186a0821061200d565b6119d4601c54821061200d565b601b558461184f565b6119eb620186a0821061200d565b601d5584611845565b611a03620186a082111561200d565b601a558461183b565b611a1b620186a082111561200d565b60195584611831565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480611826565b8291611a71601054611ecf565b601f8111611b5f575b508990601f8411600114611adf578a93611ad2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461181d565b0101359050848980611a8f565b60108b52601f1984169450600080516020613a3783398151915292509087908b60205b878210611b405750508460019610611b24575b50505050811b01601055611aa6565b60001960f88660031b161c199201013516905588808681611b15565b8285019093013585556001949094019389929182019190810190611b02565b60108b529092509050600080516020613a37833981519152601f840160051c810160208510611bb7575b91849391601f8994920160051c01905b818110611ba65750611a7a565b8b8155859450889350600101611b99565b5080611b89565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188611815565b611c0b620186a082111561200d565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a36020558961180e565b8580fd5b84833461030f578060031936011261030f57602090610e72611c60611dcd565b6024359033612b4c565b5091503461058657606036600319011261058657611c86611dcd565b91611c8f611dfe565b91611c98611e0d565b9260018060a01b03948591611cb283600554163314611fc2565b15611d44571692831590811591611d3c575b5015611d01575050806005549283166000805160206139d78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611cc4565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611d78612297565b825191151582526020820152f35b9350505034610586578060031936011261058657602092611da5611dcd565b611dad611de8565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de357565b600080fd5b602435906001600160a01b0382168203611de357565b602435908115158203611de357565b604435908115158203611de357565b60e0906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de35790604435906064359060843560ff81168103611de3579060a4359060c43590565b6060906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de3579060443590565b6009811015611eb9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611eff575b6020831014611ee957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ede565b6001600160401b038111611f1c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f1c57604052565b61010081019081106001600160401b03821117611f1c57604052565b608081019081106001600160401b03821117611f1c57604052565b601f909101601f19168101906001600160401b03821190821017611f1c57604052565b6001600160401b038111611f1c57601f01601f191660200190565b15611fc957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561201457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561206057565b634e487b7160e01b600052601160045260246000fd5b8115612080570490565b634e487b7160e01b600052601260045260246000fd5b604d811161206057600a0a90565b9190820391821161206057565b9190820180921161206057565b8181039291600013801582851316918412161761206057565b6014549192916121209161211191612107916120fd906001600160801b0383169061204d565b9060801c90612076565b93601f549061204d565b61211a83612096565b90612076565b8083106121e85761213461217091846120a4565b9161216b61216561215c601e5461215661214d86612096565b602154906120b1565b9061204d565b61211a84612096565b91612096565b6120be565b6509184e72a0009081810291818305149015171561206057670de0b6b3a76400009182810292818405149015171561206057801561208057600160ff1b9180831460001983141661206057059060008212156121e157811461206057600003905b8082116121dc575090565b905090565b50906121d1565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561227e579160409161225a85946122346122729761222e6136d8565b926124db565b815190936001600160801b03916020916122509184169061204d565b9201511690612076565b81811061227657035b958152601860205220546125ad565b9091565b505080612263565b50509192505080918190565b51908115158203611de357565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546122cc81611ecf565b9081602486015260019085828216918260001461246b575050600114612427575b5050600083809203925af1801561241c5760009485916123e1575b5092841561238357831561234957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612396601354601254906120b1565b42116123a757505060115490612343565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612415575b6123f98183611f84565b810103126102ed57508061240c8561228a565b94015138612308565b503d6123ef565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612450575050505082016044016000836122ed565b80548c8601604401528a97508b965093019287908201612438565b8195506000949193506044925060ff191682840152151560051b82010192506122ed565b1561249657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6124e682151561248f565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156125a1578092612569575b50509061256161255861256693620186a0602254049061204d565b601e549061204d565b612076565b90565b9091506020823d8211612599575b8161258460209383611f84565b810103126102ed57505161256161255861253d565b3d9150612577565b604051903d90823e3d90fd5b6125b882151561248f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561265857600091612625575b5090612561612611926022549061204d565b620186a0612621601e548361204d565b0491565b906020823d8211612650575b8161263e60209383611f84565b810103126102ed5750516125616125ff565b3d9150612631565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612687916125ad565b918352601760205260408320548015612790578115612790578181106127905782811015612786576014546126d0918391610aa4916120fd906001600160801b0383169061204d565b90620186a09283830292808404851490151715612772576126f5929161211a916120a4565b91601b5491601c549361270885856120be565b80820291848212600160ff1b82141661277257818305149015171561275e570581848201948512911290801582169115161761274a57508082126121dc575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612896575b156127f1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f1c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127c8565b156128c657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561290b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de357565b519060ff82168203611de357565b6005811015611eb9578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146120605760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612baa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612be757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c3257565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106130dd5784156130d557620186a09460209086612caa83548361204d565b0496612cf4612ce3612cbf6011549a856120b1565b600d546001600160a01b039b919060ff90612cdb908e16613121565b16918b6132e1565b612cee811515612c2b565b88613364565b612cff83548361204d565b049287811680865260248452604094858720612d1c8282546120b1565b9055612d266131be565b98612d3182866120b1565b88878951612d3e81611f32565b82815201528a516001600160801b039b8c9182166130695781612d69849e8f955b16828451166136bf565b168152612d7e828a83019416838551166136bf565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561305e575b50501561301c57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612df0838d209182546120b1565b905581519081528c89820152a487600d5416803b15611c3c5785855180926340c10f1960e01b8252818381612e29893060048401613862565b03925af1801561301257612fff575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af18015612ff5579287928a88938f96612fb2575b50612e9b9560095416918b5196879586948593845260048401613862565b03925af18015612fa857908694939291612f68575b50612edb9450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613893565b03925af1908115612f5c578391612f3d575b509394600a5416803b1561058657908280926004835180958193632ebe913360e21b83525af1908115612f345750612f23575050565b612f2d8291611f09565b6102ed5750565b513d84823e3d90fd5b612f549150823d841161089f5761088f8183611f84565b905038612eed565b505051903d90823e3d90fd5b80929450859193953d8311612fa1575b612f828183611f84565b81010312611c3c5791612edb9391612f9a869461228a565b5038612eb0565b503d612f78565b86513d89823e3d90fd5b9350509290935081813d8311612fee575b612fcd8183611f84565b81010312610d8b57612e9b9287928a8e612fe78a9561228a565b5095612e7d565b503d612fc3565b88513d8b823e3d90fd5b61300b90959195611f09565b9338612e38565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b111590503880612daa565b9091808983018481511661307d908361204d565b8585511661308a91612076565b9e8f818651166130999161204d565b9151166130a591612076565b106130b9575b9082612d69818f9594612d5f565b919b908c612d696130ca8294612aef565b9e50505090916130ab565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061314181611f32565b5160009283928392916001600160a01b03165afa903d156131b6573d9161316783611fa7565b926131756040519485611f84565b83523d82602085013e5b806131ab575b156131a4576020828051810103126102ed57506020612566910161295d565b5050601290565b506020825114613185565b60609161317f565b604051906131cb82611f32565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156132d75760188152604086205480156132d0578161321e6131be565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156125a157809761329a575b505061225061327a612558613295969798620186a0602254049061204d565b9561329060018060801b0394858751169061204d565b61204d565b111590565b9096508187813d83116132c9575b6132b28183611f84565b810103126102ed575094519461225061327a61325b565b503d6132a8565b5050505050565b5060019450505050565b612165906133018561256696956132fb61211a96856124db565b90613321565b6001600160a01b039091166000908152601860205260409020549061204d565b918215801561335c575b6121e857600181018091116120605761334a9261215661256192612096565b6005810180911161206057600a900490565b50811561332b565b6001600160a01b0316338103613378575050565b60008181526020906003825260409182822033835281528483832054106133e157838252600381528282203383528152828220546001016133ba575050505050565b6133d5938252600381528282209033835252209182546120a4565b905538808080806132d0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161206057565b9190916000602060405161344781611f32565b82815201526020810180516001600160801b0390811661348b5761348481865b81613477818a168289511661341b565b168652168284511661341b565b1690529190565b6134a561349b828551168761204d565b8284511690612076565b94806134c16134b7848651168961204d565b8487511690612076565b106134d1575b8161348491613467565b94816134df61348492612aef565b969150506134c7565b60ff60265416613659576014546001600160801b031690811561365257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612658578591600091613619575b50600460405180948193631a674cc560e11b8352165afa938415612658576000946135ea575b50506135829192670de0b6b3a76400009283916029549061204d565b0490818110156135e157613599602a5480926120a4565b838102908082048514901517156120605761211a6135ba926135d5946120a4565b602754926135cf6028549261329084876120a4565b046120b1565b908082116121dc575090565b50505060275490565b81813d8311613612575b6135fe8183611f84565b81010312610d935751925061358238613566565b503d6135f4565b909181813d831161364b575b61362f8183611f84565b8101031261030f57519082821682036102ed5750849038613540565b503d613625565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561265857600091613691575090565b906020823d82116136b7575b816136aa60209383611f84565b810103126102ed57505190565b3d915061369d565b6001600160801b03918216908216019190821161206057565b600060206040516136e881611f32565b82815201526025546001600160401b0391906137099060401c8316426120a4565b9182156137605761375b61329091670de0b6b3a764000061375061372b6131be565b9660018060801b03958694858a5116906301e133806137486134e8565b04169061204d565b0416828551166136bf565b168252565b5090506125666131be565b60405161377781611f32565b60255460018060401b03908181168352818160401c1661379e6020850191808352426120a4565b9283156132d057602094816301e133806137b66134e8565b0416815281421683526137c76131be565b670de0b6b3a76400006137ec60018060801b039761329089855116878751169061204d565b04956137fd818816828451166136bf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b039091168152602081019190915260400190565b9190826040910312611de3576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b0390811660008181526017602052604081205491939092828214613945579060ff6138fa61390393600d5416613121565b16928391613321565b801561393e57829161211a6121656139299387604097526024602052868620549061204d565b928152602460205220548082116121dc575090565b5050905090565b50505060409150602460205220549056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212209b8b42cab2e1396758383304361b571297f2bb62c00aaa82e81d79b9b069015364736f6c63430008120033", - "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611d865750836302ce728f14611d5d578363078dfbe714611c6a578363095ea7b314611c405783630996efb71461178a5783630c4e84f01461167357836318160ddd146116585783631c9e379b146116205783631da8bf10146115785783631fb8f81a1461155957836323b872dd146113d1578363331960ff146113b257836334ce998a1461138957836334d441d01461136a5783633644e5151461134d57836337b6b7b91461132e57836338d52e0f146113055783633ba0b9a9146112e65783633f741adb146112bd57836340626d8b1461129e57836344de240a1461127f578363473e3ce71461126057836348e4163e146112285783634e71e0c8146111855783635224372c146110ce578363529898f2146110af57836357935462146110905783636b19ad16146110715783636c3d8b8f1461104857836370a08231146110105783637277854714610fd857836374645ff314610ed95783637dc0d1d014610eb05783637ecebe0014610e795783637fa0b84e14610e485783638285ef4014610e1757836387b2793714610ddf5783638c5d0ed314610dc05783638da5cb5b14610d97578363910dd7c814610b62578363959916dc14610b4457836399a9702814610b1b5783639e15e89f14610ae0578363a9059cbb14610a05578363b0e21e8a146109e6578363b27c0e74146109b4578363b7113f1914610990578363bb4cfe3b14610971578363bde39c5d14610952578363c1ad5c8d1461092e578363cd0211eb146105b3578363ce8849ed1461058a578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea61376b565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611dcd565b826103e8611de8565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105865761044a36611e1c565b918394989597934211610555579161050a91610512938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612aef565b90558c8751956020870197600080516020613997833981519152895260008a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b5190206104db612796565b915190602082019261190160f01b8452602283015260428201526042815261050281611f69565b519020612a6a565b91909161296b565b160361052457506102ea939450612b4c565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206139778339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206139578339815191526044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f576105cf611dcd565b916105d8611de8565b936105e1611e0d565b50606435600183526020956007875261060060ff868620541615612ba3565b6001600160a01b03918183169161061930841415612be0565b610621612297565b505061062b61376b565b61067061065f6106428461063d6131be565b613434565b90506011549060ff61065789600d5416613121565b1691856132e1565b61066a811515612c2b565b89613364565b8286526017895286862054808311610926575b5081156108eb5781610694916138c2565b96818810156108b057828652602489528686206106b28982546120a4565b90556106c08261063d6131be565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b528888206106f88582546120a4565b90558989888860095416868c600e546107268651978896879586946311a5cc7760e31b865230928601613893565b03925af180156108a6578c9388938c8e9998979461075b94610878575b505061074f878a6120a4565b80610855575b506120a4565b806107cf575b50895193845216916000805160206139b78339815191529190a4600a541690813b15610586578351632ebe913360e21b81529183918391829084905af180156107c5576107b1575b505051908152f35b6107bb8291611f09565b6102ed57806107a9565b83513d84823e3d90fd5b925092939450600d541690813b1561085157610804889283928b51948580948193632770a7eb60e21b83528d30908401613862565b03925af1801561084757918a918a959493610822575b908691610761565b6000805160206139b783398151915292919861083e8892611f09565b9891925061081a565b88513d89823e3d90fd5b8780fd5b610872915061086b620186a091601a549061204d565b04896120a4565b8f610755565b8161089792903d1061089f575b61088f8183611f84565b81019061387d565b8e9150610743565b503d610885565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610683565b84833461030f578160031936011261030f5760209061094b6134e8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed575060255481516001600160401b03808316825291831c9091166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a22611dcd565b82602435928315801590610ace575b610a61575b50519182526001600160a01b0316903390600080516020613a17833981519152908590a35160018152f35b3381526001865281812054610a78858210156128bf565b6001600160a01b038416908533839003610a95575b505050610a36565b610aa991610aa4841515612904565b6120a4565b3383526001885283832055815220610ac28382546120b1565b90558285808085610a8d565b50336001600160a01b03841614610a31565b84833461030f578060031936011261030f57606090610b09610b00611dcd565b602435906121f0565b91929081519384526020840152820152f35b84833461030f578060031936011261030f5760209061094b610b3b611dcd565b60243590612664565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610d935780600319360112610d93578135926001600160401b038411610d8f5736602385011215610d8f578383013592610b9f84611fa7565b94610bac84519687611f84565b84865286602091828801963660248284010111610586578060248593018937880101526024359361ffff851680950361085157610100958688805181010312610d8b57610bf89061228a565b93610c04828901612949565b90610c1160608a01612949565b9860808101519860a082015192610c2a60c0840161295d565b91818401519301519360018060a01b03808097169d169a814211610d5a57928d8f819897948f948f8f968f918f959a8f8c8195610cf49f9c61050a9f50600014610d45576000805160206139978339815191529a5b825289522093845494610c9186612aef565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610cc281611f4d565b519020610ccd612796565b908951908b82019261190160f01b8452602283015260428201526042815261050281611f69565b1603610d1657505050600014610d0d576102ea92612b4c565b6102ea92612afe565b5162461bcd60e51b815291820152601e6024820152600080516020613977833981519152604482015260649150fd5b6000805160206139f78339815191529a610c7f565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206139578339815191526044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610e07611dcd565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610e72610e68611dcd565b6024359033612afe565b5160018152f35b848383346105865760203660031901126105865760209282916001600160a01b03610ea2611dcd565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610efb83611ecf565b808352600193808516908115610fb75750600114610f6c575b50610f2492509492940384611f84565b815192839160208084528251928382860152825b848110610f5657505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610f38565b60108752600080516020613a3783398151915293602092508791905b818310610f9f575050610f24935082010186610f14565b85548784018501529485019486945091830191610f88565b9050610f2494506020925060ff191682840152151560051b82010186610f14565b8483833461058657602036600319011261058657359160098310156102ed575060ff611005602093611ea0565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03611038611dcd565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105865761113c9061113060ff84956111036110ed36611e6b565b9491989093808052600760205220541615612ba3565b6111186001600160a01b038216301415612be0565b611120612297565b505061112a61376b565b85612c81565b929093601154906131e4565b1561114e575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105865782600319360112610586576006546001600160a01b039290918383169190338390036111e5575050806005549384166000805160206139d78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b03611250611dcd565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed575061094b6020926044359060243590356120d7565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f5760209061094b612796565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576113e236611e6b565b91928261141c575b508351918252602094506001600160a01b03908116921690600080516020613a17833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611447878310156128bf565b851692838a0361145b575b505050506113ea565b8985526002835288852033865283528885205490600182016114c5575b5050928260209960018a946114a48a8e99610aa4600080516020613a178339815191529c9a1515612904565b92855252838320558152206114ba8582546120b1565b905591878080611452565b87821061151b57509260209960018a946114a48a8e99966114f682600080516020613a178339815191529d9b6120a4565b86895260028552898920338a5285528989205596995050509450509981949650611478565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105865761158936611e1c565b9397949690928042116105555793869361160e938c8c8961050a968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936115cb85612aef565b905588519660208801986000805160206139f78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b160361052457506102ea939450612afe565b84833461030f57602036600319011261030f5760209181906001600160a01b03611648611dcd565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105865781600319360112610586578035906009821015610d935761169a611dfe565b6008549093906001600160a01b031633036117505760ff6116ba84611ea0565b54161515931515938414611718575050808260ff6116da61170894611ea0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ea0565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105865761018036600319011261058657602480356001600160a01b0381811691829003611c3c576001600160401b036044358181116108515736602382011215610851578086013591821161085157368583830101116108515760643593838516809503610d8b5761180684600554163314611fc2565b863580611bfc575b5080611bbe575b508482611a64575b50505081611a24575b505060843580611a0c575b5060a435806119f4575b5060c435806119dd575b5060e435806119b9575b506101043580611995575b506101243580611964575b5061014435806118f3575b5061016435928361187f578480f35b601e54841061189657505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611902620186a082111561200d565b601f54811161191457601e5584611870565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584611865565b6119a3620186a0821061200d565b6119b0601b54821161200d565b601c558461185a565b6119c7620186a0821061200d565b6119d4601c54821061200d565b601b558461184f565b6119eb620186a0821061200d565b601d5584611845565b611a03620186a082111561200d565b601a558461183b565b611a1b620186a082111561200d565b60195584611831565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480611826565b8291611a71601054611ecf565b601f8111611b5f575b508990601f8411600114611adf578a93611ad2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461181d565b0101359050848980611a8f565b60108b52601f1984169450600080516020613a3783398151915292509087908b60205b878210611b405750508460019610611b24575b50505050811b01601055611aa6565b60001960f88660031b161c199201013516905588808681611b15565b8285019093013585556001949094019389929182019190810190611b02565b60108b529092509050600080516020613a37833981519152601f840160051c810160208510611bb7575b91849391601f8994920160051c01905b818110611ba65750611a7a565b8b8155859450889350600101611b99565b5080611b89565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188611815565b611c0b620186a082111561200d565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a36020558961180e565b8580fd5b84833461030f578060031936011261030f57602090610e72611c60611dcd565b6024359033612b4c565b5091503461058657606036600319011261058657611c86611dcd565b91611c8f611dfe565b91611c98611e0d565b9260018060a01b03948591611cb283600554163314611fc2565b15611d44571692831590811591611d3c575b5015611d01575050806005549283166000805160206139d78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611cc4565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611d78612297565b825191151582526020820152f35b9350505034610586578060031936011261058657602092611da5611dcd565b611dad611de8565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de357565b600080fd5b602435906001600160a01b0382168203611de357565b602435908115158203611de357565b604435908115158203611de357565b60e0906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de35790604435906064359060843560ff81168103611de3579060a4359060c43590565b6060906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de3579060443590565b6009811015611eb9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611eff575b6020831014611ee957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ede565b6001600160401b038111611f1c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f1c57604052565b61010081019081106001600160401b03821117611f1c57604052565b608081019081106001600160401b03821117611f1c57604052565b601f909101601f19168101906001600160401b03821190821017611f1c57604052565b6001600160401b038111611f1c57601f01601f191660200190565b15611fc957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561201457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561206057565b634e487b7160e01b600052601160045260246000fd5b8115612080570490565b634e487b7160e01b600052601260045260246000fd5b604d811161206057600a0a90565b9190820391821161206057565b9190820180921161206057565b8181039291600013801582851316918412161761206057565b6014549192916121209161211191612107916120fd906001600160801b0383169061204d565b9060801c90612076565b93601f549061204d565b61211a83612096565b90612076565b8083106121e85761213461217091846120a4565b9161216b61216561215c601e5461215661214d86612096565b602154906120b1565b9061204d565b61211a84612096565b91612096565b6120be565b6509184e72a0009081810291818305149015171561206057670de0b6b3a76400009182810292818405149015171561206057801561208057600160ff1b9180831460001983141661206057059060008212156121e157811461206057600003905b8082116121dc575090565b905090565b50906121d1565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561227e579160409161225a85946122346122729761222e6136d8565b926124db565b815190936001600160801b03916020916122509184169061204d565b9201511690612076565b81811061227657035b958152601860205220546125ad565b9091565b505080612263565b50509192505080918190565b51908115158203611de357565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546122cc81611ecf565b9081602486015260019085828216918260001461246b575050600114612427575b5050600083809203925af1801561241c5760009485916123e1575b5092841561238357831561234957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612396601354601254906120b1565b42116123a757505060115490612343565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612415575b6123f98183611f84565b810103126102ed57508061240c8561228a565b94015138612308565b503d6123ef565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612450575050505082016044016000836122ed565b80548c8601604401528a97508b965093019287908201612438565b8195506000949193506044925060ff191682840152151560051b82010192506122ed565b1561249657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6124e682151561248f565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156125a1578092612569575b50509061256161255861256693620186a0602254049061204d565b601e549061204d565b612076565b90565b9091506020823d8211612599575b8161258460209383611f84565b810103126102ed57505161256161255861253d565b3d9150612577565b604051903d90823e3d90fd5b6125b882151561248f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561265857600091612625575b5090612561612611926022549061204d565b620186a0612621601e548361204d565b0491565b906020823d8211612650575b8161263e60209383611f84565b810103126102ed5750516125616125ff565b3d9150612631565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612687916125ad565b918352601760205260408320548015612790578115612790578181106127905782811015612786576014546126d0918391610aa4916120fd906001600160801b0383169061204d565b90620186a09283830292808404851490151715612772576126f5929161211a916120a4565b91601b5491601c549361270885856120be565b80820291848212600160ff1b82141661277257818305149015171561275e570581848201948512911290801582169115161761274a57508082126121dc575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612896575b156127f1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f1c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127c8565b156128c657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561290b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de357565b519060ff82168203611de357565b6005811015611eb9578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146120605760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612baa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612be757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c3257565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106130dd5784156130d557620186a09460209086612caa83548361204d565b0496612cf4612ce3612cbf6011549a856120b1565b600d546001600160a01b039b919060ff90612cdb908e16613121565b16918b6132e1565b612cee811515612c2b565b88613364565b612cff83548361204d565b049287811680865260248452604094858720612d1c8282546120b1565b9055612d266131be565b98612d3182866120b1565b88878951612d3e81611f32565b82815201528a516001600160801b039b8c9182166130695781612d69849e8f955b16828451166136bf565b168152612d7e828a83019416838551166136bf565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561305e575b50501561301c57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612df0838d209182546120b1565b905581519081528c89820152a487600d5416803b15611c3c5785855180926340c10f1960e01b8252818381612e29893060048401613862565b03925af1801561301257612fff575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af18015612ff5579287928a88938f96612fb2575b50612e9b9560095416918b5196879586948593845260048401613862565b03925af18015612fa857908694939291612f68575b50612edb9450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613893565b03925af1908115612f5c578391612f3d575b509394600a5416803b1561058657908280926004835180958193632ebe913360e21b83525af1908115612f345750612f23575050565b612f2d8291611f09565b6102ed5750565b513d84823e3d90fd5b612f549150823d841161089f5761088f8183611f84565b905038612eed565b505051903d90823e3d90fd5b80929450859193953d8311612fa1575b612f828183611f84565b81010312611c3c5791612edb9391612f9a869461228a565b5038612eb0565b503d612f78565b86513d89823e3d90fd5b9350509290935081813d8311612fee575b612fcd8183611f84565b81010312610d8b57612e9b9287928a8e612fe78a9561228a565b5095612e7d565b503d612fc3565b88513d8b823e3d90fd5b61300b90959195611f09565b9338612e38565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b111590503880612daa565b9091808983018481511661307d908361204d565b8585511661308a91612076565b9e8f818651166130999161204d565b9151166130a591612076565b106130b9575b9082612d69818f9594612d5f565b919b908c612d696130ca8294612aef565b9e50505090916130ab565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061314181611f32565b5160009283928392916001600160a01b03165afa903d156131b6573d9161316783611fa7565b926131756040519485611f84565b83523d82602085013e5b806131ab575b156131a4576020828051810103126102ed57506020612566910161295d565b5050601290565b506020825114613185565b60609161317f565b604051906131cb82611f32565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156132d75760188152604086205480156132d0578161321e6131be565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156125a157809761329a575b505061225061327a612558613295969798620186a0602254049061204d565b9561329060018060801b0394858751169061204d565b61204d565b111590565b9096508187813d83116132c9575b6132b28183611f84565b810103126102ed575094519461225061327a61325b565b503d6132a8565b5050505050565b5060019450505050565b612165906133018561256696956132fb61211a96856124db565b90613321565b6001600160a01b039091166000908152601860205260409020549061204d565b918215801561335c575b6121e857600181018091116120605761334a9261215661256192612096565b6005810180911161206057600a900490565b50811561332b565b6001600160a01b0316338103613378575050565b60008181526020906003825260409182822033835281528483832054106133e157838252600381528282203383528152828220546001016133ba575050505050565b6133d5938252600381528282209033835252209182546120a4565b905538808080806132d0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161206057565b9190916000602060405161344781611f32565b82815201526020810180516001600160801b0390811661348b5761348481865b81613477818a168289511661341b565b168652168284511661341b565b1690529190565b6134a561349b828551168761204d565b8284511690612076565b94806134c16134b7848651168961204d565b8487511690612076565b106134d1575b8161348491613467565b94816134df61348492612aef565b969150506134c7565b60ff60265416613659576014546001600160801b031690811561365257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612658578591600091613619575b50600460405180948193631a674cc560e11b8352165afa938415612658576000946135ea575b50506135829192670de0b6b3a76400009283916029549061204d565b0490818110156135e157613599602a5480926120a4565b838102908082048514901517156120605761211a6135ba926135d5946120a4565b602754926135cf6028549261329084876120a4565b046120b1565b908082116121dc575090565b50505060275490565b81813d8311613612575b6135fe8183611f84565b81010312610d935751925061358238613566565b503d6135f4565b909181813d831161364b575b61362f8183611f84565b8101031261030f57519082821682036102ed5750849038613540565b503d613625565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561265857600091613691575090565b906020823d82116136b7575b816136aa60209383611f84565b810103126102ed57505190565b3d915061369d565b6001600160801b03918216908216019190821161206057565b600060206040516136e881611f32565b82815201526025546001600160401b0391906137099060401c8316426120a4565b9182156137605761375b61329091670de0b6b3a764000061375061372b6131be565b9660018060801b03958694858a5116906301e133806137486134e8565b04169061204d565b0416828551166136bf565b168252565b5090506125666131be565b60405161377781611f32565b60255460018060401b03908181168352818160401c1661379e6020850191808352426120a4565b9283156132d057602094816301e133806137b66134e8565b0416815281421683526137c76131be565b670de0b6b3a76400006137ec60018060801b039761329089855116878751169061204d565b04956137fd818816828451166136bf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b039091168152602081019190915260400190565b9190826040910312611de3576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b0390811660008181526017602052604081205491939092828214613945579060ff6138fa61390393600d5416613121565b16928391613321565b801561393e57829161211a6121656139299387604097526024602052868620549061204d565b928152602460205220548082116121dc575090565b5050905090565b50505060409150602460205220549056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212209b8b42cab2e1396758383304361b571297f2bb62c00aaa82e81d79b9b069015364736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a619283620001ab843960805183612887015260a05183612952015260c05183612851015260e051836128d6015251826128fc015251816128b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220de560e996e3c830b2af4e5c6ba35d1a989a9c18b99ecfdb9135702ca47f8c50864736f6c63430008120033", + "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220de560e996e3c830b2af4e5c6ba35d1a989a9c18b99ecfdb9135702ca47f8c50864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCollateral.json b/src/artifacts/tapioca-bar/BBCollateral.json index 64808016..ead4d983 100644 --- a/src/artifacts/tapioca-bar/BBCollateral.json +++ b/src/artifacts/tapioca-bar/BBCollateral.json @@ -1609,8 +1609,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132799283620001ab8439608051836127dd015260a051836128a7015260c051836127a7015260e0518361282c01525182612852015251816128090152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611deb5750806302ce728f14611dc2578063078dfbe714611cd5578063095ea7b314611cae5780630996efb7146117f85780630c4e84f0146116dc57806318160ddd146116c05780631c9e379b146116875780631da8bf10146115c55780631fb8f81a146115a757806323b872dd14611420578063331960ff1461140257806334ce998a146113d957806334d441d0146113bb5780633644e515146113a057806337b6b7b91461138257806338d52e0f146113595780633ba0b9a91461133b5780633f741adb1461131657806340626d8b146112f857806344de240a146112da578063473e3ce7146112bc57806348e4163e146112835780634e71e0c8146111e7578063529898f2146111c957806357935462146111ab5780636b19ad161461118d5780636c3d8b8f1461116457806370a082311461112b57806372778547146110f357806374645ff314610ff25780637dc0d1d014610fc95780637ecebe0014610f905780637fa0b84e14610f5e5780638285ef4014610f2c57806387b2793714610ef35780638c5d0ed314610ed55780638da5cb5b14610eac578063910dd7c814610c9b578063959916dc14610c7e57806399a9702814610c565780639e15e89f14610c1b578063a9059cbb14610b38578063b0e21e8a14610b1a578063b27c0e7414610ae7578063b7113f1914610ac4578063bb4cfe3b14610aa6578063bde39c5d14610a88578063c1ad5c8d14610a65578063cce19f81146108ff578063ce8849ed146108d6578063d505accf14610747578063d8dfeb451461071e578063dd62ed3e146106cf578063de406577146106a6578063e0996cb614610688578063e30c39781461065f578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e2613082565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611e33565b610364611e49565b9061036d611e6e565b608435926001600160a01b0390811692909160643561038e30861415612b94565b6002600052602090600782526103ac60ff6040600020541615612bdf565b86156105e1575b6103bd8785612c1c565b8615610560575b5084875260188152604087206103db8782546120e1565b90556015546103ea87826120e1565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b61043692506120d4565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c58183611fe5565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561055c578783916105239383604051809681958294630208d92960e11b8452308d60048601613179565b03925af1801561055157610539575b505061043e565b61054290611f6a565b61054d578538610532565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105d65787916105a9575b5094386103c4565b90508581813d83116105cf575b6105c08183611fe5565b810103126104d75751386105a1565b503d6105b6565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa908115610654578891610627575b50956103b3565b90508181813d831161064d575b61063e8183611fe5565b810103126104d7575138610620565b503d610634565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106e9611e33565b60406106f3611e49565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761075636611e7d565b9183919395949542116108915760018060a01b0392838816948560005260046020526040600020928354600019811461087b576108279561081f956001830190556040519060208201926000805160206131a48339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b5190206107ee6127a4565b9060405190602082019261190160f01b8452602283015260428201526042815261081781611fca565b519020612a6a565b91909161296b565b1603610836576102e292612b3d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061090f36611ecc565b60038492939452600760205261092c60ff60408420541615612bdf565b610934612377565b505061093e613082565b6001600160a01b03838116939061095730861415612b94565b6109618387612c1c565b828187169586865260186020526040862061097d8382546120d4565b905561098b826015546120d4565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610a6157856109e4869282968395630208d92960e11b85523060048601613179565b03925af18015610a5657610a41575b50601154610a0091612cfa565b15610a085780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a4f610a009293611f6a565b91906109f3565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610a80612dfc565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b52611e33565b60243580928115801590610c09575b610b99575b50506040519182526001600160a01b031690339060008051602061320483398151915290602090a3602060405160018152f35b33815260016020526040812054610bb2838210156128cd565b6001600160a01b0384169033829003610bcd575b5050610b66565b604093610be491610bdf841515612912565b6120d4565b338352600160205283832055815220610bfe8382546120e1565b905581388080610bc6565b50336001600160a01b03841614610b61565b50346102e55760403660031901126102e5576060610c43610c3a611e33565b60243590612220565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610a80610c75611e33565b60243590612672565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b0380821161055c573660238301121561055c578160040135908111610e98578260405192610cef6020601f19601f8601160185611fe5565b8284526020840192366024828401011161055c578060246020930185378401015260243561ffff81168103610e9457610100918284805181010312610a6157610d379061236a565b610d4360408501612957565b91610d5060608601612957565b9460808101519460a08201519260c08301519160ff83168303610e905760e084015193015193804211610891578515610e7b576000805160206131a4833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610e67579161ffff610e249896949261081f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e1581611fae565b602081519101206107ee6127a4565b6001600160a01b038381169116036108365715610e51576102e2926001600160a01b039081169116612b3d565b6102e2926001600160a01b039081169116612aef565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e483398151915291610d94565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f1b611e33565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610f85610f7b611e33565b6024359033612aef565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610fb8611e33565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361101483611f30565b8083526001938085169081156110d25750600114611087575b5061103a92500382611fe5565b60405180926020908183528351918281850152815b83811061107057505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161104f565b6010865260008051602061322483398151915293602092508691905b8183106110ba57505061103a93508201013861102d565b855487840185015294850194869450918301916110a3565b905061103a94506020925060ff191682840152151560051b8201013861102d565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61111f84611f01565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03611153611e33565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b03908181163381900361123f57806005549384166000805160206131c48339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b036112ab611e33565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610a80604435602435600435612107565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610a806127a4565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e55761142f36611ecc565b91928261146b575b506040519182526001600160a01b0390811692169060008051602061320483398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611494828610156128cd565b8616938484036114a9575b5050505050611437565b838652600283526040808720338852845286205460018101611513575b50926001602096936114f18794604097610bdf6000805160206132048339815191529c9a1515612912565b92855252838320558152206115078582546120e1565b9055913880858161149f565b9091811061156757926001602096936114f18a6000805160206132048339815191529a98956115448260409a6120d4565b86895260028552898920338a5285528989205594975094979950509396506114c6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e5576115d436611e7d565b90839594954211610891576001600160a01b03878116808a52600460205260408a208054919692959290600019831461167357826116649694928d92600161081f98960190556040519160208301936000805160206131e4833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b1603610836576102e292612aef565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b036116af611e33565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e55760043560098110156117f457611702611e5f565b6008549091906001600160a01b031633036117b85760ff61172282611f01565b5416151591151591821461177e57808260ff61174061176e94611f01565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f01565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e557602480356001600160a01b0381811691829003610e94576001600160401b0360443581811161054d573660238201121561054d57806004013591821161054d573685838301011161054d5760643593838516809503611caa5761187384600554163314612008565b60043580611c6a575b5080611c2c575b508482611ad2575b50505081611a92575b505060843580611a7a575b5060a43580611a62575b5060c43580611a4b575b5060e43580611a27575b506101043580611a03575b5061012435806119d2575b50610144358061195f575b506101643590816118ed578280f35b601e5482106119005750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61196e620186a0821115612053565b601f54811161198057601e55386118de565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386118d3565b611a11620186a08210612053565b611a1e601b548211612053565b601c55386118c8565b611a35620186a08210612053565b611a42601c548210612053565b601b55386118bd565b611a59620186a08210612053565b601d55386118b3565b611a71620186a0821115612053565b601a55386118a9565b611a89620186a0821115612053565b6019553861189f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611894565b8291611adf601054611f30565b601f8111611bcd575b508790601f8411600114611b4d578893611b40575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461188b565b0101359050843880611afd565b60108952601f198416945060008051602061322483398151915292509087908960205b878210611bae5750508460019610611b92575b50505050811b01601055611b14565b60001960f88660031b161c199201013516905538808681611b83565b8285019093013585556001949094019389929182019190810190611b70565b601089529092509050600080516020613224833981519152601f840160051c810160208510611c25575b91849391601f8994920160051c01905b818110611c145750611ae8565b898155859450889350600101611c07565b5080611bf7565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611883565b611c79620186a0821115612053565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a36020553861187c565b8680fd5b50346102e55760403660031901126102e557610f85611ccb611e33565b6024359033612b3d565b50346102e55760603660031901126102e557611cef611e33565b611cf7611e5f565b611cff611e6e565b9060018060a01b03928391611d1983600554163314612008565b15611dab571690811590811591611da3575b5015611d6657806005549283166000805160206131c48339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d2b565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611ddd612377565b825191151582526020820152f35b9050346117f45760403660031901126117f4576040602092611e0b611e33565b611e13611e49565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f1a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f60575b6020831014611f4a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f3f565b6001600160401b038111611f7d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f7d57604052565b61010081019081106001600160401b03821117611f7d57604052565b608081019081106001600160401b03821117611f7d57604052565b601f909101601f19168101906001600160401b03821190821017611f7d57604052565b1561200f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561205a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561087b57565b81156120b0570490565b634e487b7160e01b600052601260045260246000fd5b604d811161087b57600a0a90565b9190820391821161087b57565b9190820180921161087b57565b8181039291600013801582851316918412161761087b57565b60145491929161215091612141916121379161212d906001600160801b03831690612093565b9060801c906120a6565b93601f5490612093565b61214a836120c6565b906120a6565b808310612218576121646121a091846120d4565b9161219b61219561218c601e5461218661217d866120c6565b602154906120e1565b90612093565b61214a846120c6565b916120c6565b6120ee565b6509184e72a0009081810291818305149015171561087b57670de0b6b3a76400009182810292818405149015171561087b5780156120b057600160ff1b9180831460001983141661087b570590600082121561221157811461087b57600003905b80821161220c575090565b905090565b5090612201565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561235d57612252612fec565b9061225e86151561256f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612352578591612323575b50928594926123036018936122de612317996122d96122d060409a620186a06022540490612093565b601e5490612093565b6120a6565b815190936001600160801b039186916122f991841690612093565b92015116906120a6565b81811061231b57035b9783525220546125bb565b9091565b50508261230c565b90508381813d831161234b575b61233a8183611fe5565b81010312610a6157516123176122a7565b503d612330565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546123ac81611f30565b9081602486015260019085828216918260001461254b575050600114612507575b5050600083809203925af180156124fc5760009485916124c1575b5092841561246357831561242957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612476601354601254906120e1565b421161248757505060115490612423565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124f5575b6124d98183611fe5565b810103126102e55750806124ec8561236a565b940151386123e8565b503d6124cf565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612530575050505082016044016000836123cd565b80548c8601604401528a97508b965093019287908201612518565b8195506000949193506044925060ff191682840152151560051b82010192506123cd565b1561257657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6125c682151561256f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561266657600091612633575b50906122d961261f9260225490612093565b620186a061262f601e5483612093565b0491565b906020823d821161265e575b8161264c60209383611fe5565b810103126102e55750516122d961260d565b3d915061263f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612695916125bb565b91835260176020526040832054801561279e57811561279e5781811061279e5782811015612794576014546126de918391610bdf9161212d906001600160801b03831690612093565b90620186a0928383029280840485149015171561278057612703929161214a916120d4565b91601b5491601c549361271685856120ee565b80820291848212600160ff1b82141661278057818305149015171561276c5705818482019485129112908015821691151617612758575080821261220c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806128a4575b156127ff577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f7d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127d6565b156128d457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561291957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f1a578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612b9b57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612be657565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612c30575050565b6000818152602090600382526040918282203383528152848383205410612c9a5783825260038152828220338352815282822054600101612c73575b5050505050565b612c8e938252600381528282209033835252209182546120d4565b90553880808080612c6c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612ce182611f93565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612df2576018815260408620548015612c6c5781612d34612cd4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612de6578097612db0575b50506122f9612d906122d0612dab969798620186a06022540490612093565b95612da660018060801b03948587511690612093565b612093565b111590565b9096508187813d8311612ddf575b612dc88183611fe5565b810103126102e557509451946122f9612d90612d71565b503d612dbe565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612f6d576014546001600160801b0316908115612f6657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612666578591600091612f2d575b50600460405180948193631a674cc560e11b8352165afa93841561266657600094612efe575b5050612e969192670de0b6b3a764000092839160295490612093565b049081811015612ef557612ead602a5480926120d4565b8381029080820485149015171561087b5761214a612ece92612ee9946120d4565b60275492612ee360285492612da684876120d4565b046120e1565b9080821161220c575090565b50505060275490565b81813d8311612f26575b612f128183611fe5565b81010312610e9457519250612e9638612e7a565b503d612f08565b909181813d8311612f5f575b612f438183611fe5565b810103126117f457519082821682036102e55750849038612e54565b503d612f39565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561266657600091612fa5575090565b906020823d8211612fcb575b81612fbe60209383611fe5565b810103126102e557505190565b3d9150612fb1565b6001600160801b03918216908216019190821161087b57565b60006020604051612ffc81611f93565b82815201526025546001600160401b03919061301d9060401c8316426120d4565b9182156130745761306f612da691670de0b6b3a764000061306461303f612cd4565b9660018060801b03958694858a5116906301e1338061305c612dfc565b041690612093565b041682855116612fd3565b168252565b50905061307f612cd4565b90565b60405161308e81611f93565b60255460018060401b03908181168352818160401c166130b56020850191808352426120d4565b928315612c6c57602094816301e133806130cd612dfc565b0416815281421683526130de612cd4565b670de0b6b3a764000061310360018060801b0397612da6898551168787511690612093565b049561311481881682845116612fd3565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b03918216815291166020820152604081019190915260608101919091526080019056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122024f925abbe76baf14bd3fc5706d55993e6e04b1453a06e898a6c7d4e737a1c3e64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611deb5750806302ce728f14611dc2578063078dfbe714611cd5578063095ea7b314611cae5780630996efb7146117f85780630c4e84f0146116dc57806318160ddd146116c05780631c9e379b146116875780631da8bf10146115c55780631fb8f81a146115a757806323b872dd14611420578063331960ff1461140257806334ce998a146113d957806334d441d0146113bb5780633644e515146113a057806337b6b7b91461138257806338d52e0f146113595780633ba0b9a91461133b5780633f741adb1461131657806340626d8b146112f857806344de240a146112da578063473e3ce7146112bc57806348e4163e146112835780634e71e0c8146111e7578063529898f2146111c957806357935462146111ab5780636b19ad161461118d5780636c3d8b8f1461116457806370a082311461112b57806372778547146110f357806374645ff314610ff25780637dc0d1d014610fc95780637ecebe0014610f905780637fa0b84e14610f5e5780638285ef4014610f2c57806387b2793714610ef35780638c5d0ed314610ed55780638da5cb5b14610eac578063910dd7c814610c9b578063959916dc14610c7e57806399a9702814610c565780639e15e89f14610c1b578063a9059cbb14610b38578063b0e21e8a14610b1a578063b27c0e7414610ae7578063b7113f1914610ac4578063bb4cfe3b14610aa6578063bde39c5d14610a88578063c1ad5c8d14610a65578063cce19f81146108ff578063ce8849ed146108d6578063d505accf14610747578063d8dfeb451461071e578063dd62ed3e146106cf578063de406577146106a6578063e0996cb614610688578063e30c39781461065f578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e2613082565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611e33565b610364611e49565b9061036d611e6e565b608435926001600160a01b0390811692909160643561038e30861415612b94565b6002600052602090600782526103ac60ff6040600020541615612bdf565b86156105e1575b6103bd8785612c1c565b8615610560575b5084875260188152604087206103db8782546120e1565b90556015546103ea87826120e1565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b61043692506120d4565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c58183611fe5565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561055c578783916105239383604051809681958294630208d92960e11b8452308d60048601613179565b03925af1801561055157610539575b505061043e565b61054290611f6a565b61054d578538610532565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105d65787916105a9575b5094386103c4565b90508581813d83116105cf575b6105c08183611fe5565b810103126104d75751386105a1565b503d6105b6565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa908115610654578891610627575b50956103b3565b90508181813d831161064d575b61063e8183611fe5565b810103126104d7575138610620565b503d610634565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106e9611e33565b60406106f3611e49565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761075636611e7d565b9183919395949542116108915760018060a01b0392838816948560005260046020526040600020928354600019811461087b576108279561081f956001830190556040519060208201926000805160206131a48339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b5190206107ee6127a4565b9060405190602082019261190160f01b8452602283015260428201526042815261081781611fca565b519020612a6a565b91909161296b565b1603610836576102e292612b3d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061090f36611ecc565b60038492939452600760205261092c60ff60408420541615612bdf565b610934612377565b505061093e613082565b6001600160a01b03838116939061095730861415612b94565b6109618387612c1c565b828187169586865260186020526040862061097d8382546120d4565b905561098b826015546120d4565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610a6157856109e4869282968395630208d92960e11b85523060048601613179565b03925af18015610a5657610a41575b50601154610a0091612cfa565b15610a085780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a4f610a009293611f6a565b91906109f3565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610a80612dfc565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b52611e33565b60243580928115801590610c09575b610b99575b50506040519182526001600160a01b031690339060008051602061320483398151915290602090a3602060405160018152f35b33815260016020526040812054610bb2838210156128cd565b6001600160a01b0384169033829003610bcd575b5050610b66565b604093610be491610bdf841515612912565b6120d4565b338352600160205283832055815220610bfe8382546120e1565b905581388080610bc6565b50336001600160a01b03841614610b61565b50346102e55760403660031901126102e5576060610c43610c3a611e33565b60243590612220565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610a80610c75611e33565b60243590612672565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b0380821161055c573660238301121561055c578160040135908111610e98578260405192610cef6020601f19601f8601160185611fe5565b8284526020840192366024828401011161055c578060246020930185378401015260243561ffff81168103610e9457610100918284805181010312610a6157610d379061236a565b610d4360408501612957565b91610d5060608601612957565b9460808101519460a08201519260c08301519160ff83168303610e905760e084015193015193804211610891578515610e7b576000805160206131a4833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610e67579161ffff610e249896949261081f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e1581611fae565b602081519101206107ee6127a4565b6001600160a01b038381169116036108365715610e51576102e2926001600160a01b039081169116612b3d565b6102e2926001600160a01b039081169116612aef565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e483398151915291610d94565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f1b611e33565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610f85610f7b611e33565b6024359033612aef565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610fb8611e33565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361101483611f30565b8083526001938085169081156110d25750600114611087575b5061103a92500382611fe5565b60405180926020908183528351918281850152815b83811061107057505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161104f565b6010865260008051602061322483398151915293602092508691905b8183106110ba57505061103a93508201013861102d565b855487840185015294850194869450918301916110a3565b905061103a94506020925060ff191682840152151560051b8201013861102d565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61111f84611f01565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03611153611e33565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b03908181163381900361123f57806005549384166000805160206131c48339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b036112ab611e33565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610a80604435602435600435612107565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610a806127a4565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e55761142f36611ecc565b91928261146b575b506040519182526001600160a01b0390811692169060008051602061320483398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611494828610156128cd565b8616938484036114a9575b5050505050611437565b838652600283526040808720338852845286205460018101611513575b50926001602096936114f18794604097610bdf6000805160206132048339815191529c9a1515612912565b92855252838320558152206115078582546120e1565b9055913880858161149f565b9091811061156757926001602096936114f18a6000805160206132048339815191529a98956115448260409a6120d4565b86895260028552898920338a5285528989205594975094979950509396506114c6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e5576115d436611e7d565b90839594954211610891576001600160a01b03878116808a52600460205260408a208054919692959290600019831461167357826116649694928d92600161081f98960190556040519160208301936000805160206131e4833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b1603610836576102e292612aef565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b036116af611e33565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e55760043560098110156117f457611702611e5f565b6008549091906001600160a01b031633036117b85760ff61172282611f01565b5416151591151591821461177e57808260ff61174061176e94611f01565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f01565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e557602480356001600160a01b0381811691829003610e94576001600160401b0360443581811161054d573660238201121561054d57806004013591821161054d573685838301011161054d5760643593838516809503611caa5761187384600554163314612008565b60043580611c6a575b5080611c2c575b508482611ad2575b50505081611a92575b505060843580611a7a575b5060a43580611a62575b5060c43580611a4b575b5060e43580611a27575b506101043580611a03575b5061012435806119d2575b50610144358061195f575b506101643590816118ed578280f35b601e5482106119005750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61196e620186a0821115612053565b601f54811161198057601e55386118de565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386118d3565b611a11620186a08210612053565b611a1e601b548211612053565b601c55386118c8565b611a35620186a08210612053565b611a42601c548210612053565b601b55386118bd565b611a59620186a08210612053565b601d55386118b3565b611a71620186a0821115612053565b601a55386118a9565b611a89620186a0821115612053565b6019553861189f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611894565b8291611adf601054611f30565b601f8111611bcd575b508790601f8411600114611b4d578893611b40575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461188b565b0101359050843880611afd565b60108952601f198416945060008051602061322483398151915292509087908960205b878210611bae5750508460019610611b92575b50505050811b01601055611b14565b60001960f88660031b161c199201013516905538808681611b83565b8285019093013585556001949094019389929182019190810190611b70565b601089529092509050600080516020613224833981519152601f840160051c810160208510611c25575b91849391601f8994920160051c01905b818110611c145750611ae8565b898155859450889350600101611c07565b5080611bf7565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611883565b611c79620186a0821115612053565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a36020553861187c565b8680fd5b50346102e55760403660031901126102e557610f85611ccb611e33565b6024359033612b3d565b50346102e55760603660031901126102e557611cef611e33565b611cf7611e5f565b611cff611e6e565b9060018060a01b03928391611d1983600554163314612008565b15611dab571690811590811591611da3575b5015611d6657806005549283166000805160206131c48339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d2b565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611ddd612377565b825191151582526020820152f35b9050346117f45760403660031901126117f4576040602092611e0b611e33565b611e13611e49565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f1a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f60575b6020831014611f4a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f3f565b6001600160401b038111611f7d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f7d57604052565b61010081019081106001600160401b03821117611f7d57604052565b608081019081106001600160401b03821117611f7d57604052565b601f909101601f19168101906001600160401b03821190821017611f7d57604052565b1561200f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561205a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561087b57565b81156120b0570490565b634e487b7160e01b600052601260045260246000fd5b604d811161087b57600a0a90565b9190820391821161087b57565b9190820180921161087b57565b8181039291600013801582851316918412161761087b57565b60145491929161215091612141916121379161212d906001600160801b03831690612093565b9060801c906120a6565b93601f5490612093565b61214a836120c6565b906120a6565b808310612218576121646121a091846120d4565b9161219b61219561218c601e5461218661217d866120c6565b602154906120e1565b90612093565b61214a846120c6565b916120c6565b6120ee565b6509184e72a0009081810291818305149015171561087b57670de0b6b3a76400009182810292818405149015171561087b5780156120b057600160ff1b9180831460001983141661087b570590600082121561221157811461087b57600003905b80821161220c575090565b905090565b5090612201565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561235d57612252612fec565b9061225e86151561256f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612352578591612323575b50928594926123036018936122de612317996122d96122d060409a620186a06022540490612093565b601e5490612093565b6120a6565b815190936001600160801b039186916122f991841690612093565b92015116906120a6565b81811061231b57035b9783525220546125bb565b9091565b50508261230c565b90508381813d831161234b575b61233a8183611fe5565b81010312610a6157516123176122a7565b503d612330565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546123ac81611f30565b9081602486015260019085828216918260001461254b575050600114612507575b5050600083809203925af180156124fc5760009485916124c1575b5092841561246357831561242957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612476601354601254906120e1565b421161248757505060115490612423565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124f5575b6124d98183611fe5565b810103126102e55750806124ec8561236a565b940151386123e8565b503d6124cf565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612530575050505082016044016000836123cd565b80548c8601604401528a97508b965093019287908201612518565b8195506000949193506044925060ff191682840152151560051b82010192506123cd565b1561257657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6125c682151561256f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561266657600091612633575b50906122d961261f9260225490612093565b620186a061262f601e5483612093565b0491565b906020823d821161265e575b8161264c60209383611fe5565b810103126102e55750516122d961260d565b3d915061263f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612695916125bb565b91835260176020526040832054801561279e57811561279e5781811061279e5782811015612794576014546126de918391610bdf9161212d906001600160801b03831690612093565b90620186a0928383029280840485149015171561278057612703929161214a916120d4565b91601b5491601c549361271685856120ee565b80820291848212600160ff1b82141661278057818305149015171561276c5705818482019485129112908015821691151617612758575080821261220c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806128a4575b156127ff577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f7d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127d6565b156128d457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561291957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f1a578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612b9b57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612be657565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612c30575050565b6000818152602090600382526040918282203383528152848383205410612c9a5783825260038152828220338352815282822054600101612c73575b5050505050565b612c8e938252600381528282209033835252209182546120d4565b90553880808080612c6c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612ce182611f93565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612df2576018815260408620548015612c6c5781612d34612cd4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612de6578097612db0575b50506122f9612d906122d0612dab969798620186a06022540490612093565b95612da660018060801b03948587511690612093565b612093565b111590565b9096508187813d8311612ddf575b612dc88183611fe5565b810103126102e557509451946122f9612d90612d71565b503d612dbe565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612f6d576014546001600160801b0316908115612f6657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612666578591600091612f2d575b50600460405180948193631a674cc560e11b8352165afa93841561266657600094612efe575b5050612e969192670de0b6b3a764000092839160295490612093565b049081811015612ef557612ead602a5480926120d4565b8381029080820485149015171561087b5761214a612ece92612ee9946120d4565b60275492612ee360285492612da684876120d4565b046120e1565b9080821161220c575090565b50505060275490565b81813d8311612f26575b612f128183611fe5565b81010312610e9457519250612e9638612e7a565b503d612f08565b909181813d8311612f5f575b612f438183611fe5565b810103126117f457519082821682036102e55750849038612e54565b503d612f39565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561266657600091612fa5575090565b906020823d8211612fcb575b81612fbe60209383611fe5565b810103126102e557505190565b3d9150612fb1565b6001600160801b03918216908216019190821161087b57565b60006020604051612ffc81611f93565b82815201526025546001600160401b03919061301d9060401c8316426120d4565b9182156130745761306f612da691670de0b6b3a764000061306461303f612cd4565b9660018060801b03958694858a5116906301e1338061305c612dfc565b041690612093565b041682855116612fd3565b168252565b50905061307f612cd4565b90565b60405161308e81611f93565b60255460018060401b03908181168352818160401c166130b56020850191808352426120d4565b928315612c6c57602094816301e133806130cd612dfc565b0416815281421683526130de612cd4565b670de0b6b3a764000061310360018060801b0397612da6898551168787511690612093565b049561311481881682845116612fd3565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b03918216815291166020820152604081019190915260608101919091526080019056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122024f925abbe76baf14bd3fc5706d55993e6e04b1453a06e898a6c7d4e737a1c3e64736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132439283620001ab843960805183612850015260a0518361291b015260c0518361281a015260e0518361289f015251826128c50152518161287c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d7a4868fa33e505e89ef8b458a1130bf55b24a8ffaddcf087d664508d9f4522b64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d7a4868fa33e505e89ef8b458a1130bf55b24a8ffaddcf087d664508d9f4522b64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCommon.json b/src/artifacts/tapioca-bar/BBCommon.json index 419665e9..145c1d52 100644 --- a/src/artifacts/tapioca-bar/BBCommon.json +++ b/src/artifacts/tapioca-bar/BBCommon.json @@ -1553,8 +1553,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612b099283620001ab8439608051836122c5015260a0518361238f015260c0518361228f015260e051836123140152518261233a015251816122f10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220ae2954b7c8389b54f01e0f6b6faaec482dfa0c90d17563cc952fa9f9625c3bbf64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220ae2954b7c8389b54f01e0f6b6faaec482dfa0c90d17563cc952fa9f9625c3bbf64736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201533ed181e8665e8d9480374a8b479a4059b67d0608a98b43bc2783cbc9bbbaa64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201533ed181e8665e8d9480374a8b479a4059b67d0608a98b43bc2783cbc9bbbaa64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLendingCommon.json b/src/artifacts/tapioca-bar/BBLendingCommon.json index 211bd1f1..2d0272cf 100644 --- a/src/artifacts/tapioca-bar/BBLendingCommon.json +++ b/src/artifacts/tapioca-bar/BBLendingCommon.json @@ -1553,8 +1553,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612b099283620001ab8439608051836122c5015260a0518361238f015260c0518361228f015260e051836123140152518261233a015251816122f10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220774d05c3673502ed32cf37c0761a238de4472c43b84204d4b7127253ed711ea264736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220774d05c3673502ed32cf37c0761a238de4472c43b84204d4b7127253ed711ea264736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e8bc3f742a3a2c2c8d999713a14498093bcfa8b91250d2c43edeccec689d383564736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e8bc3f742a3a2c2c8d999713a14498093bcfa8b91250d2c43edeccec689d383564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLeverage.json b/src/artifacts/tapioca-bar/BBLeverage.json index 0a3d7fcc..58e33564 100644 --- a/src/artifacts/tapioca-bar/BBLeverage.json +++ b/src/artifacts/tapioca-bar/BBLeverage.json @@ -1636,8 +1636,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561435c9283620001ab843960805183612fe3015260a051836130ad015260c05183612fad015260e05183613032015251826130580152518161300f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146125cc5750816302ce728f146125a3578163078dfbe7146124b2578163095ea7b31461248b5781630996efb714611fec5781630c4e84f014611ed457816318160ddd14611eb85781631c9e379b14611e7f5781631da8bf1014611ddb5781631ee9c8f2146115805781631fb8f81a1461156257816323b872dd146113bf578163331960ff146113a157816334ce998a1461137857816334d441d01461135a5781633644e5151461133f57816337b6b7b91461132157816338d52e0f146112f85781633ba0b9a9146112da5781633f741adb146112b557816340626d8b1461129757816344de240a14611279578163473e3ce71461125b57816348e4163e146112225781634e71e0c814611186578163529898f214611168578163579354621461114a57816358db9afe14610d175781636b19ad1614610cf95781636c3d8b8f14610cd057816370a0823114610c975781637277854714610c5f57816374645ff314610b5e5781637dc0d1d014610b355781637ecebe0014610afc5781637fa0b84e14610aca5781638285ef4014610a9857816387b2793714610a5f5781638c5d0ed314610a415781638da5cb5b14610a18578163910dd7c8146107e0578163959916dc146107c357816399a970281461079b5781639e15e89f14610760578163a9059cbb1461067d578163b0e21e8a1461065f578163b27c0e741461062c578163b7113f1914610609578163bb4cfe3b146105eb578163bde39c5d146105cd578163c1ad5c8d146105aa578163ce8849ed14610581578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613664565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce612614565b60406103d861262a565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b90503461057d5761043c36612692565b8394969793929192421161054a57610508926105009260018060a01b0395868b169788600052600460205260406000209182549261047984613303565b90556040519160208301936000805160206142678339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b5190206104cf612faa565b9060405190602082019261190160f01b845260228301526042820152604281526104f88161278e565b51902061327e565b91909161317f565b1603610517576102e492613360565b60405162461bcd60e51b815260206004820152601e60248201526000805160206142478339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206142278339815191526044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105c56133b7565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e757602554604080516001600160401b03808416825292821c909216602083015290f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e757610697612614565b6024358092811580159061074e575b6106de575b50506040519182526001600160a01b03169033906000805160206142e783398151915290602090a3602060405160018152f35b338152600160205260408120546106f7838210156130d3565b6001600160a01b0384169033829003610712575b50506106ab565b60409361072991610724841515613118565b6128e5565b3383526001602052838320558152206107438382546128f2565b90558183808061070b565b50336001600160a01b038416146106a6565b82346102e75760403660031901126102e757606061078861077f612614565b60243590612a31565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105c56107ba612614565b60243590612e78565b82346102e757806003193601126102e75760208054604051908152f35b90503461057d57604036600319011261057d576004356001600160401b038111610a145736602382011215610a145780600401359061081e826127e8565b9261082c60405194856127c5565b82845284602092838601943660248284010111610a14578060248693018737860101526024359161ffff8316809303610a1057610100938486805181010312610a0c5761087890612b70565b916108856040870161315d565b906108926060880161315d565b9660808101519660a0820151926108ab60c08401613171565b91818401519301519360018060a01b03808097169b16988142116109d9579289888d9897946109749794610500978f8e6000146109c457600080516020614267833981519152955b8d6000526004865260406000209283549361090d85613303565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610941816127a9565b51902061094c612faa565b90604051908a82019261190160f01b845260228301526042820152604281526104f88161278e565b1603610992575015610989576102e492613360565b6102e492613312565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206142478339815191526044820152fd5b6000805160206142c7833981519152956108f3565b60405162461bcd60e51b815260048101899052601d60248201526000805160206142278339815191526044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610a87612614565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610af1610ae7612614565b6024359033613312565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b24612614565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610b8083612710565b808352600193808516908115610c3e5750600114610bf3575b50610ba6925003826127c5565b60405180926020908183528351918281850152815b838110610bdc57505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610bbb565b6010865260008051602061430783398151915293602092508691905b818310610c26575050610ba6935082010185610b99565b85548784018501529485019486945091830191610c0f565b9050610ba694506020925060ff191682840152151560051b82010185610b99565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610c8b846126e1565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610cbf612614565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610d31612614565b610d39612640565b916084356001600160401b03811161057d57610d59903690600401612665565b9290600660005260209460078652610d7960ff6040600020541615613762565b610d81612b7d565b5050610d8b613664565b610da06001600160a01b0384163014156137df565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156110fa57610df191610dec91879161111d575b506001600160a01b038416906139a6565b613844565b610dfd60243584613ca8565b6001600160a01b038316845260188652604084208054610e2090602435906128e5565b9055610e306024356015546128e5565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a0c57630208d92960e11b835286918391829084908290610eb090602435906001600160a01b038b16306004860161388b565b03925af180156110fa57908591611105575b5050610eef610140600c54600e546040519384928392633d9545e960e11b84526024359160048501613b7d565b03816001600160a01b0386165afa9081156110fa57856040949392869282916110c9575b50610f378651998a968795869463efa84c6d60e01b86526044359060048701613bbd565b03926001600160a01b03165af19182156110865780938193611092575b50610f63604435851015613c66565b6001600160a01b038216815260178552604081205490610f8a82610f8561358f565b613da9565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611086579161104c575b506105c593610ff493929111610ff957610fe9908280613e07565b505b601154906138b5565b61379f565b5061100261358f565b80516001600160801b03908116611027575050611021845b8280613e07565b50610feb565b818161103e611047938a611021960151168961288e565b915116906128b7565b61101a565b929190508583813d831161107f575b61106581836127c5565b8101031261107a5791519091906105c5610fce565b600080fd5b503d61105b565b604051903d90823e3d90fd5b9092506110b891935060403d6040116110c2575b6110b081836127c5565b810190613ba7565b9290929185610f54565b503d6110a6565b6110ed91506101403d610140116110f3575b6110e581836127c5565b810190613a93565b8a610f13565b503d6110db565b6040513d87823e3d90fd5b61110e9061274a565b611119578387610ec2565b8380fd5b61113d9150893d8b11611143575b61113581836127c5565b81019061382a565b89610ddb565b503d61112b565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b0390818116338190036111de57806005549384166000805160206142a78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b0361124a612614565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105c5604435602435600435612918565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105c5612faa565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576113d9612614565b906113e261262a565b6044359182611420575b506040519182526001600160a01b039081169216906000805160206142e783398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611449828610156130d3565b86169384840361145e575b50505050506113ec565b838652600283526040862033600052835260406000205460001981036114cc575b50926001602096936114aa87946040976107246000805160206142e78339815191529c9a1515613118565b92855252838320558152206114c08582546128f2565b90559185808581611454565b9091811061152257926001602096936114aa8a6000805160206142e78339815191529a98956114fd8260409a6128e5565b868952600285528989203360005285528960002055949750949799505093965061147f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e75761159a612614565b608435906001600160a01b0382168203610a145760a4356001600160401b038111611119576115cd903690600401612665565b92906005855260076020526115e960ff60408720541615613762565b6115f1612b7d565b50506115fb613664565b6116106001600160a01b0384163014156137df565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611c025761165d91610dec918891611dbc575b506001600160a01b038516906139a6565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611db1578296611d7d575b5085611d1d575b505050620186a06116c760205460243561288e565b049260018060a01b03821687526024602052604087206116e88582546128f2565b90556116f261358f565b936116ff816024356128f2565b946000602060405161171081612773565b828152015280516001600160801b03908116611cc1578061173781895b16828551166135b5565b16825280602083019261174f828a16838651166135b5565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611cab575b5050505050505015611c6857879460018060a01b03871686526017602052604086206117b28282546128f2565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611c64578460405180926340c10f1960e01b82528183816118316024353060048401613d5f565b03925af19081156110fa578591611c50575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611bb7578792611c0d575b5060095460405163095ea7b360e01b81529260209284929091839182906118c490602435906001600160a01b031660048401613d5f565b03925af18015611c0257611bc2575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119139160243591908b1690309060048601613d7a565b03925af1938415611bb7578794611b90575b506101409061193a600e5495600c54926128f2565b946119596040519687938493633d9545e960e11b855260048501613b7d565b03816001600160a01b0385165afa928684156110865760409486928291611b6f575b5061199f86519889968795869463efa84c6d60e01b86526064359060048701613bbd565b03926001600160a01b03165af18015611b645783928491611b3f575b506119ca606435841015613c66565b6119d48183613ca8565b8015611ab7575b6001600160a01b038216845260186020526040842080546119fd9083906128f2565b9055611a0b816015546128f2565b601555600c546009546001600160a01b0316908590823b1561057d57611a4c92849183604051809681958294630208d92960e11b8452308c6004860161388b565b03925af180156110fa57611aa3575b506020936105c592610ff49290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a4601154906138b5565b611aad859161274a565b6111195784611a5b565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611b34578491611b02575b506119db565b90506020813d602011611b2c575b81611b1d602093836127c5565b8101031261107a575184611afc565b3d9150611b10565b6040513d86823e3d90fd5b9050611b5b91925060403d6040116110c2576110b081836127c5565b919091846119bb565b6040513d85823e3d90fd5b611b8a91506101403d610140116110f3576110e581836127c5565b8961197b565b610140919450611bae9060403d6040116110c2576110b081836127c5565b90509390611925565b6040513d89823e3d90fd5b6020813d602011611bfa575b81611bdb602093836127c5565b81010312610a1057604091611bf261191392612b70565b5091506118d3565b3d9150611bce565b6040513d88823e3d90fd5b91506020823d602011611c48575b81611c28602093836127c5565b81010312610a0c576118c4602091611c408994612b70565b50915061188d565b3d9150611c1b565b611c599061274a565b611119578388611843565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b161792161617111590508980808b818080611785565b602082019680611cf3611ce4611cda858c51168461288e565b85875116906128b7565b998461103e818851168d61288e565b10611d04575b61173782809261172d565b9661173782611d138193613303565b9992505050611cf9565b823b1561057d57604051630208d92960e11b8152928391829084908290611d54908b906001600160a01b038b168e6004860161388b565b03925af18015611bb757611d6a575b86816116b2565b611d769096919661274a565b9486611d63565b9095506020813d602011611da9575b81611d99602093836127c5565b8101031261057d575194896116ab565b3d9150611d8c565b6040513d84823e3d90fd5b611dd5915060203d6020116111435761113581836127c5565b8861164c565b90503461057d57611deb36612692565b8397949697929192421161054a57611e7092610500928a60018060a01b0396878c169889835260046020526040832091825492611e2784613303565b90556040519260208401946000805160206142c7833981519152865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b1603610517576102e492613312565b82346102e75760203660031901126102e7576020906040906001600160a01b03611ea7612614565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e757600435600981101561057d57611efa612656565b6008549091906001600160a01b03163303611fb05760ff611f1a826126e1565b54161515911515918214611f7657808260ff611f38611f66946126e1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46126e1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576024356001600160a01b03818116929183900361057d576001600160401b039260443584811161111957612037903690600401612665565b9094612041612640565b9261205185600554163314612803565b6004358061244b575b508061240d575b50816122b1575b505081929350169081612271575b505060843580612259575b5060a43580612241575b5060c4358061222a575b5060e43580612206575b5061010435806121e2575b5061012435806121b1575b50610144358061213d575b5061016435806120ce575080f35b601e5481106120dd57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61214c620186a082111561284e565b601f54811161215e57601e55816120c0565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655816120b5565b6121f0620186a0821061284e565b6121fd601b54821161284e565b601c55816120aa565b612214620186a0821061284e565b612221601c54821061284e565b601b558161209f565b612238620186a0821061284e565b601d5581612095565b612250620186a082111561284e565b601a558161208b565b612268620186a082111561284e565b60195581612081565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180612076565b81116123f9576122c2601054612710565b601f81116123aa575b5083601f82116001146123315781908596859692612326575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1839285612068565b0135905086806122e4565b60108552600080516020614307833981519152908560205b601f1985168210612392575050908495968392600194601f19811610612378575b505050811b016010556122fa565b0135600019600384901b60f8161c1916905586808061236a565b80600184958294958c01358155019401920190612349565b60108552600080516020614307833981519152601f830160051c8101602084106123f2575b601f90920160051c01905b8181106123e757506122cb565b8581556001016123da565b50806123cf565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186612061565b61245a620186a082111561284e565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a36020558761205a565b82346102e75760403660031901126102e757610af16124a8612614565b6024359033613360565b82346102e75760603660031901126102e7576124cc612614565b6124d4612656565b6044359081151582036111195760018060a01b039283916124fa83600554163314612803565b1561258c571690811590811591612584575b501561254757806005549283166000805160206142a78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461250c565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e75760406125be612b7d565b825191151582526020820152f35b83903461057d57604036600319011261057d5760406020926125ec612614565b6125f461262a565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361107a57565b602435906001600160a01b038216820361107a57565b606435906001600160a01b038216820361107a57565b60243590811515820361107a57565b9181601f8401121561107a578235916001600160401b03831161107a576020838186019501011161107a57565b60e090600319011261107a576001600160a01b0390600435828116810361107a5791602435908116810361107a5790604435906064359060843560ff8116810361107a579060a4359060c43590565b60098110156126fa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612740575b602083101461272a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161271f565b6001600160401b03811161275d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761275d57604052565b608081019081106001600160401b0382111761275d57604052565b61010081019081106001600160401b0382111761275d57604052565b601f909101601f19168101906001600160401b0382119082101761275d57604052565b6001600160401b03811161275d57601f01601f191660200190565b1561280a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561285557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156128a157565b634e487b7160e01b600052601160045260246000fd5b81156128c1570490565b634e487b7160e01b600052601260045260246000fd5b604d81116128a157600a0a90565b919082039182116128a157565b919082018092116128a157565b818103929160001380158285131691841216176128a157565b60145491929161296191612952916129489161293e906001600160801b0383169061288e565b9060801c906128b7565b93601f549061288e565b61295b836128d7565b906128b7565b808310612a29576129756129b191846128e5565b916129ac6129a661299d601e5461299761298e866128d7565b602154906128f2565b9061288e565b61295b846128d7565b916128d7565b6128ff565b6509184e72a000908181029181830514901517156128a157670de0b6b3a7640000918281029281840514901517156128a15780156128c157600160ff1b918083146000198314166128a15705906000821215612a225781146128a157600003905b808211612a1d575090565b905090565b5090612a12565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612b6357612a636135ce565b90612a6f861515612d75565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156110fa578591612b34575b5092859492612b14601893612aef612b2899612aea612ae160409a620186a0602254049061288e565b601e549061288e565b6128b7565b815190936001600160801b03918691612b0a9184169061288e565b92015116906128b7565b818110612b2c57035b978352522054612dc1565b9091565b505082612b1d565b90508381813d8311612b5c575b612b4b81836127c5565b81010312611c645751612b28612ab8565b503d612b41565b5050509192505080918190565b5190811515820361107a57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612bb281612710565b90816024860152600190858282169182600014612d51575050600114612d0d575b5050600083809203925af18015612d02576000948591612cc7575b50928415612c69578315612c2f57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612c7c601354601254906128f2565b4211612c8d57505060115490612c29565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612cfb575b612cdf81836127c5565b810103126102e7575080612cf285612b70565b94015138612bee565b503d612cd5565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612d3657505050508201604401600083612bd3565b80548c8601604401528a97508b965093019287908201612d1e565b8195506000949193506044925060ff191682840152151560051b8201019250612bd3565b15612d7c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612dcc821515612d75565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612e6c57600091612e39575b5090612aea612e25926022549061288e565b620186a0612e35601e548361288e565b0491565b906020823d8211612e64575b81612e52602093836127c5565b810103126102e7575051612aea612e13565b3d9150612e45565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612e9b91612dc1565b918352601760205260408320548015612fa4578115612fa457818110612fa45782811015612f9a57601454612ee49183916107249161293e906001600160801b0383169061288e565b90620186a09283830292808404851490151715612f8657612f09929161295b916128e5565b91601b5491601c5493612f1c85856128ff565b80820291848212600160ff1b821416612f86578183051490151715612f725705818482019485129112908015821691151617612f5e5750808212612a1d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806130aa575b15613005577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761275d5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612fdc565b156130da57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561311f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361107a57565b519060ff8216820361107a57565b60058110156126fa57806131905750565b600181036131d85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036132255760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461322e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116132f75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156132ea5781516001600160a01b038116156132e4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146128a15760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613529576014546001600160801b031690811561352257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612e6c5785916000916134ed575b50600460405180948193631a674cc560e11b8352165afa938415612e6c576000946134be575b50506134519192670de0b6b3a76400009283916029549061288e565b0490818110156134b557613468602a5480926128e5565b838102908082048514901517156128a15761295b613489926134a9946128e5565b602754926134a36028549261349e84876128e5565b61288e565b046128f2565b90808211612a1d575090565b50505060275490565b81813d83116134e6575b6134d281836127c5565b810103126111195751925061345138613435565b503d6134c8565b9182813d831161351b575b61350281836127c5565b810103126102e75750613515859161315d565b3861340f565b503d6134f8565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612e6c57600091613561575090565b906020823d8211613587575b8161357a602093836127c5565b810103126102e757505190565b3d915061356d565b6040519061359c82612773565b6014546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116128a157565b600060206040516135de81612773565b82815201526025546001600160401b0391906135ff9060401c8316426128e5565b9182156136565761365161349e91670de0b6b3a764000061364661362161358f565b9660018060801b03958694858a5116906301e1338061363e6133b7565b04169061288e565b0416828551166135b5565b168252565b50905061366161358f565b90565b60405161367081612773565b60255460018060401b03908181168352818160401c166136976020850191808352426128e5565b92831561375b57602094816301e133806136af6133b7565b0416815281421683526136c061358f565b670de0b6b3a76400006136e560018060801b039761349e89855116878751169061288e565b04956136f6818816828451166135b5565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561376957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156137a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156137e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9081602091031261107a575161ffff8116810361107a5790565b1561384b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b0380600094168452602060178152604085205490811561399c57601881526040862054801561375b57816138ef61358f565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611086578097613966575b5050612b0a61394b612ae1613961969798620186a0602254049061288e565b9561349e60018060801b0394858751169061288e565b111590565b9096508187813d8311613995575b61397e81836127c5565b810103126102e75750945194612b0a61394b61392c565b503d613974565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612e6c578493600091613a55575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612e6c57600091613a21575b50905090565b82813d8311613a4e575b613a3581836127c5565b810103126102e75750613a4790612b70565b8038613a1b565b503d613a2b565b9091929381813d8311613a8c575b613a6d81836127c5565b8101031261057d57519082821682036102e757508392919060446139e1565b503d613a63565b80910390610140821261107a576040805192606084016001600160401b0381118582101761275d578083526080821261107a57613acf8161278e565b613ad88461315d565b815260208401516080860152613aef83850161315d565b60a0860152606084015160c086015284526080607f1982011261107a5781908151613b198161278e565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261107a57613b72610120825193613b5d85612773565b613b6a6101008201612b70565b855201612b70565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919082604091031261107a576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613c6d57565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613cbc575050565b6000818152602090600382526040918282203383528152848383205410613d255783825260038152828220338352815282822054600101613cfe575050505050565b613d19938252600381528282209033835252209182546128e5565b9055388080808061375b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160a01b039091168152602081019190915260400190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613dca575090925050565b908161103e81613ded613de3613df6968651168861288e565b828a5116906128b7565b9751168761288e565b10613dfd57565b9061366190613303565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116140a9575b50831561406d5783613e43916140ca565b948386101561403157879885895260248452808920613e638882546128e5565b9055613e6d61358f565b9689858351613e7b81612773565b8281520152613e8a8689613da9565b9760018060801b0380613ea2818c16828551166140b1565b16825286820190613eb8818a16828451166140b1565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613ee98882546128e5565b9055613f1a838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d7a565b03925af180156140275790613f4793929161400b575b50613f3b888b6128e5565b80613fe8575b506128e5565b80613f6d575b5060008051602061428783398151915294959697989950519485521692a4565b8a9084600d541690813b15610a14578291613f9e918551948580948193632770a7eb60e21b83523060048401613d5f565b03925af18015613fde57600080516020614287833981519152969798999a9b50613fcf575b8a999897969550613f4d565b613fd89061274a565b38613fc3565b82513d8d823e3d90fd5b6140059150613ffe620186a091601a549061288e565b048a6128e5565b38613f41565b61402190853d87116110c2576110b081836127c5565b50613f30565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613e32565b6001600160801b0391821690821603919082116128a157565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146141d457848091600d541687518681019063313ce56760e01b82526004815261411a81612773565b51915afa3d156141cc573d9061412f826127e8565b9161413c885193846127c5565b82523d868684013e5b806141c2575b156141b4578381805181010312611c64579060ff61416d856141769401613171565b169283916141e3565b80156141ab576024929161295b6129a661419a93898852868652888820549061288e565b948352522054808211612a1d575090565b50505091505090565b506141769060ff601261416d565b508381511461414b565b606090614145565b50505060249192935052205490565b918215801561421e575b612a2957600181018091116128a15761420c92612997612aea926128d7565b600581018091116128a157600a900490565b5081156141ed56fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212206e5748d5572295740eb1e030ef0c11a12359885cac9c62f4148e1ac86a64d44864736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146125cc5750816302ce728f146125a3578163078dfbe7146124b2578163095ea7b31461248b5781630996efb714611fec5781630c4e84f014611ed457816318160ddd14611eb85781631c9e379b14611e7f5781631da8bf1014611ddb5781631ee9c8f2146115805781631fb8f81a1461156257816323b872dd146113bf578163331960ff146113a157816334ce998a1461137857816334d441d01461135a5781633644e5151461133f57816337b6b7b91461132157816338d52e0f146112f85781633ba0b9a9146112da5781633f741adb146112b557816340626d8b1461129757816344de240a14611279578163473e3ce71461125b57816348e4163e146112225781634e71e0c814611186578163529898f214611168578163579354621461114a57816358db9afe14610d175781636b19ad1614610cf95781636c3d8b8f14610cd057816370a0823114610c975781637277854714610c5f57816374645ff314610b5e5781637dc0d1d014610b355781637ecebe0014610afc5781637fa0b84e14610aca5781638285ef4014610a9857816387b2793714610a5f5781638c5d0ed314610a415781638da5cb5b14610a18578163910dd7c8146107e0578163959916dc146107c357816399a970281461079b5781639e15e89f14610760578163a9059cbb1461067d578163b0e21e8a1461065f578163b27c0e741461062c578163b7113f1914610609578163bb4cfe3b146105eb578163bde39c5d146105cd578163c1ad5c8d146105aa578163ce8849ed14610581578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613664565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce612614565b60406103d861262a565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b90503461057d5761043c36612692565b8394969793929192421161054a57610508926105009260018060a01b0395868b169788600052600460205260406000209182549261047984613303565b90556040519160208301936000805160206142678339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b5190206104cf612faa565b9060405190602082019261190160f01b845260228301526042820152604281526104f88161278e565b51902061327e565b91909161317f565b1603610517576102e492613360565b60405162461bcd60e51b815260206004820152601e60248201526000805160206142478339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206142278339815191526044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105c56133b7565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e757602554604080516001600160401b03808416825292821c909216602083015290f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e757610697612614565b6024358092811580159061074e575b6106de575b50506040519182526001600160a01b03169033906000805160206142e783398151915290602090a3602060405160018152f35b338152600160205260408120546106f7838210156130d3565b6001600160a01b0384169033829003610712575b50506106ab565b60409361072991610724841515613118565b6128e5565b3383526001602052838320558152206107438382546128f2565b90558183808061070b565b50336001600160a01b038416146106a6565b82346102e75760403660031901126102e757606061078861077f612614565b60243590612a31565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105c56107ba612614565b60243590612e78565b82346102e757806003193601126102e75760208054604051908152f35b90503461057d57604036600319011261057d576004356001600160401b038111610a145736602382011215610a145780600401359061081e826127e8565b9261082c60405194856127c5565b82845284602092838601943660248284010111610a14578060248693018737860101526024359161ffff8316809303610a1057610100938486805181010312610a0c5761087890612b70565b916108856040870161315d565b906108926060880161315d565b9660808101519660a0820151926108ab60c08401613171565b91818401519301519360018060a01b03808097169b16988142116109d9579289888d9897946109749794610500978f8e6000146109c457600080516020614267833981519152955b8d6000526004865260406000209283549361090d85613303565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610941816127a9565b51902061094c612faa565b90604051908a82019261190160f01b845260228301526042820152604281526104f88161278e565b1603610992575015610989576102e492613360565b6102e492613312565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206142478339815191526044820152fd5b6000805160206142c7833981519152956108f3565b60405162461bcd60e51b815260048101899052601d60248201526000805160206142278339815191526044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610a87612614565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610af1610ae7612614565b6024359033613312565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b24612614565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610b8083612710565b808352600193808516908115610c3e5750600114610bf3575b50610ba6925003826127c5565b60405180926020908183528351918281850152815b838110610bdc57505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610bbb565b6010865260008051602061430783398151915293602092508691905b818310610c26575050610ba6935082010185610b99565b85548784018501529485019486945091830191610c0f565b9050610ba694506020925060ff191682840152151560051b82010185610b99565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610c8b846126e1565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610cbf612614565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610d31612614565b610d39612640565b916084356001600160401b03811161057d57610d59903690600401612665565b9290600660005260209460078652610d7960ff6040600020541615613762565b610d81612b7d565b5050610d8b613664565b610da06001600160a01b0384163014156137df565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156110fa57610df191610dec91879161111d575b506001600160a01b038416906139a6565b613844565b610dfd60243584613ca8565b6001600160a01b038316845260188652604084208054610e2090602435906128e5565b9055610e306024356015546128e5565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a0c57630208d92960e11b835286918391829084908290610eb090602435906001600160a01b038b16306004860161388b565b03925af180156110fa57908591611105575b5050610eef610140600c54600e546040519384928392633d9545e960e11b84526024359160048501613b7d565b03816001600160a01b0386165afa9081156110fa57856040949392869282916110c9575b50610f378651998a968795869463efa84c6d60e01b86526044359060048701613bbd565b03926001600160a01b03165af19182156110865780938193611092575b50610f63604435851015613c66565b6001600160a01b038216815260178552604081205490610f8a82610f8561358f565b613da9565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611086579161104c575b506105c593610ff493929111610ff957610fe9908280613e07565b505b601154906138b5565b61379f565b5061100261358f565b80516001600160801b03908116611027575050611021845b8280613e07565b50610feb565b818161103e611047938a611021960151168961288e565b915116906128b7565b61101a565b929190508583813d831161107f575b61106581836127c5565b8101031261107a5791519091906105c5610fce565b600080fd5b503d61105b565b604051903d90823e3d90fd5b9092506110b891935060403d6040116110c2575b6110b081836127c5565b810190613ba7565b9290929185610f54565b503d6110a6565b6110ed91506101403d610140116110f3575b6110e581836127c5565b810190613a93565b8a610f13565b503d6110db565b6040513d87823e3d90fd5b61110e9061274a565b611119578387610ec2565b8380fd5b61113d9150893d8b11611143575b61113581836127c5565b81019061382a565b89610ddb565b503d61112b565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b0390818116338190036111de57806005549384166000805160206142a78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b0361124a612614565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105c5604435602435600435612918565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105c5612faa565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576113d9612614565b906113e261262a565b6044359182611420575b506040519182526001600160a01b039081169216906000805160206142e783398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611449828610156130d3565b86169384840361145e575b50505050506113ec565b838652600283526040862033600052835260406000205460001981036114cc575b50926001602096936114aa87946040976107246000805160206142e78339815191529c9a1515613118565b92855252838320558152206114c08582546128f2565b90559185808581611454565b9091811061152257926001602096936114aa8a6000805160206142e78339815191529a98956114fd8260409a6128e5565b868952600285528989203360005285528960002055949750949799505093965061147f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e75761159a612614565b608435906001600160a01b0382168203610a145760a4356001600160401b038111611119576115cd903690600401612665565b92906005855260076020526115e960ff60408720541615613762565b6115f1612b7d565b50506115fb613664565b6116106001600160a01b0384163014156137df565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611c025761165d91610dec918891611dbc575b506001600160a01b038516906139a6565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611db1578296611d7d575b5085611d1d575b505050620186a06116c760205460243561288e565b049260018060a01b03821687526024602052604087206116e88582546128f2565b90556116f261358f565b936116ff816024356128f2565b946000602060405161171081612773565b828152015280516001600160801b03908116611cc1578061173781895b16828551166135b5565b16825280602083019261174f828a16838651166135b5565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611cab575b5050505050505015611c6857879460018060a01b03871686526017602052604086206117b28282546128f2565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611c64578460405180926340c10f1960e01b82528183816118316024353060048401613d5f565b03925af19081156110fa578591611c50575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611bb7578792611c0d575b5060095460405163095ea7b360e01b81529260209284929091839182906118c490602435906001600160a01b031660048401613d5f565b03925af18015611c0257611bc2575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119139160243591908b1690309060048601613d7a565b03925af1938415611bb7578794611b90575b506101409061193a600e5495600c54926128f2565b946119596040519687938493633d9545e960e11b855260048501613b7d565b03816001600160a01b0385165afa928684156110865760409486928291611b6f575b5061199f86519889968795869463efa84c6d60e01b86526064359060048701613bbd565b03926001600160a01b03165af18015611b645783928491611b3f575b506119ca606435841015613c66565b6119d48183613ca8565b8015611ab7575b6001600160a01b038216845260186020526040842080546119fd9083906128f2565b9055611a0b816015546128f2565b601555600c546009546001600160a01b0316908590823b1561057d57611a4c92849183604051809681958294630208d92960e11b8452308c6004860161388b565b03925af180156110fa57611aa3575b506020936105c592610ff49290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a4601154906138b5565b611aad859161274a565b6111195784611a5b565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611b34578491611b02575b506119db565b90506020813d602011611b2c575b81611b1d602093836127c5565b8101031261107a575184611afc565b3d9150611b10565b6040513d86823e3d90fd5b9050611b5b91925060403d6040116110c2576110b081836127c5565b919091846119bb565b6040513d85823e3d90fd5b611b8a91506101403d610140116110f3576110e581836127c5565b8961197b565b610140919450611bae9060403d6040116110c2576110b081836127c5565b90509390611925565b6040513d89823e3d90fd5b6020813d602011611bfa575b81611bdb602093836127c5565b81010312610a1057604091611bf261191392612b70565b5091506118d3565b3d9150611bce565b6040513d88823e3d90fd5b91506020823d602011611c48575b81611c28602093836127c5565b81010312610a0c576118c4602091611c408994612b70565b50915061188d565b3d9150611c1b565b611c599061274a565b611119578388611843565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b161792161617111590508980808b818080611785565b602082019680611cf3611ce4611cda858c51168461288e565b85875116906128b7565b998461103e818851168d61288e565b10611d04575b61173782809261172d565b9661173782611d138193613303565b9992505050611cf9565b823b1561057d57604051630208d92960e11b8152928391829084908290611d54908b906001600160a01b038b168e6004860161388b565b03925af18015611bb757611d6a575b86816116b2565b611d769096919661274a565b9486611d63565b9095506020813d602011611da9575b81611d99602093836127c5565b8101031261057d575194896116ab565b3d9150611d8c565b6040513d84823e3d90fd5b611dd5915060203d6020116111435761113581836127c5565b8861164c565b90503461057d57611deb36612692565b8397949697929192421161054a57611e7092610500928a60018060a01b0396878c169889835260046020526040832091825492611e2784613303565b90556040519260208401946000805160206142c7833981519152865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b1603610517576102e492613312565b82346102e75760203660031901126102e7576020906040906001600160a01b03611ea7612614565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e757600435600981101561057d57611efa612656565b6008549091906001600160a01b03163303611fb05760ff611f1a826126e1565b54161515911515918214611f7657808260ff611f38611f66946126e1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46126e1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576024356001600160a01b03818116929183900361057d576001600160401b039260443584811161111957612037903690600401612665565b9094612041612640565b9261205185600554163314612803565b6004358061244b575b508061240d575b50816122b1575b505081929350169081612271575b505060843580612259575b5060a43580612241575b5060c4358061222a575b5060e43580612206575b5061010435806121e2575b5061012435806121b1575b50610144358061213d575b5061016435806120ce575080f35b601e5481106120dd57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61214c620186a082111561284e565b601f54811161215e57601e55816120c0565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655816120b5565b6121f0620186a0821061284e565b6121fd601b54821161284e565b601c55816120aa565b612214620186a0821061284e565b612221601c54821061284e565b601b558161209f565b612238620186a0821061284e565b601d5581612095565b612250620186a082111561284e565b601a558161208b565b612268620186a082111561284e565b60195581612081565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180612076565b81116123f9576122c2601054612710565b601f81116123aa575b5083601f82116001146123315781908596859692612326575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1839285612068565b0135905086806122e4565b60108552600080516020614307833981519152908560205b601f1985168210612392575050908495968392600194601f19811610612378575b505050811b016010556122fa565b0135600019600384901b60f8161c1916905586808061236a565b80600184958294958c01358155019401920190612349565b60108552600080516020614307833981519152601f830160051c8101602084106123f2575b601f90920160051c01905b8181106123e757506122cb565b8581556001016123da565b50806123cf565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186612061565b61245a620186a082111561284e565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a36020558761205a565b82346102e75760403660031901126102e757610af16124a8612614565b6024359033613360565b82346102e75760603660031901126102e7576124cc612614565b6124d4612656565b6044359081151582036111195760018060a01b039283916124fa83600554163314612803565b1561258c571690811590811591612584575b501561254757806005549283166000805160206142a78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461250c565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e75760406125be612b7d565b825191151582526020820152f35b83903461057d57604036600319011261057d5760406020926125ec612614565b6125f461262a565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361107a57565b602435906001600160a01b038216820361107a57565b606435906001600160a01b038216820361107a57565b60243590811515820361107a57565b9181601f8401121561107a578235916001600160401b03831161107a576020838186019501011161107a57565b60e090600319011261107a576001600160a01b0390600435828116810361107a5791602435908116810361107a5790604435906064359060843560ff8116810361107a579060a4359060c43590565b60098110156126fa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612740575b602083101461272a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161271f565b6001600160401b03811161275d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761275d57604052565b608081019081106001600160401b0382111761275d57604052565b61010081019081106001600160401b0382111761275d57604052565b601f909101601f19168101906001600160401b0382119082101761275d57604052565b6001600160401b03811161275d57601f01601f191660200190565b1561280a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561285557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156128a157565b634e487b7160e01b600052601160045260246000fd5b81156128c1570490565b634e487b7160e01b600052601260045260246000fd5b604d81116128a157600a0a90565b919082039182116128a157565b919082018092116128a157565b818103929160001380158285131691841216176128a157565b60145491929161296191612952916129489161293e906001600160801b0383169061288e565b9060801c906128b7565b93601f549061288e565b61295b836128d7565b906128b7565b808310612a29576129756129b191846128e5565b916129ac6129a661299d601e5461299761298e866128d7565b602154906128f2565b9061288e565b61295b846128d7565b916128d7565b6128ff565b6509184e72a000908181029181830514901517156128a157670de0b6b3a7640000918281029281840514901517156128a15780156128c157600160ff1b918083146000198314166128a15705906000821215612a225781146128a157600003905b808211612a1d575090565b905090565b5090612a12565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612b6357612a636135ce565b90612a6f861515612d75565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156110fa578591612b34575b5092859492612b14601893612aef612b2899612aea612ae160409a620186a0602254049061288e565b601e549061288e565b6128b7565b815190936001600160801b03918691612b0a9184169061288e565b92015116906128b7565b818110612b2c57035b978352522054612dc1565b9091565b505082612b1d565b90508381813d8311612b5c575b612b4b81836127c5565b81010312611c645751612b28612ab8565b503d612b41565b5050509192505080918190565b5190811515820361107a57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612bb281612710565b90816024860152600190858282169182600014612d51575050600114612d0d575b5050600083809203925af18015612d02576000948591612cc7575b50928415612c69578315612c2f57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612c7c601354601254906128f2565b4211612c8d57505060115490612c29565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612cfb575b612cdf81836127c5565b810103126102e7575080612cf285612b70565b94015138612bee565b503d612cd5565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612d3657505050508201604401600083612bd3565b80548c8601604401528a97508b965093019287908201612d1e565b8195506000949193506044925060ff191682840152151560051b8201019250612bd3565b15612d7c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612dcc821515612d75565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612e6c57600091612e39575b5090612aea612e25926022549061288e565b620186a0612e35601e548361288e565b0491565b906020823d8211612e64575b81612e52602093836127c5565b810103126102e7575051612aea612e13565b3d9150612e45565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612e9b91612dc1565b918352601760205260408320548015612fa4578115612fa457818110612fa45782811015612f9a57601454612ee49183916107249161293e906001600160801b0383169061288e565b90620186a09283830292808404851490151715612f8657612f09929161295b916128e5565b91601b5491601c5493612f1c85856128ff565b80820291848212600160ff1b821416612f86578183051490151715612f725705818482019485129112908015821691151617612f5e5750808212612a1d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806130aa575b15613005577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761275d5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612fdc565b156130da57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561311f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361107a57565b519060ff8216820361107a57565b60058110156126fa57806131905750565b600181036131d85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036132255760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461322e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116132f75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156132ea5781516001600160a01b038116156132e4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146128a15760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613529576014546001600160801b031690811561352257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612e6c5785916000916134ed575b50600460405180948193631a674cc560e11b8352165afa938415612e6c576000946134be575b50506134519192670de0b6b3a76400009283916029549061288e565b0490818110156134b557613468602a5480926128e5565b838102908082048514901517156128a15761295b613489926134a9946128e5565b602754926134a36028549261349e84876128e5565b61288e565b046128f2565b90808211612a1d575090565b50505060275490565b81813d83116134e6575b6134d281836127c5565b810103126111195751925061345138613435565b503d6134c8565b9182813d831161351b575b61350281836127c5565b810103126102e75750613515859161315d565b3861340f565b503d6134f8565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612e6c57600091613561575090565b906020823d8211613587575b8161357a602093836127c5565b810103126102e757505190565b3d915061356d565b6040519061359c82612773565b6014546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116128a157565b600060206040516135de81612773565b82815201526025546001600160401b0391906135ff9060401c8316426128e5565b9182156136565761365161349e91670de0b6b3a764000061364661362161358f565b9660018060801b03958694858a5116906301e1338061363e6133b7565b04169061288e565b0416828551166135b5565b168252565b50905061366161358f565b90565b60405161367081612773565b60255460018060401b03908181168352818160401c166136976020850191808352426128e5565b92831561375b57602094816301e133806136af6133b7565b0416815281421683526136c061358f565b670de0b6b3a76400006136e560018060801b039761349e89855116878751169061288e565b04956136f6818816828451166135b5565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561376957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156137a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156137e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9081602091031261107a575161ffff8116810361107a5790565b1561384b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b0380600094168452602060178152604085205490811561399c57601881526040862054801561375b57816138ef61358f565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611086578097613966575b5050612b0a61394b612ae1613961969798620186a0602254049061288e565b9561349e60018060801b0394858751169061288e565b111590565b9096508187813d8311613995575b61397e81836127c5565b810103126102e75750945194612b0a61394b61392c565b503d613974565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612e6c578493600091613a55575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612e6c57600091613a21575b50905090565b82813d8311613a4e575b613a3581836127c5565b810103126102e75750613a4790612b70565b8038613a1b565b503d613a2b565b9091929381813d8311613a8c575b613a6d81836127c5565b8101031261057d57519082821682036102e757508392919060446139e1565b503d613a63565b80910390610140821261107a576040805192606084016001600160401b0381118582101761275d578083526080821261107a57613acf8161278e565b613ad88461315d565b815260208401516080860152613aef83850161315d565b60a0860152606084015160c086015284526080607f1982011261107a5781908151613b198161278e565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261107a57613b72610120825193613b5d85612773565b613b6a6101008201612b70565b855201612b70565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919082604091031261107a576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613c6d57565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613cbc575050565b6000818152602090600382526040918282203383528152848383205410613d255783825260038152828220338352815282822054600101613cfe575050505050565b613d19938252600381528282209033835252209182546128e5565b9055388080808061375b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160a01b039091168152602081019190915260400190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613dca575090925050565b908161103e81613ded613de3613df6968651168861288e565b828a5116906128b7565b9751168761288e565b10613dfd57565b9061366190613303565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116140a9575b50831561406d5783613e43916140ca565b948386101561403157879885895260248452808920613e638882546128e5565b9055613e6d61358f565b9689858351613e7b81612773565b8281520152613e8a8689613da9565b9760018060801b0380613ea2818c16828551166140b1565b16825286820190613eb8818a16828451166140b1565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613ee98882546128e5565b9055613f1a838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d7a565b03925af180156140275790613f4793929161400b575b50613f3b888b6128e5565b80613fe8575b506128e5565b80613f6d575b5060008051602061428783398151915294959697989950519485521692a4565b8a9084600d541690813b15610a14578291613f9e918551948580948193632770a7eb60e21b83523060048401613d5f565b03925af18015613fde57600080516020614287833981519152969798999a9b50613fcf575b8a999897969550613f4d565b613fd89061274a565b38613fc3565b82513d8d823e3d90fd5b6140059150613ffe620186a091601a549061288e565b048a6128e5565b38613f41565b61402190853d87116110c2576110b081836127c5565b50613f30565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613e32565b6001600160801b0391821690821603919082116128a157565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146141d457848091600d541687518681019063313ce56760e01b82526004815261411a81612773565b51915afa3d156141cc573d9061412f826127e8565b9161413c885193846127c5565b82523d868684013e5b806141c2575b156141b4578381805181010312611c64579060ff61416d856141769401613171565b169283916141e3565b80156141ab576024929161295b6129a661419a93898852868652888820549061288e565b948352522054808211612a1d575090565b50505091505090565b506141769060ff601261416d565b508381511461414b565b606090614145565b50505060249192935052205490565b918215801561421e575b612a2957600181018091116128a15761420c92612997612aea926128d7565b600581018091116128a157600a900490565b5081156141ed56fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212206e5748d5572295740eb1e030ef0c11a12359885cac9c62f4148e1ac86a64d44864736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561433a9283620001ab8439608051836130c0015260a0518361318b015260c0518361308a015260e0518361310f01525182613135015251816130ec0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220efe4facff27eb1ff6b838952ee2d36961365526cfd4733e89a317532cb329a8064736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220efe4facff27eb1ff6b838952ee2d36961365526cfd4733e89a317532cb329a8064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLiquidation.json b/src/artifacts/tapioca-bar/BBLiquidation.json index f35c08a2..8535a684 100644 --- a/src/artifacts/tapioca-bar/BBLiquidation.json +++ b/src/artifacts/tapioca-bar/BBLiquidation.json @@ -921,14 +921,14 @@ "type": "uint256[]" }, { - "internalType": "bytes[]", - "name": "collateralToAssetSwapDatas", - "type": "bytes[]" + "internalType": "contract IMarketLiquidatorReceiver[]", + "name": "liquidatorReceivers", + "type": "address[]" }, { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" + "internalType": "bytes[]", + "name": "liquidatorReceiverDatas", + "type": "bytes[]" } ], "name": "liquidate", @@ -949,13 +949,13 @@ "type": "address" }, { - "internalType": "contract ISwapper", - "name": "swapper", + "internalType": "contract IMarketLiquidatorReceiver", + "name": "liquidatorReceiver", "type": "address" }, { "internalType": "bytes", - "name": "collateralToAssetSwapData", + "name": "liquidatorReceiverData", "type": "bytes" } ], @@ -1609,8 +1609,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556144a59283620001ab843960805183613428015260a051836134f2015260c051836133f2015260e051836134770152518261349d015251816134540152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612a1c5750816302ce728f146128c0578163078dfbe7146127ce578163095ea7b3146127a85781630996efb7146123045781630c4e84f0146121ea57816318160ddd146121ce5781631c9e379b146121945781631da8bf10146120ef5781631fb8f81a146120d157816323b872dd14611f2d578163331960ff14611f0f57816334ce998a14611ee657816334d441d014611ec85781633644e51514611ead57816337b6b7b914611e8f57816338d52e0f14611e665781633ba0b9a914611e485781633f741adb14611e2457816340626d8b14611e0657816344de240a14611de8578163473e3ce714611dca57816348e4163e14611d905781634e71e0c814611cf4578163529898f214611cd65781635793546214611cb85781636b19ad1614611c9a5781636c3d8b8f14611c7157816370a0823114611c375781637277854714611c0157816374645ff314611af75781637dc0d1d014611ace5781637ecebe0014611a945781637fa0b84e14611a635781638285ef4014611a3157816387b27937146119f75781638c5d0ed3146119d95781638da5cb5b146119b0578163910dd7c8146117a8578163959916dc1461178b57816399a97028146117645781639e15e89f14611729578163a28e6b8214611363578163a9059cbb1461127c578163b0e21e8a1461125e578163b27c0e741461122b578163b7113f1914611208578163bb4cfe3b146111ea578163bde39c5d146111cc578163c1ad5c8d146111a9578163cb7940e1146105a6578163ce8849ed1461057d578163d505accf1461042e57508063d8dfeb4514610405578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613ae6565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e5576103cd612a68565b6103d5612a7e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761043c36612ae6565b8394969793929192421161054a57610508926105009260018060a01b0395868b16978860005260046020526040600020918254926104798461373a565b90556040519160208301936000805160206143d08339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b5190206104cf6133ef565b9060405190602082019261190160f01b845260228301526042820152604281526104f881612bcc565b5190206136b5565b9190916135b6565b1603610517576102e392613797565b60405162461bcd60e51b815260206004820152601e60248201526000805160206143b08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760803660031901126102e5576004356001600160401b0381116102e5576105d6903690600401612c82565b906024356001600160401b0381116102e5576105f6903690600401612c82565b6044356001600160401b0381116102e557610615903690600401612c82565b929061061f612a94565b926004600052600760205260ff6040600020541661117357861561113357610648818814613d55565b610653858814613d55565b600f546040805163d6d7d52560e01b8152949185906001600160a01b03168160008161068160048201613150565b03925af1938415610c80576000906000956110ff575b5084816110f5575b50156110eb57836011555b831561109b576106b8613ae6565b60009760005b8181106107075789156106cd57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61071281838b614243565b356001600160a01b03811681036102e55761072d8782614253565b15610742575b5061073d9061373a565b6106be565b9961074c9061373a565b99610758828686614243565b359089831015610c5b578260051b87013590601e19883603018212156102e5576001600160401b0388830135116102e5578188013536036020838a0101136102e557600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115610c80576107ed916107e89160009161106c575b506001600160a01b038d1690613c64565b613c04565b6107f789826132e5565b9289156110275760018060a01b03600954166020600c5460018060a01b03851660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80578b90600092610ff1575b5061086e6108739260225490612d3d565b612d66565b60018060a01b038316600052601760205261089381604060002054612e1a565b601d5480610fd2575b5080911115610f99578a9181811115610f915750925b6001600160a01b038316600090815260176020526040902054808511610f89575b846108dd91612d94565b6001600160a01b0384166000908152601760205260409020556108fe6139ca565b6020810180516001600160801b0316610f58575050835b6020610931620186a061092a60215489612d3d565b0487612da1565b606461095761094e60018060a01b036009541697600c5494612d3d565b60225490612d66565b916040519687938492638eb22cdd60e01b845260048401526024830152600060448301525afa928315610c8057600093610f24575b506001600160a01b0384166000908152601860205260409020548311610ee35760018060a01b038416600052601860205260406000206109cd848254612d94565b90558415610eb057601480549091610a166001600160801b036109f4898216828616613c4b565b16926001600160801b0319926001600160801b0316908316841760801c613c4b565b60801b16179055601580548380821115610ea657610a3391612d94565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b83526004830152896024830152600160448301525afa918215610c8057600092610e70575b50610aa690610a959036908d01803590602001612c26565b6001600160a01b038e163085613dc8565b610adb60408260018060a01b0360095416600e54600084518096819582946311a5cc7760e31b84523090309060048601614360565b03925af18015610c8057610e52575b5081811115610e3e57610b0f610b07610b1793620186a093612d94565b965b87612d3d565b048095612d94565b9184610cc5575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610c8c575b50600d546001600160a01b0316803b156102e55760006040518092632770a7eb60e21b8252818381610b9a8b3060048401613d97565b03925af18015610c8057610c71575b5060405190610bb782612bb1565b6001825260203681840137815115610c5b576001600160a01b03166020820190815260405191518291906000905b808210610c395750505091817f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929261073d989796959403902093610c30604051928392339684612c6c565b0390a490610733565b82516001600160a01b0316845260209384019390920191600190910190610be5565b634e487b7160e01b600052603260045260246000fd5b610c7a90612b9e565b8f610ba9565b6040513d6000823e3d90fd5b6020813d602011610cbd575b81610ca560209383612c03565b810103126102e557610cb690613126565b508f610b64565b3d9150610c98565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610e05575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c8057610dcc575b50610d8960408660018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614360565b03925af18015610c8057610d9e575b50610b1e565b610dbf9060403d604011610dc5575b610db78183612c03565b810190613db2565b50610d98565b503d610dad565b6020813d602011610dfd575b81610de560209383612c03565b810103126102e557610df690613126565b508f610d53565b3d9150610dd8565b6020813d602011610e36575b81610e1e60209383612c03565b810103126102e557610e2f90613126565b508f610d0b565b3d9150610e11565b5050610b17620186a0610b0f600096610b09565b610e6a9060403d604011610dc557610db78183612c03565b50610aea565b9091506020813d602011610e9e575b81610e8c60209383612c03565b810103126102e5575190610a95610a7d565b3d9150610e7f565b5050600090610a35565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011610f50575b81610f4060209383612c03565b810103126102e55751913861098c565b3d9150610f33565b9051610f839190610f72906001600160801b031687612d3d565b90516001600160801b031690612d66565b93610915565b9350836108d3565b9050926108b2565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90620186a0610fe4610feb9383612d3d565b0490612da1565b3861089c565b9150506020813d60201161101f575b8161100d60209383612c03565b810103126102e557518a61086e61085d565b3d9150611000565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b61108e915060203d602011611094575b6110868183612c03565b810190613bea565b386107d7565b503d61107c565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b60115493506106aa565b905015158961069f565b905061112491945060403d60401161112c575b61111c8183612c03565b810190613133565b939089610697565b503d611112565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e55760206111c46137ee565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e557611295612a68565b602435908115801590611351575b6112d9575b6040519182526001600160a01b031690339060008051602061443083398151915290602090a3602060405160018152f35b3360005260016020526040600020546112f483821015613518565b6001600160a01b038216908333839003611311575b5050506112a8565b6113259161132084151561355d565b612d94565b3360005260016020526040600020556000526040600020611347838254612da1565b9055828083611309565b50336001600160a01b038216146112a3565b346102e55760803660031901126102e55761137c612a68565b611384612a7e565b6001600160a01b039060443582811691908290036102e5576064356001600160401b0381116102e5576113bb903690600401612ab9565b6113ca85600554163314612cb2565b600f546040805163d6d7d52560e01b81529182908816816000816113f060048201613150565b03925af1908115610c8057600090600092611707575b5081816116fd575b50156116f457806011555b1561169f57611426613ae6565b84600a541660405196879163433e762d60e01b835282600460209a8b935afa918215610c80576107e887899461146493600091611682575b50613c64565b1694856000526017875286611488604060002054620186a0610fe460215483612d3d565b91600954169160646114a361094e600c549360115490612d3d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610c8057600091611655575b5085600052601887526040600020541161161257906115bf9160186102e39787600052818152604060002054976115876115106139ca565b82600052601784526115826115776040600020549260008760405161153481612bb1565b82815201528681019360018060801b03928382818094868a83815116156000146115c55750508161156a915b1682885116613c4b565b1685521682875116613c4b565b168094525116613a9f565b613ac1565b8060005260178252600060408120558282526115aa604060002054601554612d94565b60155560005252600060408120553691612c26565b92613dc8565b61156a926115fe6115f4866115eb6115e1828098511686612d3d565b8287511690612d66565b94511684612d3d565b848c511690612d66565b10156115605761160d9061373a565b611560565b6064866040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508681813d831161167b575b61166c8183612c03565b810103126102e55751876114d8565b503d611662565b61169991508c8d3d10611094576110868183612c03565b8c61145e565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b50601154611419565b905015158861140e565b9050611722915060403d60401161112c5761111c8183612c03565b9088611406565b346102e55760403660031901126102e557611760611751611748612a68565b60243590612fdd565b60409391935193849384612c6c565b0390f35b346102e55760403660031901126102e55760206111c4611782612a68565b602435906132e5565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e5576117e9903690602481600401359101612c26565b9060243561ffff81168091036102e5576101009182848051810103126102e5576020611816818601613126565b91611823604087016135a2565b90611830606088016135a2565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a86169890949042821061197d579289888d9897946119189794610500978f8e600014611968576000805160206143d0833981519152955b8d600052600486526040600020928354936118b18561373a565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526118e581612be7565b5190206118f06133ef565b90604051908a82019261190160f01b845260228301526042820152604281526104f881612bcc565b160361193657501561192d576102e392613797565b6102e392613749565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206143b08339815191526044820152fd5b60008051602061441083398151915295611897565b60405162461bcd60e51b815260048101899052601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611a18612a68565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611a89611a7f612a68565b6024359033613749565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611ab5612a68565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051601054816000611b1a83612b64565b808352600193808516908115611be05750600114611b92575b50611b4092500382612c03565b6040519081602080825282519081818401526000935b828510611b79575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350611b56565b6010600090815260008051602061445083398151915294602093509091905b818310611bc8575050611b40935082010184611b33565b85548784018501529485019486945091830191611bb1565b9050611b4094506020925060ff191682840152151560051b82010184611b33565b346102e55760203660031901126102e55760043560098110156102e55760ff611c2b602092612b35565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611c58612a68565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611d4c57806005549384166000805160206143f0833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611db1612a68565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e55760206111c4604435602435600435612f16565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e55760206111c46133ef565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e557611f46612a68565b611f4e612a7e565b6044359081611f8b575b6040519182526001600160a01b0390811692169060008051602061443083398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611fb382861015613518565b851693848403611fc8575b5050505050611f58565b83600052600283526040600020336000528352604060002054600019810361203c575b508492612013600080516020614430833981519152979593600193611320602099151561355d565b92600052526040600020556000526040600020612031858254612da1565b905591858481611fbe565b9091811061209157602094926120138860008051602061443083398151915298969461206a82600196612d94565b86600052600285526040600020336000528552604060002055935093959750509294611feb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e5576120fd36612ae6565b8394969793929192421161054a57612185926105009260018060a01b0395868b169788600052600460205260406000209182549261213a8461373a565b90556040519160208301936000805160206144108339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b1603610517576102e392613749565b346102e55760203660031901126102e5576001600160a01b036121b5612a68565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e55761220f612aaa565b6008549091906001600160a01b031633036122c85760ff61222f82612b35565b5416151591151591821461228e57808260ff61224d61227c94612b35565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612b35565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576024356001600160a01b03818116918290036102e5576001600160401b03916044358381116102e55761234d903690600401612ab9565b93612356612a94565b9261236685600554163314612cb2565b60043580612767575b5080612728575b50846125c3575b50508116915081612582575b50506084358061256a575b5060a43580612552575b5060c4358061253b575b5060e43580612517575b5061010435806124f3575b5061012435806124c1575b50610144358061244d575b5061016435806123df57005b601e5481106123ed57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61245c620186a0821115612cfd565b601f54811161246e57601e55806123d3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806123c8565b612501620186a08210612cfd565b61250e601b548211612cfd565b601c55806123bd565b612525620186a08210612cfd565b612532601c548210612cfd565b601b55806123b2565b612549620186a08210612cfd565b601d55806123a8565b612561620186a0821115612cfd565b601a558061239e565b612579620186a0821115612cfd565b60195580612394565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080612389565b8411612712576125d4601054612b64565b601f81116126c1575b50600090601f851160011461264657938091849560009261263b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838061237d565b0135905085806125f9565b60106000908152600080516020614450833981519152929060205b601f19881682106126a95750509185916001938697601f1981161061268f575b505050811b0160105561260f565b0135600019600384901b60f8161c19169055858080612681565b80600184968294958701358155019501920190612661565b6010600052600080516020614450833981519152601f860160051c81016020871061270b575b601f90920160051c01905b8181106126ff57506125dd565b600081556001016126f2565b50806126e7565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185612376565b612776620186a0821115612cfd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a36020558661236f565b346102e55760403660031901126102e557611a896127c4612a68565b6024359033613797565b346102e55760603660031901126102e5576127e7612a68565b6127ef612aaa565b6044359081151582036102e55760018060a01b0392839161281583600554163314612cb2565b156128a757169081159081159161289f575b501561286257806005549283166000805160206143f0833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612827565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b0316816000816128fe60048201613150565b03925af18015610c80576000916000916129fb575b5090801561299d5781156129615781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b90506129ae60135460125490612da1565b42116129bf5760409060115461294f565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612a16915060403d60401161112c5761111c8183612c03565b82612913565b346102e55760403660031901126102e557602090612a38612a68565b612a40612a7e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b606435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612b4e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612b94575b6020831014612b7e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612b73565b6001600160401b03811161271257604052565b604081019081106001600160401b0382111761271257604052565b608081019081106001600160401b0382111761271257604052565b61010081019081106001600160401b0382111761271257604052565b601f909101601f19168101906001600160401b0382119082101761271257604052565b9192916001600160401b0382116127125760405191612c4f601f8201601f191660200184612c03565b8294818452818301116102e5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612cb957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612d0457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612d5057565b634e487b7160e01b600052601160045260246000fd5b8115612d70570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612d5057600a0a90565b91908203918211612d5057565b91908201809211612d5057565b81810392916000138015828513169184121617612d5057565b906509184e72a00091828102928184051490151715612d5057565b90670de0b6b3a764000091828102928184051490151715612d5057565b8115612d7057600160ff1b8114600019831416612d50570590565b601454612e5591612e449190612e3a906001600160801b03831690612d3d565b9060801c90612d66565b91620186a0918291601f5490612d3d565b04808310612f0e57612e679083612d94565b601e54602154830190818411612d50578391612e8291612d3d565b0491828103906000809412818312811691831390151617612efa5790612eb3612ead612eb893612dc7565b91612de2565b612dff565b9080821215612ef357600160ff1b8214612edf5703905b808211612eda575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612ecf565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291612f5591612f4691612f3c91612e3a906001600160801b03831690612d3d565b93601f5490612d3d565b612f4f83612d86565b90612d66565b90818310612f0e57612eb3612ead612faf612f73612fb49587612d94565b93612faa612fa4612f9b601e54612f95612f8c86612d86565b60215490612da1565b90612d3d565b612f4f84612d86565b91612d86565b612dae565b612dc7565b6000811215612fd757600160ff1b8114612d505760000390808211612eda575090565b90612ecf565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156131195761300f613a09565b9061301b8615156131eb565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561310e5785916130db575b50928594926130bb6018936130966130cf9961086e61308d60409a620186a06022540490612d3d565b601e5490612d3d565b815190936001600160801b039186916130b191841690612d3d565b9201511690612d66565b8181106130d357035b978352522054613237565b9091565b5050826130c4565b90508381813d8311613107575b6130f28183612c03565b8101031261310357516130cf613064565b8480fd5b503d6130e8565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e557602061314a83613126565b92015190565b60208082526000916010549161316583612b64565b92838284015260019081811690816000146131c8575060011461318a575b5050505090565b929350601060005280600020926000935b8585106131b45750505060409250010138808080613183565b80548585016040015293820193810161319b565b925050506040935060ff929192191683830152151560051b010138808080613183565b156131f257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6132428215156131eb565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80576000916132af575b509061086e61329b9260225490612d3d565b620186a06132ab601e5483612d3d565b0491565b906020823d82116132dd575b816132c860209383612c03565b810103126132da57505161086e613289565b80fd5b3d91506132bb565b6001600160a01b0316600081815260186020526040812054909261330891613237565b9183526017602052604083205480156133e95781156133e9578181106133e957828110156133df5760145461335191839161132091612e3a906001600160801b03831690612d3d565b90620186a092838302928084048514901517156133cb576133769291612f4f91612d94565b91601b5491601c54936133898585612dae565b80820291848212600160ff1b8214166133cb578183051490151715612efa5705818482019485129112908015821691151617612edf5750808212612eda575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806134ef575b1561344a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176127125760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613421565b1561351f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561356457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612b4e57806135c75750565b6001810361360f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361365c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461366557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161372e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156137215781516001600160a01b0381161561371b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612d505760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613964576014546001600160801b031690811561395d57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610c80578591600091613928575b50600460405180948193631a674cc560e11b8352165afa938415610c80576000946138f5575b50506138889192670de0b6b3a764000092839160295490612d3d565b0490818110156138ec5761389f602a548092612d94565b83810290808204851490151715612d5057612f4f6138c0926138e094612d94565b602754926138da602854926138d58487612d94565b612d3d565b04612da1565b90808211612eda575090565b50505060275490565b81813d8311613921575b6139098183612c03565b8101031261391d575192506138883861386c565b8380fd5b503d6138ff565b9182813d8311613956575b61393d8183612c03565b810103126132da575061395085916135a2565b38613846565b503d613933565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610c805760009161399c575090565b906020823d82116139c2575b816139b560209383612c03565b810103126132da57505190565b3d91506139a8565b604051906139d782612bb1565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612d5057565b60006020604051613a1981612bb1565b82815201526025546001600160401b039190613a3a9060401c831642612d94565b918215613a9157613a8c6138d591670de0b6b3a7640000613a81613a5c6139ca565b9660018060801b03958694858a5116906301e13380613a796137ee565b041690612d3d565b0416828551166139f0565b168252565b509050613a9c6139ca565b90565b601480546001600160801b0319166001600160801b0392909216919091179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b604051613af281612bb1565b6025546001600160401b03808216835260409190911c811660208301818152929190613b1e9042612d94565b918215613be457816301e13380613b336137ee565b041681528142168452613b95613b476139ca565b936020670de0b6b3a7640000613b6f60018060801b03936138d5858a51168989511690612d3d565b0495613b8d83613b84818a16828551166139f0565b16808352613a9f565b015116613ac1565b5116918260255491600160401b600160801b03905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b908160209103126102e5575161ffff811681036102e55790565b15613c0b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160801b039182169082160391908211612d5057565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c80578493600091613d13575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c8057600091613cdf575b50905090565b82813d8311613d0c575b613cf38183612c03565b810103126132da5750613d0590613126565b8038613cd9565b503d613ce9565b9091929381813d8311613d4e575b613d2b8183612c03565b81010312613d4a57519082821682036132da5750839291906044613c9f565b5080fd5b503d613d21565b15613d5c57565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b6001600160a01b039091168152602081019190915260400190565b91908260409103126102e5576020825192015190565b600954600c5495946001600160a01b039182169390929160009190853b1561423f576040988951630208d92960e11b81528481608481838760049e8f3090850152169c8d9760249e8f85015260448401528b60648401525af180156140665761422c575b5060209586818051810103126102e55786015180156141ed5790829189949360095416968c89600e549151809a8180613e72868c627eeac760e11b9e8f85528401613d97565b03915afa9889156141b057908e94939291899a6141ba575b50600c54945194633d9545e960e11b86528d8601528b850152876044850152606484015260016084840152600160a4840152610140808460c481865afa9384156141b057888f939487958f938f958f91859a614070575b50508680989960606101c49899519b8c9a8b9963efa84c6d60e01b8b52845192835116908b015285820151908a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af180156140665791879391613fb29796959361404a575b506009541690600e54928c519788948593849384528d8401613d97565b03915afa90811561403f5790614010575b613fcd9250612d94565b948515613fda5750505050565b5162461bcd60e51b81529283015260149082015273109a59d0985b99ce8814ddd85c0819985a5b195960621b6044820152606490fd5b508282813d8311614038575b6140268183612c03565b810103126102e557613fcd9151613fc3565b503d61401c565b8851903d90823e3d90fd5b614060908d803d10610dc557610db78183612c03565b50613f95565b8b513d87823e3d90fd5b965096505095509550505080823d84116141a9575b61408f8183612c03565b810103918212614189578d5191606083016001600160401b03811184821017614195578f81905260808212614191578f6140e7906140cc83612bcc565b6140d5856135a2565b83528d850151608087015284016135a2565b60a0850152606083015160c085015283526080607f1982011261418d578e90815161411181612bcc565b6080840151815260a08401518d82015260c08401518382015260e08401516060820152848d015260ff190112614189578b888f949587968d8f9688906101c49761417861012084519261416384612bb1565b6141706101008201613126565b845201613126565b848201528282015299989796613ee1565b8780fd5b8880fd5b8980fd5b8c60418f634e487b7160e01b600052526000fd5b503d614085565b8e513d8a823e3d90fd5b8b80929b508196503d83116141e6575b6141d48183612c03565b810103126102e5578d93519838613e8a565b503d6141ca565b8a5162461bcd60e51b8152808a01889052601a818a015279084d2ce84c2dcce7440e6d8d2e0e0c2ceca40e8dede40d0d2ced60331b6044820152606490fd5b61423890949194612b9e565b9238613e2c565b8280fd5b9190811015610c5b5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561435657601881526040862054801561434f578161428d6139ca565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561434357809761430d575b50506130b16142f26142e9614308969798620186a06022540490612d3d565b601f5490612d3d565b956138d560018060801b03948587511690612d3d565b111590565b9096508187813d831161433c575b6143258183612c03565b810103126132da57509451946130b16142f26142ca565b503d61431b565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a0019056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203134f5dff25a7f8c9b11772ca3c81e4bfc328b8b90914fd123d53737e6b8854364736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612a1c5750816302ce728f146128c0578163078dfbe7146127ce578163095ea7b3146127a85781630996efb7146123045781630c4e84f0146121ea57816318160ddd146121ce5781631c9e379b146121945781631da8bf10146120ef5781631fb8f81a146120d157816323b872dd14611f2d578163331960ff14611f0f57816334ce998a14611ee657816334d441d014611ec85781633644e51514611ead57816337b6b7b914611e8f57816338d52e0f14611e665781633ba0b9a914611e485781633f741adb14611e2457816340626d8b14611e0657816344de240a14611de8578163473e3ce714611dca57816348e4163e14611d905781634e71e0c814611cf4578163529898f214611cd65781635793546214611cb85781636b19ad1614611c9a5781636c3d8b8f14611c7157816370a0823114611c375781637277854714611c0157816374645ff314611af75781637dc0d1d014611ace5781637ecebe0014611a945781637fa0b84e14611a635781638285ef4014611a3157816387b27937146119f75781638c5d0ed3146119d95781638da5cb5b146119b0578163910dd7c8146117a8578163959916dc1461178b57816399a97028146117645781639e15e89f14611729578163a28e6b8214611363578163a9059cbb1461127c578163b0e21e8a1461125e578163b27c0e741461122b578163b7113f1914611208578163bb4cfe3b146111ea578163bde39c5d146111cc578163c1ad5c8d146111a9578163cb7940e1146105a6578163ce8849ed1461057d578163d505accf1461042e57508063d8dfeb4514610405578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613ae6565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e5576103cd612a68565b6103d5612a7e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761043c36612ae6565b8394969793929192421161054a57610508926105009260018060a01b0395868b16978860005260046020526040600020918254926104798461373a565b90556040519160208301936000805160206143d08339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b5190206104cf6133ef565b9060405190602082019261190160f01b845260228301526042820152604281526104f881612bcc565b5190206136b5565b9190916135b6565b1603610517576102e392613797565b60405162461bcd60e51b815260206004820152601e60248201526000805160206143b08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760803660031901126102e5576004356001600160401b0381116102e5576105d6903690600401612c82565b906024356001600160401b0381116102e5576105f6903690600401612c82565b6044356001600160401b0381116102e557610615903690600401612c82565b929061061f612a94565b926004600052600760205260ff6040600020541661117357861561113357610648818814613d55565b610653858814613d55565b600f546040805163d6d7d52560e01b8152949185906001600160a01b03168160008161068160048201613150565b03925af1938415610c80576000906000956110ff575b5084816110f5575b50156110eb57836011555b831561109b576106b8613ae6565b60009760005b8181106107075789156106cd57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61071281838b614243565b356001600160a01b03811681036102e55761072d8782614253565b15610742575b5061073d9061373a565b6106be565b9961074c9061373a565b99610758828686614243565b359089831015610c5b578260051b87013590601e19883603018212156102e5576001600160401b0388830135116102e5578188013536036020838a0101136102e557600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115610c80576107ed916107e89160009161106c575b506001600160a01b038d1690613c64565b613c04565b6107f789826132e5565b9289156110275760018060a01b03600954166020600c5460018060a01b03851660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80578b90600092610ff1575b5061086e6108739260225490612d3d565b612d66565b60018060a01b038316600052601760205261089381604060002054612e1a565b601d5480610fd2575b5080911115610f99578a9181811115610f915750925b6001600160a01b038316600090815260176020526040902054808511610f89575b846108dd91612d94565b6001600160a01b0384166000908152601760205260409020556108fe6139ca565b6020810180516001600160801b0316610f58575050835b6020610931620186a061092a60215489612d3d565b0487612da1565b606461095761094e60018060a01b036009541697600c5494612d3d565b60225490612d66565b916040519687938492638eb22cdd60e01b845260048401526024830152600060448301525afa928315610c8057600093610f24575b506001600160a01b0384166000908152601860205260409020548311610ee35760018060a01b038416600052601860205260406000206109cd848254612d94565b90558415610eb057601480549091610a166001600160801b036109f4898216828616613c4b565b16926001600160801b0319926001600160801b0316908316841760801c613c4b565b60801b16179055601580548380821115610ea657610a3391612d94565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b83526004830152896024830152600160448301525afa918215610c8057600092610e70575b50610aa690610a959036908d01803590602001612c26565b6001600160a01b038e163085613dc8565b610adb60408260018060a01b0360095416600e54600084518096819582946311a5cc7760e31b84523090309060048601614360565b03925af18015610c8057610e52575b5081811115610e3e57610b0f610b07610b1793620186a093612d94565b965b87612d3d565b048095612d94565b9184610cc5575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610c8c575b50600d546001600160a01b0316803b156102e55760006040518092632770a7eb60e21b8252818381610b9a8b3060048401613d97565b03925af18015610c8057610c71575b5060405190610bb782612bb1565b6001825260203681840137815115610c5b576001600160a01b03166020820190815260405191518291906000905b808210610c395750505091817f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929261073d989796959403902093610c30604051928392339684612c6c565b0390a490610733565b82516001600160a01b0316845260209384019390920191600190910190610be5565b634e487b7160e01b600052603260045260246000fd5b610c7a90612b9e565b8f610ba9565b6040513d6000823e3d90fd5b6020813d602011610cbd575b81610ca560209383612c03565b810103126102e557610cb690613126565b508f610b64565b3d9150610c98565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610e05575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c8057610dcc575b50610d8960408660018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614360565b03925af18015610c8057610d9e575b50610b1e565b610dbf9060403d604011610dc5575b610db78183612c03565b810190613db2565b50610d98565b503d610dad565b6020813d602011610dfd575b81610de560209383612c03565b810103126102e557610df690613126565b508f610d53565b3d9150610dd8565b6020813d602011610e36575b81610e1e60209383612c03565b810103126102e557610e2f90613126565b508f610d0b565b3d9150610e11565b5050610b17620186a0610b0f600096610b09565b610e6a9060403d604011610dc557610db78183612c03565b50610aea565b9091506020813d602011610e9e575b81610e8c60209383612c03565b810103126102e5575190610a95610a7d565b3d9150610e7f565b5050600090610a35565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011610f50575b81610f4060209383612c03565b810103126102e55751913861098c565b3d9150610f33565b9051610f839190610f72906001600160801b031687612d3d565b90516001600160801b031690612d66565b93610915565b9350836108d3565b9050926108b2565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90620186a0610fe4610feb9383612d3d565b0490612da1565b3861089c565b9150506020813d60201161101f575b8161100d60209383612c03565b810103126102e557518a61086e61085d565b3d9150611000565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b61108e915060203d602011611094575b6110868183612c03565b810190613bea565b386107d7565b503d61107c565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b60115493506106aa565b905015158961069f565b905061112491945060403d60401161112c575b61111c8183612c03565b810190613133565b939089610697565b503d611112565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e55760206111c46137ee565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e557611295612a68565b602435908115801590611351575b6112d9575b6040519182526001600160a01b031690339060008051602061443083398151915290602090a3602060405160018152f35b3360005260016020526040600020546112f483821015613518565b6001600160a01b038216908333839003611311575b5050506112a8565b6113259161132084151561355d565b612d94565b3360005260016020526040600020556000526040600020611347838254612da1565b9055828083611309565b50336001600160a01b038216146112a3565b346102e55760803660031901126102e55761137c612a68565b611384612a7e565b6001600160a01b039060443582811691908290036102e5576064356001600160401b0381116102e5576113bb903690600401612ab9565b6113ca85600554163314612cb2565b600f546040805163d6d7d52560e01b81529182908816816000816113f060048201613150565b03925af1908115610c8057600090600092611707575b5081816116fd575b50156116f457806011555b1561169f57611426613ae6565b84600a541660405196879163433e762d60e01b835282600460209a8b935afa918215610c80576107e887899461146493600091611682575b50613c64565b1694856000526017875286611488604060002054620186a0610fe460215483612d3d565b91600954169160646114a361094e600c549360115490612d3d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610c8057600091611655575b5085600052601887526040600020541161161257906115bf9160186102e39787600052818152604060002054976115876115106139ca565b82600052601784526115826115776040600020549260008760405161153481612bb1565b82815201528681019360018060801b03928382818094868a83815116156000146115c55750508161156a915b1682885116613c4b565b1685521682875116613c4b565b168094525116613a9f565b613ac1565b8060005260178252600060408120558282526115aa604060002054601554612d94565b60155560005252600060408120553691612c26565b92613dc8565b61156a926115fe6115f4866115eb6115e1828098511686612d3d565b8287511690612d66565b94511684612d3d565b848c511690612d66565b10156115605761160d9061373a565b611560565b6064866040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508681813d831161167b575b61166c8183612c03565b810103126102e55751876114d8565b503d611662565b61169991508c8d3d10611094576110868183612c03565b8c61145e565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b50601154611419565b905015158861140e565b9050611722915060403d60401161112c5761111c8183612c03565b9088611406565b346102e55760403660031901126102e557611760611751611748612a68565b60243590612fdd565b60409391935193849384612c6c565b0390f35b346102e55760403660031901126102e55760206111c4611782612a68565b602435906132e5565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e5576117e9903690602481600401359101612c26565b9060243561ffff81168091036102e5576101009182848051810103126102e5576020611816818601613126565b91611823604087016135a2565b90611830606088016135a2565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a86169890949042821061197d579289888d9897946119189794610500978f8e600014611968576000805160206143d0833981519152955b8d600052600486526040600020928354936118b18561373a565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526118e581612be7565b5190206118f06133ef565b90604051908a82019261190160f01b845260228301526042820152604281526104f881612bcc565b160361193657501561192d576102e392613797565b6102e392613749565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206143b08339815191526044820152fd5b60008051602061441083398151915295611897565b60405162461bcd60e51b815260048101899052601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611a18612a68565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611a89611a7f612a68565b6024359033613749565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611ab5612a68565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051601054816000611b1a83612b64565b808352600193808516908115611be05750600114611b92575b50611b4092500382612c03565b6040519081602080825282519081818401526000935b828510611b79575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350611b56565b6010600090815260008051602061445083398151915294602093509091905b818310611bc8575050611b40935082010184611b33565b85548784018501529485019486945091830191611bb1565b9050611b4094506020925060ff191682840152151560051b82010184611b33565b346102e55760203660031901126102e55760043560098110156102e55760ff611c2b602092612b35565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611c58612a68565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611d4c57806005549384166000805160206143f0833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611db1612a68565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e55760206111c4604435602435600435612f16565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e55760206111c46133ef565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e557611f46612a68565b611f4e612a7e565b6044359081611f8b575b6040519182526001600160a01b0390811692169060008051602061443083398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611fb382861015613518565b851693848403611fc8575b5050505050611f58565b83600052600283526040600020336000528352604060002054600019810361203c575b508492612013600080516020614430833981519152979593600193611320602099151561355d565b92600052526040600020556000526040600020612031858254612da1565b905591858481611fbe565b9091811061209157602094926120138860008051602061443083398151915298969461206a82600196612d94565b86600052600285526040600020336000528552604060002055935093959750509294611feb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e5576120fd36612ae6565b8394969793929192421161054a57612185926105009260018060a01b0395868b169788600052600460205260406000209182549261213a8461373a565b90556040519160208301936000805160206144108339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b1603610517576102e392613749565b346102e55760203660031901126102e5576001600160a01b036121b5612a68565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e55761220f612aaa565b6008549091906001600160a01b031633036122c85760ff61222f82612b35565b5416151591151591821461228e57808260ff61224d61227c94612b35565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612b35565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576024356001600160a01b03818116918290036102e5576001600160401b03916044358381116102e55761234d903690600401612ab9565b93612356612a94565b9261236685600554163314612cb2565b60043580612767575b5080612728575b50846125c3575b50508116915081612582575b50506084358061256a575b5060a43580612552575b5060c4358061253b575b5060e43580612517575b5061010435806124f3575b5061012435806124c1575b50610144358061244d575b5061016435806123df57005b601e5481106123ed57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61245c620186a0821115612cfd565b601f54811161246e57601e55806123d3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806123c8565b612501620186a08210612cfd565b61250e601b548211612cfd565b601c55806123bd565b612525620186a08210612cfd565b612532601c548210612cfd565b601b55806123b2565b612549620186a08210612cfd565b601d55806123a8565b612561620186a0821115612cfd565b601a558061239e565b612579620186a0821115612cfd565b60195580612394565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080612389565b8411612712576125d4601054612b64565b601f81116126c1575b50600090601f851160011461264657938091849560009261263b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838061237d565b0135905085806125f9565b60106000908152600080516020614450833981519152929060205b601f19881682106126a95750509185916001938697601f1981161061268f575b505050811b0160105561260f565b0135600019600384901b60f8161c19169055858080612681565b80600184968294958701358155019501920190612661565b6010600052600080516020614450833981519152601f860160051c81016020871061270b575b601f90920160051c01905b8181106126ff57506125dd565b600081556001016126f2565b50806126e7565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185612376565b612776620186a0821115612cfd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a36020558661236f565b346102e55760403660031901126102e557611a896127c4612a68565b6024359033613797565b346102e55760603660031901126102e5576127e7612a68565b6127ef612aaa565b6044359081151582036102e55760018060a01b0392839161281583600554163314612cb2565b156128a757169081159081159161289f575b501561286257806005549283166000805160206143f0833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612827565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b0316816000816128fe60048201613150565b03925af18015610c80576000916000916129fb575b5090801561299d5781156129615781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b90506129ae60135460125490612da1565b42116129bf5760409060115461294f565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612a16915060403d60401161112c5761111c8183612c03565b82612913565b346102e55760403660031901126102e557602090612a38612a68565b612a40612a7e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b606435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612b4e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612b94575b6020831014612b7e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612b73565b6001600160401b03811161271257604052565b604081019081106001600160401b0382111761271257604052565b608081019081106001600160401b0382111761271257604052565b61010081019081106001600160401b0382111761271257604052565b601f909101601f19168101906001600160401b0382119082101761271257604052565b9192916001600160401b0382116127125760405191612c4f601f8201601f191660200184612c03565b8294818452818301116102e5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612cb957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612d0457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612d5057565b634e487b7160e01b600052601160045260246000fd5b8115612d70570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612d5057600a0a90565b91908203918211612d5057565b91908201809211612d5057565b81810392916000138015828513169184121617612d5057565b906509184e72a00091828102928184051490151715612d5057565b90670de0b6b3a764000091828102928184051490151715612d5057565b8115612d7057600160ff1b8114600019831416612d50570590565b601454612e5591612e449190612e3a906001600160801b03831690612d3d565b9060801c90612d66565b91620186a0918291601f5490612d3d565b04808310612f0e57612e679083612d94565b601e54602154830190818411612d50578391612e8291612d3d565b0491828103906000809412818312811691831390151617612efa5790612eb3612ead612eb893612dc7565b91612de2565b612dff565b9080821215612ef357600160ff1b8214612edf5703905b808211612eda575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612ecf565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291612f5591612f4691612f3c91612e3a906001600160801b03831690612d3d565b93601f5490612d3d565b612f4f83612d86565b90612d66565b90818310612f0e57612eb3612ead612faf612f73612fb49587612d94565b93612faa612fa4612f9b601e54612f95612f8c86612d86565b60215490612da1565b90612d3d565b612f4f84612d86565b91612d86565b612dae565b612dc7565b6000811215612fd757600160ff1b8114612d505760000390808211612eda575090565b90612ecf565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156131195761300f613a09565b9061301b8615156131eb565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561310e5785916130db575b50928594926130bb6018936130966130cf9961086e61308d60409a620186a06022540490612d3d565b601e5490612d3d565b815190936001600160801b039186916130b191841690612d3d565b9201511690612d66565b8181106130d357035b978352522054613237565b9091565b5050826130c4565b90508381813d8311613107575b6130f28183612c03565b8101031261310357516130cf613064565b8480fd5b503d6130e8565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e557602061314a83613126565b92015190565b60208082526000916010549161316583612b64565b92838284015260019081811690816000146131c8575060011461318a575b5050505090565b929350601060005280600020926000935b8585106131b45750505060409250010138808080613183565b80548585016040015293820193810161319b565b925050506040935060ff929192191683830152151560051b010138808080613183565b156131f257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6132428215156131eb565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80576000916132af575b509061086e61329b9260225490612d3d565b620186a06132ab601e5483612d3d565b0491565b906020823d82116132dd575b816132c860209383612c03565b810103126132da57505161086e613289565b80fd5b3d91506132bb565b6001600160a01b0316600081815260186020526040812054909261330891613237565b9183526017602052604083205480156133e95781156133e9578181106133e957828110156133df5760145461335191839161132091612e3a906001600160801b03831690612d3d565b90620186a092838302928084048514901517156133cb576133769291612f4f91612d94565b91601b5491601c54936133898585612dae565b80820291848212600160ff1b8214166133cb578183051490151715612efa5705818482019485129112908015821691151617612edf5750808212612eda575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806134ef575b1561344a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176127125760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613421565b1561351f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561356457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612b4e57806135c75750565b6001810361360f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361365c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461366557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161372e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156137215781516001600160a01b0381161561371b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612d505760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613964576014546001600160801b031690811561395d57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610c80578591600091613928575b50600460405180948193631a674cc560e11b8352165afa938415610c80576000946138f5575b50506138889192670de0b6b3a764000092839160295490612d3d565b0490818110156138ec5761389f602a548092612d94565b83810290808204851490151715612d5057612f4f6138c0926138e094612d94565b602754926138da602854926138d58487612d94565b612d3d565b04612da1565b90808211612eda575090565b50505060275490565b81813d8311613921575b6139098183612c03565b8101031261391d575192506138883861386c565b8380fd5b503d6138ff565b9182813d8311613956575b61393d8183612c03565b810103126132da575061395085916135a2565b38613846565b503d613933565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610c805760009161399c575090565b906020823d82116139c2575b816139b560209383612c03565b810103126132da57505190565b3d91506139a8565b604051906139d782612bb1565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612d5057565b60006020604051613a1981612bb1565b82815201526025546001600160401b039190613a3a9060401c831642612d94565b918215613a9157613a8c6138d591670de0b6b3a7640000613a81613a5c6139ca565b9660018060801b03958694858a5116906301e13380613a796137ee565b041690612d3d565b0416828551166139f0565b168252565b509050613a9c6139ca565b90565b601480546001600160801b0319166001600160801b0392909216919091179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b604051613af281612bb1565b6025546001600160401b03808216835260409190911c811660208301818152929190613b1e9042612d94565b918215613be457816301e13380613b336137ee565b041681528142168452613b95613b476139ca565b936020670de0b6b3a7640000613b6f60018060801b03936138d5858a51168989511690612d3d565b0495613b8d83613b84818a16828551166139f0565b16808352613a9f565b015116613ac1565b5116918260255491600160401b600160801b03905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b908160209103126102e5575161ffff811681036102e55790565b15613c0b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160801b039182169082160391908211612d5057565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c80578493600091613d13575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c8057600091613cdf575b50905090565b82813d8311613d0c575b613cf38183612c03565b810103126132da5750613d0590613126565b8038613cd9565b503d613ce9565b9091929381813d8311613d4e575b613d2b8183612c03565b81010312613d4a57519082821682036132da5750839291906044613c9f565b5080fd5b503d613d21565b15613d5c57565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b6001600160a01b039091168152602081019190915260400190565b91908260409103126102e5576020825192015190565b600954600c5495946001600160a01b039182169390929160009190853b1561423f576040988951630208d92960e11b81528481608481838760049e8f3090850152169c8d9760249e8f85015260448401528b60648401525af180156140665761422c575b5060209586818051810103126102e55786015180156141ed5790829189949360095416968c89600e549151809a8180613e72868c627eeac760e11b9e8f85528401613d97565b03915afa9889156141b057908e94939291899a6141ba575b50600c54945194633d9545e960e11b86528d8601528b850152876044850152606484015260016084840152600160a4840152610140808460c481865afa9384156141b057888f939487958f938f958f91859a614070575b50508680989960606101c49899519b8c9a8b9963efa84c6d60e01b8b52845192835116908b015285820151908a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af180156140665791879391613fb29796959361404a575b506009541690600e54928c519788948593849384528d8401613d97565b03915afa90811561403f5790614010575b613fcd9250612d94565b948515613fda5750505050565b5162461bcd60e51b81529283015260149082015273109a59d0985b99ce8814ddd85c0819985a5b195960621b6044820152606490fd5b508282813d8311614038575b6140268183612c03565b810103126102e557613fcd9151613fc3565b503d61401c565b8851903d90823e3d90fd5b614060908d803d10610dc557610db78183612c03565b50613f95565b8b513d87823e3d90fd5b965096505095509550505080823d84116141a9575b61408f8183612c03565b810103918212614189578d5191606083016001600160401b03811184821017614195578f81905260808212614191578f6140e7906140cc83612bcc565b6140d5856135a2565b83528d850151608087015284016135a2565b60a0850152606083015160c085015283526080607f1982011261418d578e90815161411181612bcc565b6080840151815260a08401518d82015260c08401518382015260e08401516060820152848d015260ff190112614189578b888f949587968d8f9688906101c49761417861012084519261416384612bb1565b6141706101008201613126565b845201613126565b848201528282015299989796613ee1565b8780fd5b8880fd5b8980fd5b8c60418f634e487b7160e01b600052526000fd5b503d614085565b8e513d8a823e3d90fd5b8b80929b508196503d83116141e6575b6141d48183612c03565b810103126102e5578d93519838613e8a565b503d6141ca565b8a5162461bcd60e51b8152808a01889052601a818a015279084d2ce84c2dcce7440e6d8d2e0e0c2ceca40e8dede40d0d2ced60331b6044820152606490fd5b61423890949194612b9e565b9238613e2c565b8280fd5b9190811015610c5b5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561435657601881526040862054801561434f578161428d6139ca565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561434357809761430d575b50506130b16142f26142e9614308969798620186a06022540490612d3d565b601f5490612d3d565b956138d560018060801b03948587511690612d3d565b111590565b9096508187813d831161433c575b6143258183612c03565b810103126132da57509451946130b16142f26142ca565b503d61431b565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a0019056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203134f5dff25a7f8c9b11772ca3c81e4bfc328b8b90914fd123d53737e6b8854364736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556142be9283620001ab8439608051836135b0015260a0518361367b015260c0518361357a015260e051836135ff01525182613625015251816135dc0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203e990b2d4ed7ca6688ee176ce98870e8bfef945e990b473d9aa0d6abe2f3a1ff64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203e990b2d4ed7ca6688ee176ce98870e8bfef945e990b473d9aa0d6abe2f3a1ff64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBStorage.json b/src/artifacts/tapioca-bar/BBStorage.json index 60a87c6d..9aab1117 100644 --- a/src/artifacts/tapioca-bar/BBStorage.json +++ b/src/artifacts/tapioca-bar/BBStorage.json @@ -1525,8 +1525,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126dc9283620001ab84396080518361224f015260a05183612319015260c05183612219015260e0518361229e015251826122c40152518161227b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611abb5750806302ce728f146118a4578063078dfbe7146117b2578063095ea7b31461178c5780630996efb7146112d55780630c4e84f0146111bb57806318160ddd1461119f5780631c9e379b146111655780631da8bf10146110bb5780631fb8f81a1461109d57806323b872dd14610ef9578063331960ff14610edb57806334d441d014610ebd5780633644e51514610ea257806337b6b7b914610e8457806338d52e0f14610e5b5780633ba0b9a914610e3d5780633f741adb14610e1957806340626d8b14610dfb57806344de240a14610ddd578063473e3ce714610dbf57806348e4163e14610d855780634e71e0c814610ce9578063529898f214610ccb5780635793546214610cad5780636b19ad1614610c8f5780636c3d8b8f14610c6657806370a0823114610c2c5780637277854714610bf657806374645ff314610aec5780637dc0d1d014610ac35780637ecebe0014610a895780637fa0b84e14610a585780638285ef4014610a2657806387b27937146109ec5780638c5d0ed3146109ce5780638da5cb5b146109a5578063910dd7c8146107b0578063959916dc1461079357806399a97028146107645780639e15e89f1461072a578063a9059cbb14610643578063b0e21e8a14610625578063b27c0e74146105f2578063b7113f19146105cf578063bb4cfe3b146105b1578063bde39c5d14610593578063ce8849ed1461056a578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b07565b610381611b1d565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f576104b9956104b1956001830190556040519060208201926000805160206126078339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b519020610480612216565b9060405190602082019261190160f01b845260228301526042820152604281526104a981611c16565b5190206124dc565b9190916123dd565b16036104ca576104c8926125af565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af57602554604080516001600160401b03808416825292821c909216602083015290f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761065c611b07565b602435908115801590610718575b6106a0575b6040519182526001600160a01b031690339060008051602061266783398151915290602090a3602060405160018152f35b3360005260016020526040600020546106bb8382101561233f565b6001600160a01b0382169083338390036106d8575b50505061066f565b6106ec916106e7841515612384565b611d20565b336000526001602052604060002055600052604060002061070e838254611d2d565b90558280836106d0565b50336001600160a01b0382161461066a565b346102af5760403660031901126102af576060610751610748611b07565b60243590611e6c565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061078b610782611b07565b602435906120e4565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af57806004013591821161098f5760405191610802601f8201601f191660200184611c31565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761084e90611fdd565b61085a604083016123c9565b91610867606082016123c9565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161052557851561097b576000805160206126078339815191525b6001600160a01b03881660009081526004602052604090208054909690600019811461050f5761ffff6104b1976109389960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261092981611bfa565b60208151910120610480612216565b6001600160a01b038381169116036104ca5715610965576104c8926001600160a01b0390811691166125af565b6104c8926001600160a01b039081169116612561565b6000805160206126478339815191526108aa565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a0d611b07565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610a7e610a74611b07565b6024359033612561565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610aaa611b07565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b0f83611bc0565b808352600193808516908115610bd55750600114610b87575b50610b3592500382611c31565b6040519081602080825282519081818401526000935b828510610b6e575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b4b565b6010600090815260008051602061268783398151915294602093509091905b818310610bbd575050610b35935082010184610b28565b85548784018501529485019486945091830191610ba6565b9050610b3594506020925060ff191682840152151560051b82010184610b28565b346102af5760203660031901126102af5760043560098110156102af5760ff610c20602092611b91565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c4d611b07565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d415780600554938416600080516020612627833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610da6611b07565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061078b604435602435600435611d53565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061078b612216565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f12611b07565b610f1a611b1d565b6044359081610f57575b6040519182526001600160a01b0390811692169060008051602061266783398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610f7f8286101561233f565b851693848403610f94575b5050505050610f24565b836000526002835260406000203360005283526040600020546000198103611008575b508492610fdf6000805160206126678339815191529795936001936106e76020991515612384565b92600052526040600020556000526040600020610ffd858254611d2d565b905591858481610f8a565b9091811061105d5760209492610fdf8860008051602061266783398151915298969461103682600196611d20565b86600052600285526040600020336000528552604060002055935093959750509294610fb7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af576110c936611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f57611156956104b1956001830190556040519060208201926000805160206126478339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b16036104ca576104c892612561565b346102af5760203660031901126102af576001600160a01b03611186611b07565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af576111e0611b33565b6008549091906001600160a01b031633036112995760ff61120082611b91565b5416151591151591821461125f57808260ff61121e61124d94611b91565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b91565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af57602480356001600160a01b03818116918290036102af576001600160401b036044358181116102af57366023820112156102af5780600401359182116102af57368583830101116102af57606435938385168095036102af5761134f84600554163314611c54565b6004358061174b575b508061170c575b5084826115aa575b50505081611569575b505060843580611551575b5060a43580611539575b5060c43580611522575b5060e435806114fe575b5061010435806114da575b5061012435806114a8575b506101443580611435575b506101643590816113c757005b601e5482106113d65750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611444620186a0821115611c9f565b601f54811161145657601e55816113ba565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816113af565b6114e8620186a08210611c9f565b6114f5601b548211611c9f565b601c55816113a4565b61150c620186a08210611c9f565b611519601c548210611c9f565b601b5581611399565b611530620186a08210611c9f565b601d558161138f565b611548620186a0821115611c9f565b601a5581611385565b611560620186a0821115611c9f565b6019558161137b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180611370565b82916115b7601054611bc0565b601f81116116ab575b50600090601f84116001146116285760009361161b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084611367565b01013590508486806115d7565b60106000908152601f198516955060008051602061268783398151915293509091889160205b87821061168c5750508460019610611670575b50505050811b016010556115ee565b60001960f88660031b161c199201013516905585808681611661565b828501909301358555600194909401938992918201919081019061164e565b60106000529092509050600080516020612687833981519152601f840160051c810160208510611705575b91849391601f8994920160051c01905b8181106116f357506115c0565b600081558594508893506001016116e6565b50806116d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561135f565b61175a620186a0821115611c9f565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a360205586611358565b346102af5760403660031901126102af57610a7e6117a8611b07565b60243590336125af565b346102af5760603660031901126102af576117cb611b07565b6117d3611b33565b6044359081151582036102af5760018060a01b039283916117f983600554163314611c54565b1561188b571690811590811591611883575b50156118465780600554928316600080516020612627833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508361180b565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546118e681611bc0565b908160248501526001908181169081600014611a955750600114611a55575b50509060409181600081809603925af18015611a4957600091600091611a0a575b5081156119ad5780156119715760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b506119bd60135460125490611d2d565b42116119ce57601154604092611961565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a41575b81611a2660409383611c31565b810103126102af5781611a3882611fdd565b91015183611926565b3d9150611a19565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611a80575050505091810160440191806040611905565b80548688016044015295019486908201611a66565b60ff191660448087019190915292151560051b8501909201945082915060409050611905565b346102af5760403660031901126102af57602090611ad7611b07565b611adf611b1d565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611baa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611bf0575b6020831014611bda57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bcf565b61010081019081106001600160401b0382111761098f57604052565b608081019081106001600160401b0382111761098f57604052565b601f909101601f19168101906001600160401b0382119082101761098f57604052565b15611c5b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ca657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561050f57565b8115611cfc570490565b634e487b7160e01b600052601260045260246000fd5b604d811161050f57600a0a90565b9190820391821161050f57565b9190820180921161050f57565b8181039291600013801582851316918412161761050f57565b601454919291611d9c91611d8d91611d8391611d79906001600160801b03831690611cdf565b9060801c90611cf2565b93601f5490611cdf565b611d9683611d12565b90611cf2565b808310611e6457611db0611dec9184611d20565b91611de7611de1611dd8601e54611dd2611dc986611d12565b60215490611d2d565b90611cdf565b611d9684611d12565b91611d12565b611d3a565b6509184e72a0009081810291818305149015171561050f57670de0b6b3a76400009182810292818405149015171561050f578015611cfc57600160ff1b9180831460001983141661050f5705906000821215611e5d57811461050f57600003905b808211611e58575090565b905090565b5090611e4d565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115611fd05783518085016001600160401b03811182821017611fbc578552888152888480830193828552611ec2891515611fea565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611fb2578a91611f7f575b50611f73979899949260189492611f56611f418a611f3c611f33611f5f97620186a06022540490611cdf565b601e5490611cdf565b611cf2565b915191946001600160801b0392831690611cdf565b91511690611cf2565b818110611f7757035b978352522054612036565b9091565b505082611f68565b90508481813d8311611fab575b611f968183611c31565b81010312611fa75751611f73611f07565b8980fd5b503d611f8c565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b15611ff157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612041821515611fea565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a49576000916120ae575b5090611f3c61209a9260225490611cdf565b620186a06120aa601e5483611cdf565b0491565b906020823d82116120dc575b816120c760209383611c31565b810103126120d9575051611f3c612088565b80fd5b3d91506120ba565b6001600160a01b0316600081815260186020526040812054909261210791612036565b918352601760205260408320548015612210578115612210578181106122105782811015612206576014546121509183916106e791611d79906001600160801b03831690611cdf565b90620186a092838302928084048514901517156121f2576121759291611d9691611d20565b91601b5491601c54936121888585611d3a565b80820291848212600160ff1b8214166121f25781830514901517156121de57058184820194851291129080158216911516176121ca5750808212611e58575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612316575b15612271577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761098f5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612248565b1561234657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561238b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611baa57806123ee5750565b600181036124365760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124835760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461248c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125555791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125485781516001600160a01b03811615612542579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a77051bfbb5fad893c7c0b2c6e817e28c298a6d568311d41b31e7dcd5b25b8bc64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611abb5750806302ce728f146118a4578063078dfbe7146117b2578063095ea7b31461178c5780630996efb7146112d55780630c4e84f0146111bb57806318160ddd1461119f5780631c9e379b146111655780631da8bf10146110bb5780631fb8f81a1461109d57806323b872dd14610ef9578063331960ff14610edb57806334d441d014610ebd5780633644e51514610ea257806337b6b7b914610e8457806338d52e0f14610e5b5780633ba0b9a914610e3d5780633f741adb14610e1957806340626d8b14610dfb57806344de240a14610ddd578063473e3ce714610dbf57806348e4163e14610d855780634e71e0c814610ce9578063529898f214610ccb5780635793546214610cad5780636b19ad1614610c8f5780636c3d8b8f14610c6657806370a0823114610c2c5780637277854714610bf657806374645ff314610aec5780637dc0d1d014610ac35780637ecebe0014610a895780637fa0b84e14610a585780638285ef4014610a2657806387b27937146109ec5780638c5d0ed3146109ce5780638da5cb5b146109a5578063910dd7c8146107b0578063959916dc1461079357806399a97028146107645780639e15e89f1461072a578063a9059cbb14610643578063b0e21e8a14610625578063b27c0e74146105f2578063b7113f19146105cf578063bb4cfe3b146105b1578063bde39c5d14610593578063ce8849ed1461056a578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b07565b610381611b1d565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f576104b9956104b1956001830190556040519060208201926000805160206126078339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b519020610480612216565b9060405190602082019261190160f01b845260228301526042820152604281526104a981611c16565b5190206124dc565b9190916123dd565b16036104ca576104c8926125af565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af57602554604080516001600160401b03808416825292821c909216602083015290f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761065c611b07565b602435908115801590610718575b6106a0575b6040519182526001600160a01b031690339060008051602061266783398151915290602090a3602060405160018152f35b3360005260016020526040600020546106bb8382101561233f565b6001600160a01b0382169083338390036106d8575b50505061066f565b6106ec916106e7841515612384565b611d20565b336000526001602052604060002055600052604060002061070e838254611d2d565b90558280836106d0565b50336001600160a01b0382161461066a565b346102af5760403660031901126102af576060610751610748611b07565b60243590611e6c565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061078b610782611b07565b602435906120e4565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af57806004013591821161098f5760405191610802601f8201601f191660200184611c31565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761084e90611fdd565b61085a604083016123c9565b91610867606082016123c9565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161052557851561097b576000805160206126078339815191525b6001600160a01b03881660009081526004602052604090208054909690600019811461050f5761ffff6104b1976109389960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261092981611bfa565b60208151910120610480612216565b6001600160a01b038381169116036104ca5715610965576104c8926001600160a01b0390811691166125af565b6104c8926001600160a01b039081169116612561565b6000805160206126478339815191526108aa565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a0d611b07565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610a7e610a74611b07565b6024359033612561565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610aaa611b07565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b0f83611bc0565b808352600193808516908115610bd55750600114610b87575b50610b3592500382611c31565b6040519081602080825282519081818401526000935b828510610b6e575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b4b565b6010600090815260008051602061268783398151915294602093509091905b818310610bbd575050610b35935082010184610b28565b85548784018501529485019486945091830191610ba6565b9050610b3594506020925060ff191682840152151560051b82010184610b28565b346102af5760203660031901126102af5760043560098110156102af5760ff610c20602092611b91565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c4d611b07565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d415780600554938416600080516020612627833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610da6611b07565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061078b604435602435600435611d53565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061078b612216565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f12611b07565b610f1a611b1d565b6044359081610f57575b6040519182526001600160a01b0390811692169060008051602061266783398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610f7f8286101561233f565b851693848403610f94575b5050505050610f24565b836000526002835260406000203360005283526040600020546000198103611008575b508492610fdf6000805160206126678339815191529795936001936106e76020991515612384565b92600052526040600020556000526040600020610ffd858254611d2d565b905591858481610f8a565b9091811061105d5760209492610fdf8860008051602061266783398151915298969461103682600196611d20565b86600052600285526040600020336000528552604060002055935093959750509294610fb7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af576110c936611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f57611156956104b1956001830190556040519060208201926000805160206126478339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b16036104ca576104c892612561565b346102af5760203660031901126102af576001600160a01b03611186611b07565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af576111e0611b33565b6008549091906001600160a01b031633036112995760ff61120082611b91565b5416151591151591821461125f57808260ff61121e61124d94611b91565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b91565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af57602480356001600160a01b03818116918290036102af576001600160401b036044358181116102af57366023820112156102af5780600401359182116102af57368583830101116102af57606435938385168095036102af5761134f84600554163314611c54565b6004358061174b575b508061170c575b5084826115aa575b50505081611569575b505060843580611551575b5060a43580611539575b5060c43580611522575b5060e435806114fe575b5061010435806114da575b5061012435806114a8575b506101443580611435575b506101643590816113c757005b601e5482106113d65750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611444620186a0821115611c9f565b601f54811161145657601e55816113ba565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816113af565b6114e8620186a08210611c9f565b6114f5601b548211611c9f565b601c55816113a4565b61150c620186a08210611c9f565b611519601c548210611c9f565b601b5581611399565b611530620186a08210611c9f565b601d558161138f565b611548620186a0821115611c9f565b601a5581611385565b611560620186a0821115611c9f565b6019558161137b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180611370565b82916115b7601054611bc0565b601f81116116ab575b50600090601f84116001146116285760009361161b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084611367565b01013590508486806115d7565b60106000908152601f198516955060008051602061268783398151915293509091889160205b87821061168c5750508460019610611670575b50505050811b016010556115ee565b60001960f88660031b161c199201013516905585808681611661565b828501909301358555600194909401938992918201919081019061164e565b60106000529092509050600080516020612687833981519152601f840160051c810160208510611705575b91849391601f8994920160051c01905b8181106116f357506115c0565b600081558594508893506001016116e6565b50806116d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561135f565b61175a620186a0821115611c9f565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a360205586611358565b346102af5760403660031901126102af57610a7e6117a8611b07565b60243590336125af565b346102af5760603660031901126102af576117cb611b07565b6117d3611b33565b6044359081151582036102af5760018060a01b039283916117f983600554163314611c54565b1561188b571690811590811591611883575b50156118465780600554928316600080516020612627833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508361180b565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546118e681611bc0565b908160248501526001908181169081600014611a955750600114611a55575b50509060409181600081809603925af18015611a4957600091600091611a0a575b5081156119ad5780156119715760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b506119bd60135460125490611d2d565b42116119ce57601154604092611961565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a41575b81611a2660409383611c31565b810103126102af5781611a3882611fdd565b91015183611926565b3d9150611a19565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611a80575050505091810160440191806040611905565b80548688016044015295019486908201611a66565b60ff191660448087019190915292151560051b8501909201945082915060409050611905565b346102af5760403660031901126102af57602090611ad7611b07565b611adf611b1d565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611baa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611bf0575b6020831014611bda57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bcf565b61010081019081106001600160401b0382111761098f57604052565b608081019081106001600160401b0382111761098f57604052565b601f909101601f19168101906001600160401b0382119082101761098f57604052565b15611c5b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ca657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561050f57565b8115611cfc570490565b634e487b7160e01b600052601260045260246000fd5b604d811161050f57600a0a90565b9190820391821161050f57565b9190820180921161050f57565b8181039291600013801582851316918412161761050f57565b601454919291611d9c91611d8d91611d8391611d79906001600160801b03831690611cdf565b9060801c90611cf2565b93601f5490611cdf565b611d9683611d12565b90611cf2565b808310611e6457611db0611dec9184611d20565b91611de7611de1611dd8601e54611dd2611dc986611d12565b60215490611d2d565b90611cdf565b611d9684611d12565b91611d12565b611d3a565b6509184e72a0009081810291818305149015171561050f57670de0b6b3a76400009182810292818405149015171561050f578015611cfc57600160ff1b9180831460001983141661050f5705906000821215611e5d57811461050f57600003905b808211611e58575090565b905090565b5090611e4d565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115611fd05783518085016001600160401b03811182821017611fbc578552888152888480830193828552611ec2891515611fea565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611fb2578a91611f7f575b50611f73979899949260189492611f56611f418a611f3c611f33611f5f97620186a06022540490611cdf565b601e5490611cdf565b611cf2565b915191946001600160801b0392831690611cdf565b91511690611cf2565b818110611f7757035b978352522054612036565b9091565b505082611f68565b90508481813d8311611fab575b611f968183611c31565b81010312611fa75751611f73611f07565b8980fd5b503d611f8c565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b15611ff157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612041821515611fea565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a49576000916120ae575b5090611f3c61209a9260225490611cdf565b620186a06120aa601e5483611cdf565b0491565b906020823d82116120dc575b816120c760209383611c31565b810103126120d9575051611f3c612088565b80fd5b3d91506120ba565b6001600160a01b0316600081815260186020526040812054909261210791612036565b918352601760205260408320548015612210578115612210578181106122105782811015612206576014546121509183916106e791611d79906001600160801b03831690611cdf565b90620186a092838302928084048514901517156121f2576121759291611d9691611d20565b91601b5491601c54936121888585611d3a565b80820291848212600160ff1b8214166121f25781830514901517156121de57058184820194851291129080158216911516176121ca5750808212611e58575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612316575b15612271577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761098f5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612248565b1561234657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561238b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611baa57806123ee5750565b600181036124365760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124835760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461248c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125555791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125485781516001600160a01b03811615612542579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a77051bfbb5fad893c7c0b2c6e817e28c298a6d568311d41b31e7dcd5b25b8bc64736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126a39283620001ab843960805183612295015260a05183612360015260c0518361225f015260e051836122e40152518261230a015251816122c10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eadf0960ce249225f85bbfa6ca419e318a421f46a4aa066bc33e854b1d64302164736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eadf0960ce249225f85bbfa6ca419e318a421f46a4aa066bc33e854b1d64302164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BaseUSDO.json b/src/artifacts/tapioca-bar/BaseUSDO.json index e281ab6a..c8e9b9d5 100644 --- a/src/artifacts/tapioca-bar/BaseUSDO.json +++ b/src/artifacts/tapioca-bar/BaseUSDO.json @@ -27,17 +27,37 @@ }, { "internalType": "address payable", - "name": "_leverageModule", + "name": "__leverageModule", "type": "address" }, { "internalType": "address payable", - "name": "_marketModule", + "name": "__leverageDestinationModule", "type": "address" }, { "internalType": "address payable", - "name": "_optionsModule", + "name": "__marketModule", + "type": "address" + }, + { + "internalType": "address payable", + "name": "__marketDestinationModule", + "type": "address" + }, + { + "internalType": "address payable", + "name": "__optionsModule", + "type": "address" + }, + { + "internalType": "address payable", + "name": "__optionsDestinationModule", + "type": "address" + }, + { + "internalType": "address payable", + "name": "__genericModule", "type": "address" } ], @@ -100,63 +120,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -1027,7 +990,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -1125,19 +1088,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1233,6 +1183,197 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IUSDOBase.ILeverageSwapData", + "name": "swapData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "srcExtraGasLimit", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "lzSrcChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "dstAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "srcAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageLZData", + "name": "lzData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "swapper", + "type": "address" + }, + { + "internalType": "address", + "name": "magnetar", + "type": "address" + }, + { + "internalType": "address", + "name": "tOft", + "type": "address" + }, + { + "internalType": "address", + "name": "srcMarket", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageExternalContractsData", + "name": "externalData", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "airdropAdapterParams", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bool", + "name": "permitAll", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "actionType", + "type": "uint16" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" + }, + { + "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" + } + ], + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + } + ], + "name": "initMultiHopBuy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, { "inputs": [ { @@ -1257,19 +1398,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "leverageModule", - "outputs": [ - { - "internalType": "contract USDOLeverageModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lzEndpoint", @@ -1311,32 +1439,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "marketModule", - "outputs": [ - { - "internalType": "contract USDOMarketModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1421,19 +1523,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "optionsModule", - "outputs": [ - { - "internalType": "contract USDOOptionsModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "owner", @@ -1743,7 +1832,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2052,7 +2141,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2330,6 +2419,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "name": "setCluster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -2371,32 +2473,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_val", - "type": "uint256" - } - ], - "name": "setFlashMintFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_val", - "type": "uint256" - } - ], - "name": "setMaxFlashMintable", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -2734,7 +2810,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2861,8 +2937,8 @@ "type": "receive" } ], - "bytecode": "0x6101c08060405234620008085760e08162005f3c803803809162000024828562000829565b83398101031262000808576200003a816200084d565b6020820151916001600160a01b0383168303620008085760408101516001600160a01b03811690819003620008085762000077606083016200084d565b9362000086608084016200084d565b90620000a360c06200009b60a087016200084d565b95016200084d565b9260405191620000b3836200080d565b60048352635553444f60e01b80602085015260405197620000d4896200080d565b60018952603160f81b60208a015260405190620000f1826200080d565b60048252826020830152604051926200010a846200080d565b6004845260208401526200011e3362000862565b6001600160a01b0316608052600860a0528051906001600160401b0382116200055757600b5490600182811c92168015620007fd575b6020831014620006d35781601f8493116200078b575b50602090601f83116001146200070057600092620006f4575b50508160011b916000199060031b1c191617600b555b8051906001600160401b0382116200055757600c5490600182811c92168015620006e9575b6020831014620006d35781601f84931162000661575b50602090601f8311600114620005d257600092620005c6575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa908115620005ba576000916200056d575b5061ffff1680600052600f6020526040600020336000526020526040600020600160ff1982541617905560005260106020526040600020336000526020526040600020600160ff19825416179055600a60125569152d02c7e14af680000060135560e05260018060a01b0319600d541617600d556020815191012093602081519101208461016052806101805246610120526040519460008051602062005f1c8339815191526020870152604086015260608501524660808501523060a085015260a084528360c081011060018060401b0360c086011117620005575760c084016040908152845160208087019190912061010052306101405260008051602062005f1c8339815191526101a052601780546001600160a01b039485166001600160a01b03199182168117909255601880549786169782168817905560198054968616969091168617905560009081526014909152818120805460ff1990811660019081179092559582528282208054871682179055938152908120805490941690921790925554339116036200050f57506001600160a01b03811615620004bb57620003f09062000862565b6040516156729081620008aa82396080518181816105ac0152818161086f015281816109ab01528181610c7501528181610e28015281816120c5015281816123a201528181612de201528181613e92015281816145fc01526148bb015260a051816117f0015260c051818181614a3501528181614c1001528181614e7d0152614f15015260e051816127d1015261010051816135790152610120518161363401526101405181613543015261016051816135c8015261018051816135ee01526101a051816135a50152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b60c060649162461bcd60e51b82820152602060c4820152602060e48201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657261010482015201fd5b634e487b7160e01b600052604160045260246000fd5b6020813d602011620005b1575b81620005896020938362000829565b81010312620005ad57519061ffff82168203620005aa575061ffff62000243565b80fd5b5080fd5b3d91506200057a565b6040513d6000823e3d90fd5b015190503880620001ed565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f198416851062000645576001945083601f198116106200062b575b505050811b01600c5562000203565b015160001960f88460031b161c191690553880806200061c565b81810151835560209485019460019093019290910190620005ff565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c810160208510620006cb575b90849392915b601f830160051c82018110620006bb575050620001d4565b60008155859450600101620006a3565b50806200069d565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001be565b01519050388062000183565b600b60009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99350601f198516905b81811062000772575090846001959493921062000758575b505050811b01600b5562000199565b015160001960f88460031b161c1916905538808062000749565b9293602060018192878601518155019501930162000731565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c810160208510620007f5575b90849392915b601f830160051c82018110620007e55750506200016a565b60008155859450600101620007cd565b5080620007c7565b91607f169162000154565b600080fd5b604081019081106001600160401b038211176200055757604052565b601f909101601f19168101906001600160401b038211908210176200055757604052565b51906001600160a01b03821682036200080857565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104e057806301ffc9a7146104db57806306fdde03146104d657806307e0db17146104d1578063095ea7b3146104cc5780630df37483146104c757806310ddb137146104c257806316d995a9146104bd57806318160ddd1461043b5780631d2a0e3d146104b857806323b872dd146104b3578063313ce567146104ae5780633644e515146104a9578063365260b4146104a4578063395093511461049f5780633d8b38f61461049a5780633f1f4fa41461049557806342d65a8d14610490578063447705151461048b5780634c42899a1461048b5780635b8c41e6146104865780635c975abb1461048157806366ad5c8a1461047c578063695ef6bf1461047757806370a0823114610472578063715018a61461046d5780637533d7881461046857806376203b4814610463578063796fd43a1461045e5780637ecebe0014610459578063857749b01461045457806389dd56021461044f5780638cfd8f5c1461044a5780638da5cb5b146104455780639169d59e146104405780639358928b1461043b578063940a1dc014610436578063950c8a7414610431578063952168c51461042c57806395d89b41146104275780639bdb9812146104225780639d3f4d1a1461041d5780639f38369a14610418578063a457c2d714610413578063a4c51df51461040e578063a6c3d16514610409578063a9059cbb14610404578063b02f69a2146103ff578063b25ea8fb146103fa578063b353aaa7146103f5578063ba03a8d7146103f0578063baf3292d146103eb578063c056a8de146103e6578063c4461834146103e1578063cbed8b9c146103dc578063ce8849ed146103d7578063cfd8b3d8146103d2578063d1deba1f146103cd578063d505accf146103c8578063dbd01de1146103c3578063dd62ed3e146103be578063de406577146103b9578063df2a5b3b146103b4578063e6a20ae6146103af578063e78eb946146103aa578063eab45d9c146103a5578063eaffd49a146103a0578063eb8d72b71461039b578063ec6d062b14610396578063ed629c5c14610391578063f00c298d1461038c578063f2fde38b14610387578063f5b33dfa14610382578063f5ecbdbc1461037d578063f8974de014610378578063fa74f0b5146103735763fc0c546a0361000e57612f3d565b612ec5565b612e4c565b612d78565b612d4f565b612c9a565b612c28565b612c05565b612bcd565b612aa4565b612a1b565b6129bd565b612918565b6128ed565b612800565b6127bb565b612771565b612748565b6125e7565b61248c565b612463565b61243a565b61234e565b612331565b6121f1565b61215d565b612125565b6120af565b612038565b611f91565b611f47565b611de5565b611d54565b611ca8565b611c05565b611be7565b611b9c565b611af8565b6119d5565b61197b565b61195d565b610a64565b6118c5565b61189c565b61183d565b611814565b6117d6565b611799565b611610565b6113f3565b61139c565b611268565b61122b565b611148565b611092565b61106f565b61101b565b610e8f565b610e0e565b610dd5565b610d79565b610cf1565b610bef565b610b72565b610b56565b610b16565b610a82565b610a0c565b610982565b610943565b61090e565b610846565b610766565b6106a9565b610595565b61ffff8116036104f157565b600080fd5b3590610501826104e5565b565b9181601f840112156104f1578235916001600160401b0383116104f157602083818601950101116104f157565b9060806003198301126104f157600435610549816104e5565b916001600160401b03906024358281116104f1578161056a91600401610503565b9390939260443581811681036104f157926064359182116104f15761059191600401610503565b9091565b346104f1576105a336610530565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106645761062961063192610019976106226106086106038a61ffff166000526001602052604060002090565b611381565b805190818414918261065a575b5081610637575b50613fbc565b3691610f4d565b923691610f4d565b926140da565b9050610644368486610f4d565b602081519101209060208151910120143861061c565b1515915038610615565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104f15760203660031901126104f15760043563ffffffff60e01b81168091036104f157602090631f7ecdf760e01b81149081156106ee575b506040519015158152f35b6301ffc9a760e01b149050386106e3565b60009103126104f157565b60005b83811061071d5750506000910152565b818101518382015260200161070d565b906020916107468151809281855285808601910161070a565b601f01601f1916010190565b90602061076392818152019061072d565b90565b346104f1576000806003193601126108435760405181600b54610788816112b1565b8084529060019081811690811561081b57506001146107c2575b6107be846107b281880382610f0f565b60405191829182610752565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061080857505050816107be936107b292820101936107a2565b80548585018701529285019281016107ec565b6107be96506107b29450602092508593915060ff191682840152151560051b820101936107a2565b80fd5b346104f1576000602036600319011261084357600435610865816104e5565b61086d612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108dc576108d0575080f35b6108d990610ec1565b80f35b6134bc565b5080fd5b6001600160a01b038116036104f157565b60643590610501826108e5565b3590610501826108e5565b346104f15760403660031901126104f15761093860043561092e816108e5565b6024359033613171565b602060405160018152f35b346104f15760403660031901126104f15761ffff600435610963816104e5565b61096b612f58565b166000526003602052602435604060002055600080f35b346104f15760006020366003190112610843576004356109a1816104e5565b6109a9612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108dc576108d0575080f35b346104f15760203660031901126104f157600435610a28612f58565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610a5c60405192839283610bde565b0390a1601355005b346104f15760003660031901126104f1576020600a54604051908152f35b346104f15760203660031901126104f157600435610a9e612f58565b620f4240811015610ae5577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610add60405192839283610bde565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b346104f15760603660031901126104f157610938600435610b36816108e5565b602435610b42816108e5565b60443591610b5183338361328a565b6130a2565b346104f15760003660031901126104f157602060405160128152f35b346104f15760003660031901126104f1576020610b8d613540565b604051908152f35b6064359081151582036104f157565b6024359081151582036104f157565b60a4359081151582036104f157565b6004359081151582036104f157565b359081151582036104f157565b908152602081019190915260400190565b346104f15760a03660031901126104f157600435610c0c816104e5565b610c14610b95565b90608435906001600160401b0382116104f157610c3a6106226040933690600401610503565b90610c71610c54610c4c604435614e7b565b602435614f4a565b928451958694859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108dc576000908192610cc0575b506107be60405192839283610bde565b9050610ce3915060403d8111610cea575b610cdb8183610f0f565b81019061477d565b9038610cb0565b503d610cd1565b346104f15760403660031901126104f157600435610d0e816108e5565b336000526009602052610d2581604060002061210e565b546024358101809111610d3c576109389133613171565b612fb0565b9060406003198301126104f157600435610d5a816104e5565b91602435906001600160401b0382116104f15761059191600401610503565b346104f157602061ffff610dc6610d8f36610d41565b9390911660005260018452610db1610db86040600020604051928380926112eb565b0382610f0f565b848151910120923691610f4d565b82815191012014604051908152f35b346104f15760203660031901126104f15761ffff600435610df5816104e5565b1660005260036020526020604060002054604051908152f35b346104f157610e1c36610d41565b9190610e26612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104f157604051928380926342d65a8d60e01b825281610e7d600098899788946004850161404d565b03925af180156108dc576108d0575080f35b346104f15760003660031901126104f157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610ed457604052565b610eab565b60c081019081106001600160401b03821117610ed457604052565b604081019081106001600160401b03821117610ed457604052565b601f909101601f19168101906001600160401b03821190821017610ed457604052565b6001600160401b038111610ed457601f01601f191660200190565b929192610f5982610f32565b91610f676040519384610f0f565b8294818452818301116104f1578281602093846000960137010152565b60606003198201126104f157600435610f9c816104e5565b916001600160401b0391602435908382116104f157806023830112156104f157816024610fce93600401359101610f4d565b9160443590811681036104f15790565b602090610ff892826040519483868095519384920161070a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346104f157602061106661ffff6110588361103536610f84565b94909116600052600582526040600020826040519483868095519384920161070a565b820190815203019020611004565b54604051908152f35b346104f15760003660031901126104f157602060ff601154166040519015158152f35b346104f1576110a036610530565b91929493903033036110c4576106296110be92610019973691610f4d565b92614261565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104f15760c490565b60609060a31901126104f15760a490565b908160609103126104f15790565b60a03660031901126104f157600435611160816108e5565b60243561116c816104e5565b604435916084356001600160401b0381116104f157602061ffff6111a360008051602061557d83398151915293369060040161113a565b9361121685356111b2816108e5565b6111d061062286890135986111c68a6108e5565b604081019061457a565b6111da818a614d7d565b6111ef6111e8606435614f13565b508561511b565b976111fb8915156147d7565b61120d6112078a614e7b565b8c614f4a565b9234938b614877565b6040519485526001600160a01b0316941692a4005b346104f15760203660031901126104f157600435611248816108e5565b60018060a01b031660005260086020526020604060002054604051908152f35b346104f15760008060031936011261084357611282612f58565b80546001600160a01b03198116825581906001600160a01b03166000805160206155dd8339815191528280a380f35b90600182811c921680156112e1575b60208310146112cb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916112c0565b90600092918054916112fc836112b1565b91828252600193848116908160001461135e575060011461131e575b50505050565b90919394506000526020928360002092846000945b83861061134a575050505001019038808080611318565b805485870183015294019385908201611333565b9294505050602093945060ff191683830152151560051b01019038808080611318565b9061050161139592604051938480926112eb565b0383610f0f565b346104f15760203660031901126104f15761ffff6004356113bc816104e5565b1660005260016020526107be610db16113df6040600020604051928380926112eb565b60405191829160208352602083019061072d565b60e03660031901126104f15760043561140b816108e5565b602435611417816104e5565b604435916001600160401b03906084358281116104f15761143c903690600401610503565b91909260a43591818316918284036104f15760c4359081116104f15761146690369060040161113a565b9261149d843595611476876108e5565b61149561148b6020880135976111c6896108e5565b9990923691610f4d565b973691610f4d565b9460ff6006541660001461158f57602286511061154b578560209561120d611216946115198c61150661ffff9a8b602260008051602061557d8339815191529f0151931660005260028d5261150060406000206001600052602052604060002090565b54612fe2565b90611512821515614dd2565b1015614e1b565b61152e611527606435614f13565b508861511b565b9a61153a8c15156147d7565b8d6115448d614e7b565b9033614fd8565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516115bc5760008051602061557d8339815191529460209461ffff9461120d61121694611519565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60031961010036820181136104f1576024359161162c836108e5565b604435926001600160401b038085116104f15760e0856004019386360301126104f1576064359081116104f15761166790369060040161113a565b9160803660831901126104f157610019946117949361176961175e60c461175761177a966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356116d1816104e5565b166101448a01526116f560448801356116e9816104e5565b61ffff166101648b0152565b61170f61170460648901610903565b6101848b019061188f565b6117436117388a6101a460e061172860848d0187613732565b92909301526102048d0191613711565b9160a4890190613732565b8a830361012319016101c48c015290613711565b9401610903565b6101e486019061188f565b838203602319016084850152613b60565b61178660a48301613b94565b03601f198101835282610f0f565b613e53565b346104f15760203660031901126104f1576004356117b6816108e5565b60018060a01b031660005260156020526020604060002054604051908152f35b346104f15760003660031901126104f157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104f15760003660031901126104f1576019546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f157602061106660043561185f816104e5565b61ffff6024359161186f836104e5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b346104f15760003660031901126104f1576000546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576004356118e2816108e5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d7602061190d610ba4565b92611916612f58565b61191e613e7d565b600052601082526119488461193783604060002061210e565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104f15760003660031901126104f1576020601254604051908152f35b346104f15760003660031901126104f1576004546040516001600160a01b039091168152602090f35b9181601f840112156104f1578235916001600160401b0383116104f1576020808501946101a085020101116104f157565b60a03660031901126104f1576004356119ed816104e5565b6001600160401b03906024358281116104f157611a0e903690600401610503565b90916064358481116104f157611a2890369060040161113a565b936084359081116104f1576100199461ffff94611af394611ae4611a83611a566117869636906004016119a4565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613711565b60443560648801526060611ad460231996878a85030160848b01528035611aa9816108e5565b6001600160a01b0390811685526020820135611ac4816108e5565b1660208501526040810190613732565b9190928160408201520191613711565b928584030160a4860152613764565b613d7e565b346104f1576000806003193601126108435760405181600c54611b1a816112b1565b8084529060019081811690811561081b5750600114611b43576107be846107b281880382610f0f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b8957505050816107be936107b292820101936107a2565b8054858501870152928501928101611b6d565b346104f157602060ff611bdb61ffff61105884611bb836610f84565b94909116600052600782526040600020826040519483868095519384920161070a565b54166040519015158152f35b346104f15760003660031901126104f1576020601354604051908152f35b346104f15760203660031901126104f15761ffff600435611c25816104e5565b166000526001602052610db1611c456040600020604051928380926112eb565b805115611c63576107b281611c5d6107be93516140bc565b90615335565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104f15760403660031901126104f157600435611cc5816108e5565b60243590336000526009602052611ce081604060002061210e565b5491808310611d0157611cf592039033613171565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104f15760e03660031901126104f157600435611d71816104e5565b6001600160401b03906064358281116104f157611d92903690600401610503565b60849291923584811681036104f157611da9610bb3565b9160c4359586116104f157611dc5611dd5963690600401610503565b95909460443590602435906145ac565b906107be60405192839283610bde565b346104f157611df336610d41565b90611dfc612f58565b60405192602092808385870137611e286034868381013060601b88820152036014810188520186610f0f565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610ed457611e6583611e5f86546112b1565b86614068565b80601f8411600114611ec3575091808092611eb29695948a9b60008051602061559d8339815191529b94611eb8575b50501b916000199060031b1c19161790555b6040519384938461404d565b0390a180f35b015192503880611e94565b91939498601f198416611edb87600052602060002090565b938a905b828210611f305750509160008051602061559d833981519152999a95939185611eb298969410611f17575b505050811b019055611ea6565b015160001960f88460031b161c19169055388080611f0a565b808886978294978701518155019601940190611edf565b346104f15760403660031901126104f157610938600435611f67816108e5565b60243590336130a2565b6101e09060831901126104f157608490565b908160a09103126104f15790565b6102c03660031901126104f157600435611faa816108e5565b602435611fb6816108e5565b60443591611fc3836104e5565b611fcb6108f6565b92611fd536611f71565b6001600160401b0394610264358681116104f157611ff79036906004016119a4565b929091610284358881116104f157612013903690600401611f83565b946102a4359889116104f157612030610019993690600401610503565b989097613c5c565b346104f15760403660031901126104f157602435612055816108e5565b61205d612f58565b60008080808094600435905af16120726136a0565b501561207b5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346104f15760403660031901126104f157602060ff611bdb602435612149816108e5565b600435600052600f8452604060002061210e565b346104f15760203660031901126104f1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561219d816108e5565b6121a5612f58565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104f157600490565b60c0906101231901126104f15761012490565b610220806003193601126104f157612208366121cd565b61221136611118565b9161221b366121de565b906001600160401b03906101e4358281116104f15761223e9036906004016119a4565b90916102049384359081116104f15761225b903690600401610503565b94909560405198899863602b546f60e11b60208b0152803561227c816108e5565b6001600160a01b0390811660248c015280602083013561229b816108e5565b1660448c0152604082013560648c0152606082013560848c015260808201356122c3816108e5565b1660a48b015260a0013560c48a015260e489016122df91613884565b61014488016122ed916138bc565b8601526102448501906122ff92613764565b906023198483030161022485015261231692613711565b03601f19810182526123289082610f0f565b61001990613d7e565b346104f15760003660031901126104f15760206040516127108152f35b346104f15760803660031901126104f15760043561236b816104e5565b602435612377816104e5565b6064356001600160401b0381116104f157612396903690600401610503565b90926123a0612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104f15760008094612417604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613711565b03925af180156108dc5761242757005b8061243461001992610ec1565b806106ff565b346104f15760003660031901126104f157600e546040516001600160a01b039091168152602090f35b346104f15760003660031901126104f1576018546040516001600160a01b039091168152602090f35b61249536610530565b9161ffff869492961660005260056020526124c981604060002060206040518092878b833787820190815203019020611004565b549182156125785761256784836125607fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a600061254c846125478e8a8f6125739f908f61252d906125206125419436908d610f4d565b60208151910120146144ed565b61ffff166000526005602052604060002090565b916144d4565b611004565b5561255836878d610f4d565b933691610f4d565b9188614261565b60405195869586614543565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff821682036104f157565b359060ff821682036104f157565b346104f15760e03660031901126104f157600435612604816108e5565b602435612610816108e5565b60443590606435926126206125c9565b93804211612703576126eb6126fe916126c5610019976126d361265e8760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610f0f565b6126e660c4359360a4359351902061365a565b613366565b6001600160a01b0383811691161461331a565b613171565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104f15760003660031901126104f157600d546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576020611066600435612793816108e5565b602435906127a0826108e5565b6001600160a01b03166000908152600984526040902061210e565b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104f15760603660031901126104f15760043561281d816104e5565b602435612829816104e5565b60443591612835612f58565b82156128b0576125737f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff831660005260026020528061288a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104f15760003660031901126104f157602060405160018152f35b90816101c09103126104f15790565b6101403660031901126104f157600435612931816108e5565b60243561293d816108e5565b6044359161294a836104e5565b6129526108f6565b6001600160401b0393906084358581116104f157612974903690600401610503565b9061297e36611129565b92610104358881116104f157612998903690600401612909565b94610124359889116104f1576129b56100199936906004016119a4565b989097613a7e565b346104f15760203660031901126104f1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206129f9610bc2565b612a01612f58565b151560ff196006541660ff821617600655604051908152a1005b346104f1576101003660031901126104f157600435612a39816104e5565b6001600160401b03906024358281116104f157612a5a903690600401610503565b91906044359084821682036104f157608435612a75816108e5565b60c4359586116104f157612a90610019963690600401610503565b94909360e4359660a43594606435936146a3565b346104f157612ab236610d41565b9190612abc612f58565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610ed457612af887612af285546112b1565b85614068565b8590601f8811600114612b4d5750918680879893611eb29560008051602061561d8339815191529993612b42575b501b906000198460031b1c19161790556040519384938461404d565b880135925038612b26565b90601f198816612b6285600052602060002090565b9288905b828210612bb65750509188939160008051602061561d8339815191529899611eb2969410612b9c575b505082811b019055611ea6565b870135600019600386901b60f8161c191690553880612b8f565b808685968294968c01358155019501930190612b66565b346104f15760403660031901126104f157602060ff611bdb602435612bf1816108e5565b60043560005260108452604060002061210e565b346104f15760003660031901126104f157602060ff600654166040519015158152f35b346104f15760403660031901126104f157600435612c45816108e5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612c70610ba4565b92612c79612f58565b612c81613e7d565b600052600f82526119488461193783604060002061210e565b346104f15760203660031901126104f157600435612cb7816108e5565b612cbf612f58565b6001600160a01b039081168015612cfb57600080546001600160a01b03198116831782559092166000805160206155dd8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104f15760003660031901126104f1576017546040516001600160a01b039091168152602090f35b346104f15760803660031901126104f157600435612d95816104e5565b60243590612da2826104e5565b612dad6044356108e5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc576107be91600091612e2b575b5060405191829182610752565b612e46913d8091833e612e3e8183610f0f565b810190614017565b38612e1e565b346104f15760203660031901126104f157612e65610bc2565b612e7a60018060a01b03600e541633146136d0565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104f15760203660031901126104f157600435612ee2816108e5565b612eea612f58565b6001600160a01b0390811690612f018215156136d0565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b346104f15760003660031901126104f1576020604051308152f35b6000546001600160a01b03163303612f6c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d3c57565b6051019081605111610d3c57565b91908201809211610d3c57565b15612ff657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561304e57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561311e57613103826000805160206155fd833981519152946131199416966130dc881515612fef565b6130fd846130e9836120f4565b546130f682821015613047565b03916120f4565b556120f4565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156132395782169384156131e957806131d87f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946131d36131199560018060a01b03166000526009602052604060002090565b61210e565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b03821660005260096020526132aa81604060002061210e565b5492600184016132ba5750505050565b8084106132d5576132cc930391613171565b38808080611318565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561332157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107639391613375936134c8565b91909161339d565b6005111561338757565b634e487b7160e01b600052602160045260246000fd5b6133a68161337d565b806133ae5750565b6133b78161337d565b600181036134035760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b61340c8161337d565b600281036134595760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061346560039261337d565b1461346c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135345791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108dc5781516001600160a01b0381161561352e579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613631575b1561359b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261362b81610ed9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613572565b613662613540565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610ed45760405251902090565b3d156136cb573d906136b182610f32565b916136bf6040519384610f0f565b82523d6000602084013e565b606090565b156136d757565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156104f1570160208101919035906001600160401b0382116104f15781360383136104f157565b9190808252602080920192916000905b828210613782575050505090565b909192938061379c60019261379688610bd1565b15159052565b6137b26137aa848801610bd1565b151582850152565b6137ca60406137c2818901610bd1565b151590830152565b6137e460606137da8189016104f6565b61ffff1690830152565b6137fd60806137f4818901610903565b9083019061188f565b61380d60a06137c2818901610bd1565b61381d60c06137f4818901610903565b61382d60e06137f4818901610903565b6101008087013590820152610120808701359082015261385d6101406138548189016125d9565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613774565b6040809161ffff8135613896816104e5565b16845260208101356138a7816108e5565b6001600160a01b031660208501520135910152565b60a080916138c981610bd1565b1515845260208101356138db816108e5565b600180841b03809116602086015261ffff60408301356138fa816104e5565b166040860152606082013560608601526080820135613918816108e5565b1660808501520135910152565b6040809161393281610bd1565b1515845260208101356138a7816108e5565b9035609e19823603018112156104f1570190565b9060a06139ad6107639361396b81610bd1565b151584526020810135602085015261398560408201610bd1565b1515604085015261ffff606082013561399d816104e5565b1660608501526080810190613732565b9190928160808201520191613711565b90610763916139cf8261379683610bd1565b602081013560208301526139f16139e860408301610bd1565b15156040840152565b60608101356060830152613a13613a0a60808301610bd1565b15156080840152565b60a081013560a0830152613a2d60c0830160c08301613925565b613a3e610120808401908301613925565b613a61610180613a5081840184613944565b906101c08091860152840190613958565b91613a726101a09283810190613944565b91818403910152613958565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613ad991610164890191613711565b93818135613ae6816108e5565b1660c4880152816020820135613afb816108e5565b1660e488015260400135613b0e816108e5565b16610104860152602319928386820301610124870152613b2d916139bd565b9184830301610144850152613b4192613764565b03601f1981018252613b539082610f0f565b613b5c90613e29565b5050565b906060611ad4610763938035613b75816108e5565b6001600160a01b03168452602081810135908501526040810190613732565b6060608435613ba2816108e5565b6001600160a01b0390811683528060a435613bbc816108e5565b1660208401528060c435613bcf816108e5565b16604084015260e435613be1816108e5565b16910152565b35906001600160801b03821682036104f157565b60808091613c0881610bd1565b151584526020810135613c1a816108e5565b6001600160a01b031660208501526000196001831b0180613c3d60408401613be7565b166040860152613c4f60608301613be7565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613cab82610bd1565b151560a4890152602082013560c4890152604082013560e48901526060820135613cd4816108e5565b16610104880152613ce760808201610903565b6101248801613cf59161188f565b613d0160a08201610bd1565b151561014488015260c0810135610164880152613d25610184880160e08301613bfb565b613d389061022488019061018001613925565b61028486016102c090526102e4860190613d5192613764565b916023199283868203016102a4870152613d6a91613958565b91848303016102c4850152613b4192613711565b6019546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b90821580613de3575b613db757565b6133ff613dc383613f44565b60405162461bcd60e51b815260206004820152918291602483019061072d565b506001613db1565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6017546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc57600090613ed3575b61ffff91501690565b6020823d8211613f07575b81613eeb60209383610f0f565b81010312610843575061ffff9051613f02816104e5565b613eca565b3d9150613ede565b90929192613f1c81610f32565b91613f2a6040519384610f0f565b8294828452828201116104f157602061050193019061070a565b6044815110613f95576004810151810190602081602484019303126104f1576024810151906001600160401b0382116104f1570190806043830112156104f157602482015161076392604401613f0f565b50604051613fa281610ef4565b600a8152695553444f3a206461746160b01b602082015290565b15613fc357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104f1578051906001600160401b0382116104f157019080601f830112156104f157815161076392602001613f0f565b60409061ffff61076395931681528160208201520191613711565b90601f811161407657505050565b600091825260208220906020601f850160051c830194106140b2575b601f0160051c01915b8281106140a757505050565b81815560010161409b565b9092508290614092565b601319810191908211610d3c57565b605019810191908211610d3c57565b92909161413e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614138826126c561411760a483018a61072d565b6001600160401b03881660648401528281036023190160848401528861072d565b30615531565b93901561414d575b5050505050565b61415694614160565b3880808080614146565b91936141fe7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561420c939561ffff815160208301209616958660005260056020526141c48361105860208b6040600020826040519483868095519384920161070a565b556141e1604051978897885260a0602089015260a088019061072d565b6001600160401b039092166040870152858203606087015261072d565b90838203608085015261072d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a06040820181905261076394926142439183019061072d565b6001600160401b03909316606082015280830360809091015261072d565b92919061426d836154e4565b61030681036142b55750601854610501949081906142b0906001600160a01b031661178687878760405196879563100b652360e01b602088015260248701614211565b614476565b61030781036142fd5750601754610501949081906142f8906001600160a01b0316611786878787604051968795634dd8df6360e11b602088015260248701614211565b6144a5565b610305810361432d575060405163163b7bd360e21b602082015261050194906142b0816117868760248301610752565b6103098103614375575060195461050194908190614370906001600160a01b03166117868787876040519687956381618d0560e01b602088015260248701614211565b61441b565b61030a036143a35760405163af2ee97560e01b60208201526105019490614370816117868760248301610752565b6143b56143af84615489565b60ff1690565b806143c657505050610501916149ec565b6001036143d65761050193614bc4565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b9315808061446e575b6144625761414d575050505050565b6133ff613dc386613f44565b506000614453565b60185491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b60175491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b6020919283604051948593843782019081520301902090565b156144f457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6145669398979698168452608060208501526080840191613711565b6001600160401b0390951660408201520152565b903590601e19813603018212156104f157018035906001600160401b0382116104f1576020019181360383136104f157565b9491959897906115446145d56040996145cd6145db976145f8993691610f4d565b943691610f4d565b97614e7b565b928451968794859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108dc57600090819361463b57509190565b905061059191925060403d8111610cea57610cdb8183610f0f565b9396949161076398969361ffff61467b9316865260c0602087015260c0860191613711565b6001600160401b0390961660408401526060830152608082015280840360a090910152613711565b91969792989594939094303303614738576146bf908530615281565b60405181815290946001600160a01b03169390849061ffff8516906000805160206155bd83398151915290602090a3833b156104f157600098899561471b936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614656565b0393f180156108dc5761472b5750565b8061243461050192610ec1565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104f1576020825192015190565b9192610763959361ffff6147c29316845260018060a01b0316602084015260a0604084015260a083019061072d565b9215156060820152608081840391015261072d565b156147de57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261484461076397959361ffff6148529416865260c0602087015260c086019061072d565b90848203604086015261072d565b6001600160a01b0391821660608401529316608082015280830360a09091015261072d565b946148a09193929561ffff811660005260016020526148a76040600020604051948580926112eb565b0384610f0f565b82511561491f576148b985518261497d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104f15760009661490e91604051998a988997889662c5803160e81b88526004880161481f565b03925af180156108dc5761472b5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156149e2575b1161499e57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614997565b9060ff6149f882615489565b161580614b2c575b614a0990614f91565b614a1b614a1582615439565b916154d4565b90916001600160a01b039182841615614b22575b614a63907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316614f00565b918316928315614add576000805160206155bd83398151915291614a9d61ffff92614a98614a9387600a54612fe2565b600a55565b6120f4565b8481540190558460006000805160206155fd83398151915260405180614ac889829190602083019252565b0390a360405193845216918060208101613119565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614a2f565b508051602914614a00565b9897969293614b6160e0979361ffff614b969894168c5260208c61010091829101528c019061072d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261072d565b930152565b614bb36040929594939560608352606083019061072d565b94600180841b031660208201520152565b9091614bcf84615042565b9091614c00614bf987612547614bf38b61ffff166000526007602052604060002090565b8c610fde565b5460ff1690565b916001600160401b0391614c37907f0000000000000000000000000000000000000000000000000000000000000000908416614f00565b9288888b8315614d33575b505050853b15614ce85794614c899694614138948a946126c5948d99600014614ce15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614b37565b9015614cd6575090614cd161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614b9b565b0390a2565b926105019492614160565b1692614c6a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061420c915050565b90612547614d6892614d6289614d4d614d75979b30615231565b9961ffff166000526007602052604060002090565b90610fde565b805460ff19166001179055565b88888b614c42565b60065460ff1615614dca57602282511061154b5761ffff602261050193015191166000526002602052614dbd604060002060008052602052604060002090565b5490611512821515614dd2565b50516115bc57565b15614dd957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614e2257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614efb576001600160401b03919004818111614eb9571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b614e65565b81810292918115918404141715610d3c57565b7f00000000000000000000000000000000000000000000000000000000000000008015614efb57810690818103908111610d3c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610ed45760405290565b15614f9857565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261076394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615032815180926020868601910161070a565b8101036051810184520182610f0f565b9061505a600160ff61505385615489565b1614614f91565b61506382615439565b9061506d836154d4565b9060498451106150de5760498401519360518151106150a25761509f60518201519161509981516140cb565b906153b5565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036151ca575b801561517b5781615150846151436000956120f4565b546130f6828210156151da565b5561515e83600a5403600a55565b6040518381526000805160206155fd83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6151d583338461328a565b61512d565b156151e157565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614add57600a5490828201809211610d3c576000926152726020926000805160206155fd83398151915294600a556120f4565b818154019055604051908152a3565b6107639183916001600160a01b0381163081141590816152ad575b50156130a257610b5183338361328a565b90503314153861529c565b156152bf57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156152fc57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6153498261534281612fc6565b10156152b8565b61535682825110156152f5565b8161536e575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106153a25750508252601f01601f191660405290565b909283518152602080910193019061538a565b6153c28261534281612fc6565b6153d781516153d084612fd4565b11156152f5565b816153ef575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106154265750508252601f01601f191660405290565b909283518152602080910193019061540e565b602181511061544c57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615499576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106150a2576029015190565b60208151106154f4576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b909291600080916040519561554587610ed9565b6096875282602088019560a036883760208451940192f1903d9060968211615573575b6000908286523e9190565b6096915061556856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220c969d7aac155ffc8c6e18a36772869ddbad6e66ffec16b28b8dcf0b4f1caf17a64736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104e057806301ffc9a7146104db57806306fdde03146104d657806307e0db17146104d1578063095ea7b3146104cc5780630df37483146104c757806310ddb137146104c257806316d995a9146104bd57806318160ddd1461043b5780631d2a0e3d146104b857806323b872dd146104b3578063313ce567146104ae5780633644e515146104a9578063365260b4146104a4578063395093511461049f5780633d8b38f61461049a5780633f1f4fa41461049557806342d65a8d14610490578063447705151461048b5780634c42899a1461048b5780635b8c41e6146104865780635c975abb1461048157806366ad5c8a1461047c578063695ef6bf1461047757806370a0823114610472578063715018a61461046d5780637533d7881461046857806376203b4814610463578063796fd43a1461045e5780637ecebe0014610459578063857749b01461045457806389dd56021461044f5780638cfd8f5c1461044a5780638da5cb5b146104455780639169d59e146104405780639358928b1461043b578063940a1dc014610436578063950c8a7414610431578063952168c51461042c57806395d89b41146104275780639bdb9812146104225780639d3f4d1a1461041d5780639f38369a14610418578063a457c2d714610413578063a4c51df51461040e578063a6c3d16514610409578063a9059cbb14610404578063b02f69a2146103ff578063b25ea8fb146103fa578063b353aaa7146103f5578063ba03a8d7146103f0578063baf3292d146103eb578063c056a8de146103e6578063c4461834146103e1578063cbed8b9c146103dc578063ce8849ed146103d7578063cfd8b3d8146103d2578063d1deba1f146103cd578063d505accf146103c8578063dbd01de1146103c3578063dd62ed3e146103be578063de406577146103b9578063df2a5b3b146103b4578063e6a20ae6146103af578063e78eb946146103aa578063eab45d9c146103a5578063eaffd49a146103a0578063eb8d72b71461039b578063ec6d062b14610396578063ed629c5c14610391578063f00c298d1461038c578063f2fde38b14610387578063f5b33dfa14610382578063f5ecbdbc1461037d578063f8974de014610378578063fa74f0b5146103735763fc0c546a0361000e57612f3d565b612ec5565b612e4c565b612d78565b612d4f565b612c9a565b612c28565b612c05565b612bcd565b612aa4565b612a1b565b6129bd565b612918565b6128ed565b612800565b6127bb565b612771565b612748565b6125e7565b61248c565b612463565b61243a565b61234e565b612331565b6121f1565b61215d565b612125565b6120af565b612038565b611f91565b611f47565b611de5565b611d54565b611ca8565b611c05565b611be7565b611b9c565b611af8565b6119d5565b61197b565b61195d565b610a64565b6118c5565b61189c565b61183d565b611814565b6117d6565b611799565b611610565b6113f3565b61139c565b611268565b61122b565b611148565b611092565b61106f565b61101b565b610e8f565b610e0e565b610dd5565b610d79565b610cf1565b610bef565b610b72565b610b56565b610b16565b610a82565b610a0c565b610982565b610943565b61090e565b610846565b610766565b6106a9565b610595565b61ffff8116036104f157565b600080fd5b3590610501826104e5565b565b9181601f840112156104f1578235916001600160401b0383116104f157602083818601950101116104f157565b9060806003198301126104f157600435610549816104e5565b916001600160401b03906024358281116104f1578161056a91600401610503565b9390939260443581811681036104f157926064359182116104f15761059191600401610503565b9091565b346104f1576105a336610530565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106645761062961063192610019976106226106086106038a61ffff166000526001602052604060002090565b611381565b805190818414918261065a575b5081610637575b50613fbc565b3691610f4d565b923691610f4d565b926140da565b9050610644368486610f4d565b602081519101209060208151910120143861061c565b1515915038610615565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104f15760203660031901126104f15760043563ffffffff60e01b81168091036104f157602090631f7ecdf760e01b81149081156106ee575b506040519015158152f35b6301ffc9a760e01b149050386106e3565b60009103126104f157565b60005b83811061071d5750506000910152565b818101518382015260200161070d565b906020916107468151809281855285808601910161070a565b601f01601f1916010190565b90602061076392818152019061072d565b90565b346104f1576000806003193601126108435760405181600b54610788816112b1565b8084529060019081811690811561081b57506001146107c2575b6107be846107b281880382610f0f565b60405191829182610752565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061080857505050816107be936107b292820101936107a2565b80548585018701529285019281016107ec565b6107be96506107b29450602092508593915060ff191682840152151560051b820101936107a2565b80fd5b346104f1576000602036600319011261084357600435610865816104e5565b61086d612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108dc576108d0575080f35b6108d990610ec1565b80f35b6134bc565b5080fd5b6001600160a01b038116036104f157565b60643590610501826108e5565b3590610501826108e5565b346104f15760403660031901126104f15761093860043561092e816108e5565b6024359033613171565b602060405160018152f35b346104f15760403660031901126104f15761ffff600435610963816104e5565b61096b612f58565b166000526003602052602435604060002055600080f35b346104f15760006020366003190112610843576004356109a1816104e5565b6109a9612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108dc576108d0575080f35b346104f15760203660031901126104f157600435610a28612f58565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610a5c60405192839283610bde565b0390a1601355005b346104f15760003660031901126104f1576020600a54604051908152f35b346104f15760203660031901126104f157600435610a9e612f58565b620f4240811015610ae5577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610add60405192839283610bde565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b346104f15760603660031901126104f157610938600435610b36816108e5565b602435610b42816108e5565b60443591610b5183338361328a565b6130a2565b346104f15760003660031901126104f157602060405160128152f35b346104f15760003660031901126104f1576020610b8d613540565b604051908152f35b6064359081151582036104f157565b6024359081151582036104f157565b60a4359081151582036104f157565b6004359081151582036104f157565b359081151582036104f157565b908152602081019190915260400190565b346104f15760a03660031901126104f157600435610c0c816104e5565b610c14610b95565b90608435906001600160401b0382116104f157610c3a6106226040933690600401610503565b90610c71610c54610c4c604435614e7b565b602435614f4a565b928451958694859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108dc576000908192610cc0575b506107be60405192839283610bde565b9050610ce3915060403d8111610cea575b610cdb8183610f0f565b81019061477d565b9038610cb0565b503d610cd1565b346104f15760403660031901126104f157600435610d0e816108e5565b336000526009602052610d2581604060002061210e565b546024358101809111610d3c576109389133613171565b612fb0565b9060406003198301126104f157600435610d5a816104e5565b91602435906001600160401b0382116104f15761059191600401610503565b346104f157602061ffff610dc6610d8f36610d41565b9390911660005260018452610db1610db86040600020604051928380926112eb565b0382610f0f565b848151910120923691610f4d565b82815191012014604051908152f35b346104f15760203660031901126104f15761ffff600435610df5816104e5565b1660005260036020526020604060002054604051908152f35b346104f157610e1c36610d41565b9190610e26612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104f157604051928380926342d65a8d60e01b825281610e7d600098899788946004850161404d565b03925af180156108dc576108d0575080f35b346104f15760003660031901126104f157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610ed457604052565b610eab565b60c081019081106001600160401b03821117610ed457604052565b604081019081106001600160401b03821117610ed457604052565b601f909101601f19168101906001600160401b03821190821017610ed457604052565b6001600160401b038111610ed457601f01601f191660200190565b929192610f5982610f32565b91610f676040519384610f0f565b8294818452818301116104f1578281602093846000960137010152565b60606003198201126104f157600435610f9c816104e5565b916001600160401b0391602435908382116104f157806023830112156104f157816024610fce93600401359101610f4d565b9160443590811681036104f15790565b602090610ff892826040519483868095519384920161070a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346104f157602061106661ffff6110588361103536610f84565b94909116600052600582526040600020826040519483868095519384920161070a565b820190815203019020611004565b54604051908152f35b346104f15760003660031901126104f157602060ff601154166040519015158152f35b346104f1576110a036610530565b91929493903033036110c4576106296110be92610019973691610f4d565b92614261565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104f15760c490565b60609060a31901126104f15760a490565b908160609103126104f15790565b60a03660031901126104f157600435611160816108e5565b60243561116c816104e5565b604435916084356001600160401b0381116104f157602061ffff6111a360008051602061557d83398151915293369060040161113a565b9361121685356111b2816108e5565b6111d061062286890135986111c68a6108e5565b604081019061457a565b6111da818a614d7d565b6111ef6111e8606435614f13565b508561511b565b976111fb8915156147d7565b61120d6112078a614e7b565b8c614f4a565b9234938b614877565b6040519485526001600160a01b0316941692a4005b346104f15760203660031901126104f157600435611248816108e5565b60018060a01b031660005260086020526020604060002054604051908152f35b346104f15760008060031936011261084357611282612f58565b80546001600160a01b03198116825581906001600160a01b03166000805160206155dd8339815191528280a380f35b90600182811c921680156112e1575b60208310146112cb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916112c0565b90600092918054916112fc836112b1565b91828252600193848116908160001461135e575060011461131e575b50505050565b90919394506000526020928360002092846000945b83861061134a575050505001019038808080611318565b805485870183015294019385908201611333565b9294505050602093945060ff191683830152151560051b01019038808080611318565b9061050161139592604051938480926112eb565b0383610f0f565b346104f15760203660031901126104f15761ffff6004356113bc816104e5565b1660005260016020526107be610db16113df6040600020604051928380926112eb565b60405191829160208352602083019061072d565b60e03660031901126104f15760043561140b816108e5565b602435611417816104e5565b604435916001600160401b03906084358281116104f15761143c903690600401610503565b91909260a43591818316918284036104f15760c4359081116104f15761146690369060040161113a565b9261149d843595611476876108e5565b61149561148b6020880135976111c6896108e5565b9990923691610f4d565b973691610f4d565b9460ff6006541660001461158f57602286511061154b578560209561120d611216946115198c61150661ffff9a8b602260008051602061557d8339815191529f0151931660005260028d5261150060406000206001600052602052604060002090565b54612fe2565b90611512821515614dd2565b1015614e1b565b61152e611527606435614f13565b508861511b565b9a61153a8c15156147d7565b8d6115448d614e7b565b9033614fd8565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516115bc5760008051602061557d8339815191529460209461ffff9461120d61121694611519565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60031961010036820181136104f1576024359161162c836108e5565b604435926001600160401b038085116104f15760e0856004019386360301126104f1576064359081116104f15761166790369060040161113a565b9160803660831901126104f157610019946117949361176961175e60c461175761177a966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356116d1816104e5565b166101448a01526116f560448801356116e9816104e5565b61ffff166101648b0152565b61170f61170460648901610903565b6101848b019061188f565b6117436117388a6101a460e061172860848d0187613732565b92909301526102048d0191613711565b9160a4890190613732565b8a830361012319016101c48c015290613711565b9401610903565b6101e486019061188f565b838203602319016084850152613b60565b61178660a48301613b94565b03601f198101835282610f0f565b613e53565b346104f15760203660031901126104f1576004356117b6816108e5565b60018060a01b031660005260156020526020604060002054604051908152f35b346104f15760003660031901126104f157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104f15760003660031901126104f1576019546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f157602061106660043561185f816104e5565b61ffff6024359161186f836104e5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b346104f15760003660031901126104f1576000546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576004356118e2816108e5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d7602061190d610ba4565b92611916612f58565b61191e613e7d565b600052601082526119488461193783604060002061210e565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104f15760003660031901126104f1576020601254604051908152f35b346104f15760003660031901126104f1576004546040516001600160a01b039091168152602090f35b9181601f840112156104f1578235916001600160401b0383116104f1576020808501946101a085020101116104f157565b60a03660031901126104f1576004356119ed816104e5565b6001600160401b03906024358281116104f157611a0e903690600401610503565b90916064358481116104f157611a2890369060040161113a565b936084359081116104f1576100199461ffff94611af394611ae4611a83611a566117869636906004016119a4565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613711565b60443560648801526060611ad460231996878a85030160848b01528035611aa9816108e5565b6001600160a01b0390811685526020820135611ac4816108e5565b1660208501526040810190613732565b9190928160408201520191613711565b928584030160a4860152613764565b613d7e565b346104f1576000806003193601126108435760405181600c54611b1a816112b1565b8084529060019081811690811561081b5750600114611b43576107be846107b281880382610f0f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b8957505050816107be936107b292820101936107a2565b8054858501870152928501928101611b6d565b346104f157602060ff611bdb61ffff61105884611bb836610f84565b94909116600052600782526040600020826040519483868095519384920161070a565b54166040519015158152f35b346104f15760003660031901126104f1576020601354604051908152f35b346104f15760203660031901126104f15761ffff600435611c25816104e5565b166000526001602052610db1611c456040600020604051928380926112eb565b805115611c63576107b281611c5d6107be93516140bc565b90615335565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104f15760403660031901126104f157600435611cc5816108e5565b60243590336000526009602052611ce081604060002061210e565b5491808310611d0157611cf592039033613171565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104f15760e03660031901126104f157600435611d71816104e5565b6001600160401b03906064358281116104f157611d92903690600401610503565b60849291923584811681036104f157611da9610bb3565b9160c4359586116104f157611dc5611dd5963690600401610503565b95909460443590602435906145ac565b906107be60405192839283610bde565b346104f157611df336610d41565b90611dfc612f58565b60405192602092808385870137611e286034868381013060601b88820152036014810188520186610f0f565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610ed457611e6583611e5f86546112b1565b86614068565b80601f8411600114611ec3575091808092611eb29695948a9b60008051602061559d8339815191529b94611eb8575b50501b916000199060031b1c19161790555b6040519384938461404d565b0390a180f35b015192503880611e94565b91939498601f198416611edb87600052602060002090565b938a905b828210611f305750509160008051602061559d833981519152999a95939185611eb298969410611f17575b505050811b019055611ea6565b015160001960f88460031b161c19169055388080611f0a565b808886978294978701518155019601940190611edf565b346104f15760403660031901126104f157610938600435611f67816108e5565b60243590336130a2565b6101e09060831901126104f157608490565b908160a09103126104f15790565b6102c03660031901126104f157600435611faa816108e5565b602435611fb6816108e5565b60443591611fc3836104e5565b611fcb6108f6565b92611fd536611f71565b6001600160401b0394610264358681116104f157611ff79036906004016119a4565b929091610284358881116104f157612013903690600401611f83565b946102a4359889116104f157612030610019993690600401610503565b989097613c5c565b346104f15760403660031901126104f157602435612055816108e5565b61205d612f58565b60008080808094600435905af16120726136a0565b501561207b5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346104f15760403660031901126104f157602060ff611bdb602435612149816108e5565b600435600052600f8452604060002061210e565b346104f15760203660031901126104f1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561219d816108e5565b6121a5612f58565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104f157600490565b60c0906101231901126104f15761012490565b610220806003193601126104f157612208366121cd565b61221136611118565b9161221b366121de565b906001600160401b03906101e4358281116104f15761223e9036906004016119a4565b90916102049384359081116104f15761225b903690600401610503565b94909560405198899863602b546f60e11b60208b0152803561227c816108e5565b6001600160a01b0390811660248c015280602083013561229b816108e5565b1660448c0152604082013560648c0152606082013560848c015260808201356122c3816108e5565b1660a48b015260a0013560c48a015260e489016122df91613884565b61014488016122ed916138bc565b8601526102448501906122ff92613764565b906023198483030161022485015261231692613711565b03601f19810182526123289082610f0f565b61001990613d7e565b346104f15760003660031901126104f15760206040516127108152f35b346104f15760803660031901126104f15760043561236b816104e5565b602435612377816104e5565b6064356001600160401b0381116104f157612396903690600401610503565b90926123a0612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104f15760008094612417604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613711565b03925af180156108dc5761242757005b8061243461001992610ec1565b806106ff565b346104f15760003660031901126104f157600e546040516001600160a01b039091168152602090f35b346104f15760003660031901126104f1576018546040516001600160a01b039091168152602090f35b61249536610530565b9161ffff869492961660005260056020526124c981604060002060206040518092878b833787820190815203019020611004565b549182156125785761256784836125607fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a600061254c846125478e8a8f6125739f908f61252d906125206125419436908d610f4d565b60208151910120146144ed565b61ffff166000526005602052604060002090565b916144d4565b611004565b5561255836878d610f4d565b933691610f4d565b9188614261565b60405195869586614543565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff821682036104f157565b359060ff821682036104f157565b346104f15760e03660031901126104f157600435612604816108e5565b602435612610816108e5565b60443590606435926126206125c9565b93804211612703576126eb6126fe916126c5610019976126d361265e8760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610f0f565b6126e660c4359360a4359351902061365a565b613366565b6001600160a01b0383811691161461331a565b613171565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104f15760003660031901126104f157600d546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576020611066600435612793816108e5565b602435906127a0826108e5565b6001600160a01b03166000908152600984526040902061210e565b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104f15760603660031901126104f15760043561281d816104e5565b602435612829816104e5565b60443591612835612f58565b82156128b0576125737f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff831660005260026020528061288a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104f15760003660031901126104f157602060405160018152f35b90816101c09103126104f15790565b6101403660031901126104f157600435612931816108e5565b60243561293d816108e5565b6044359161294a836104e5565b6129526108f6565b6001600160401b0393906084358581116104f157612974903690600401610503565b9061297e36611129565b92610104358881116104f157612998903690600401612909565b94610124359889116104f1576129b56100199936906004016119a4565b989097613a7e565b346104f15760203660031901126104f1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206129f9610bc2565b612a01612f58565b151560ff196006541660ff821617600655604051908152a1005b346104f1576101003660031901126104f157600435612a39816104e5565b6001600160401b03906024358281116104f157612a5a903690600401610503565b91906044359084821682036104f157608435612a75816108e5565b60c4359586116104f157612a90610019963690600401610503565b94909360e4359660a43594606435936146a3565b346104f157612ab236610d41565b9190612abc612f58565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610ed457612af887612af285546112b1565b85614068565b8590601f8811600114612b4d5750918680879893611eb29560008051602061561d8339815191529993612b42575b501b906000198460031b1c19161790556040519384938461404d565b880135925038612b26565b90601f198816612b6285600052602060002090565b9288905b828210612bb65750509188939160008051602061561d8339815191529899611eb2969410612b9c575b505082811b019055611ea6565b870135600019600386901b60f8161c191690553880612b8f565b808685968294968c01358155019501930190612b66565b346104f15760403660031901126104f157602060ff611bdb602435612bf1816108e5565b60043560005260108452604060002061210e565b346104f15760003660031901126104f157602060ff600654166040519015158152f35b346104f15760403660031901126104f157600435612c45816108e5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612c70610ba4565b92612c79612f58565b612c81613e7d565b600052600f82526119488461193783604060002061210e565b346104f15760203660031901126104f157600435612cb7816108e5565b612cbf612f58565b6001600160a01b039081168015612cfb57600080546001600160a01b03198116831782559092166000805160206155dd8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104f15760003660031901126104f1576017546040516001600160a01b039091168152602090f35b346104f15760803660031901126104f157600435612d95816104e5565b60243590612da2826104e5565b612dad6044356108e5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc576107be91600091612e2b575b5060405191829182610752565b612e46913d8091833e612e3e8183610f0f565b810190614017565b38612e1e565b346104f15760203660031901126104f157612e65610bc2565b612e7a60018060a01b03600e541633146136d0565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104f15760203660031901126104f157600435612ee2816108e5565b612eea612f58565b6001600160a01b0390811690612f018215156136d0565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b346104f15760003660031901126104f1576020604051308152f35b6000546001600160a01b03163303612f6c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d3c57565b6051019081605111610d3c57565b91908201809211610d3c57565b15612ff657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561304e57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561311e57613103826000805160206155fd833981519152946131199416966130dc881515612fef565b6130fd846130e9836120f4565b546130f682821015613047565b03916120f4565b556120f4565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156132395782169384156131e957806131d87f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946131d36131199560018060a01b03166000526009602052604060002090565b61210e565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b03821660005260096020526132aa81604060002061210e565b5492600184016132ba5750505050565b8084106132d5576132cc930391613171565b38808080611318565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561332157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107639391613375936134c8565b91909161339d565b6005111561338757565b634e487b7160e01b600052602160045260246000fd5b6133a68161337d565b806133ae5750565b6133b78161337d565b600181036134035760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b61340c8161337d565b600281036134595760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061346560039261337d565b1461346c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135345791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108dc5781516001600160a01b0381161561352e579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613631575b1561359b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261362b81610ed9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613572565b613662613540565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610ed45760405251902090565b3d156136cb573d906136b182610f32565b916136bf6040519384610f0f565b82523d6000602084013e565b606090565b156136d757565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156104f1570160208101919035906001600160401b0382116104f15781360383136104f157565b9190808252602080920192916000905b828210613782575050505090565b909192938061379c60019261379688610bd1565b15159052565b6137b26137aa848801610bd1565b151582850152565b6137ca60406137c2818901610bd1565b151590830152565b6137e460606137da8189016104f6565b61ffff1690830152565b6137fd60806137f4818901610903565b9083019061188f565b61380d60a06137c2818901610bd1565b61381d60c06137f4818901610903565b61382d60e06137f4818901610903565b6101008087013590820152610120808701359082015261385d6101406138548189016125d9565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613774565b6040809161ffff8135613896816104e5565b16845260208101356138a7816108e5565b6001600160a01b031660208501520135910152565b60a080916138c981610bd1565b1515845260208101356138db816108e5565b600180841b03809116602086015261ffff60408301356138fa816104e5565b166040860152606082013560608601526080820135613918816108e5565b1660808501520135910152565b6040809161393281610bd1565b1515845260208101356138a7816108e5565b9035609e19823603018112156104f1570190565b9060a06139ad6107639361396b81610bd1565b151584526020810135602085015261398560408201610bd1565b1515604085015261ffff606082013561399d816104e5565b1660608501526080810190613732565b9190928160808201520191613711565b90610763916139cf8261379683610bd1565b602081013560208301526139f16139e860408301610bd1565b15156040840152565b60608101356060830152613a13613a0a60808301610bd1565b15156080840152565b60a081013560a0830152613a2d60c0830160c08301613925565b613a3e610120808401908301613925565b613a61610180613a5081840184613944565b906101c08091860152840190613958565b91613a726101a09283810190613944565b91818403910152613958565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613ad991610164890191613711565b93818135613ae6816108e5565b1660c4880152816020820135613afb816108e5565b1660e488015260400135613b0e816108e5565b16610104860152602319928386820301610124870152613b2d916139bd565b9184830301610144850152613b4192613764565b03601f1981018252613b539082610f0f565b613b5c90613e29565b5050565b906060611ad4610763938035613b75816108e5565b6001600160a01b03168452602081810135908501526040810190613732565b6060608435613ba2816108e5565b6001600160a01b0390811683528060a435613bbc816108e5565b1660208401528060c435613bcf816108e5565b16604084015260e435613be1816108e5565b16910152565b35906001600160801b03821682036104f157565b60808091613c0881610bd1565b151584526020810135613c1a816108e5565b6001600160a01b031660208501526000196001831b0180613c3d60408401613be7565b166040860152613c4f60608301613be7565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613cab82610bd1565b151560a4890152602082013560c4890152604082013560e48901526060820135613cd4816108e5565b16610104880152613ce760808201610903565b6101248801613cf59161188f565b613d0160a08201610bd1565b151561014488015260c0810135610164880152613d25610184880160e08301613bfb565b613d389061022488019061018001613925565b61028486016102c090526102e4860190613d5192613764565b916023199283868203016102a4870152613d6a91613958565b91848303016102c4850152613b4192613711565b6019546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b90821580613de3575b613db757565b6133ff613dc383613f44565b60405162461bcd60e51b815260206004820152918291602483019061072d565b506001613db1565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6017546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc57600090613ed3575b61ffff91501690565b6020823d8211613f07575b81613eeb60209383610f0f565b81010312610843575061ffff9051613f02816104e5565b613eca565b3d9150613ede565b90929192613f1c81610f32565b91613f2a6040519384610f0f565b8294828452828201116104f157602061050193019061070a565b6044815110613f95576004810151810190602081602484019303126104f1576024810151906001600160401b0382116104f1570190806043830112156104f157602482015161076392604401613f0f565b50604051613fa281610ef4565b600a8152695553444f3a206461746160b01b602082015290565b15613fc357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104f1578051906001600160401b0382116104f157019080601f830112156104f157815161076392602001613f0f565b60409061ffff61076395931681528160208201520191613711565b90601f811161407657505050565b600091825260208220906020601f850160051c830194106140b2575b601f0160051c01915b8281106140a757505050565b81815560010161409b565b9092508290614092565b601319810191908211610d3c57565b605019810191908211610d3c57565b92909161413e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614138826126c561411760a483018a61072d565b6001600160401b03881660648401528281036023190160848401528861072d565b30615531565b93901561414d575b5050505050565b61415694614160565b3880808080614146565b91936141fe7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561420c939561ffff815160208301209616958660005260056020526141c48361105860208b6040600020826040519483868095519384920161070a565b556141e1604051978897885260a0602089015260a088019061072d565b6001600160401b039092166040870152858203606087015261072d565b90838203608085015261072d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a06040820181905261076394926142439183019061072d565b6001600160401b03909316606082015280830360809091015261072d565b92919061426d836154e4565b61030681036142b55750601854610501949081906142b0906001600160a01b031661178687878760405196879563100b652360e01b602088015260248701614211565b614476565b61030781036142fd5750601754610501949081906142f8906001600160a01b0316611786878787604051968795634dd8df6360e11b602088015260248701614211565b6144a5565b610305810361432d575060405163163b7bd360e21b602082015261050194906142b0816117868760248301610752565b6103098103614375575060195461050194908190614370906001600160a01b03166117868787876040519687956381618d0560e01b602088015260248701614211565b61441b565b61030a036143a35760405163af2ee97560e01b60208201526105019490614370816117868760248301610752565b6143b56143af84615489565b60ff1690565b806143c657505050610501916149ec565b6001036143d65761050193614bc4565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b9315808061446e575b6144625761414d575050505050565b6133ff613dc386613f44565b506000614453565b60185491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b60175491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b6020919283604051948593843782019081520301902090565b156144f457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6145669398979698168452608060208501526080840191613711565b6001600160401b0390951660408201520152565b903590601e19813603018212156104f157018035906001600160401b0382116104f1576020019181360383136104f157565b9491959897906115446145d56040996145cd6145db976145f8993691610f4d565b943691610f4d565b97614e7b565b928451968794859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108dc57600090819361463b57509190565b905061059191925060403d8111610cea57610cdb8183610f0f565b9396949161076398969361ffff61467b9316865260c0602087015260c0860191613711565b6001600160401b0390961660408401526060830152608082015280840360a090910152613711565b91969792989594939094303303614738576146bf908530615281565b60405181815290946001600160a01b03169390849061ffff8516906000805160206155bd83398151915290602090a3833b156104f157600098899561471b936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614656565b0393f180156108dc5761472b5750565b8061243461050192610ec1565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104f1576020825192015190565b9192610763959361ffff6147c29316845260018060a01b0316602084015260a0604084015260a083019061072d565b9215156060820152608081840391015261072d565b156147de57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261484461076397959361ffff6148529416865260c0602087015260c086019061072d565b90848203604086015261072d565b6001600160a01b0391821660608401529316608082015280830360a09091015261072d565b946148a09193929561ffff811660005260016020526148a76040600020604051948580926112eb565b0384610f0f565b82511561491f576148b985518261497d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104f15760009661490e91604051998a988997889662c5803160e81b88526004880161481f565b03925af180156108dc5761472b5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156149e2575b1161499e57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614997565b9060ff6149f882615489565b161580614b2c575b614a0990614f91565b614a1b614a1582615439565b916154d4565b90916001600160a01b039182841615614b22575b614a63907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316614f00565b918316928315614add576000805160206155bd83398151915291614a9d61ffff92614a98614a9387600a54612fe2565b600a55565b6120f4565b8481540190558460006000805160206155fd83398151915260405180614ac889829190602083019252565b0390a360405193845216918060208101613119565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614a2f565b508051602914614a00565b9897969293614b6160e0979361ffff614b969894168c5260208c61010091829101528c019061072d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261072d565b930152565b614bb36040929594939560608352606083019061072d565b94600180841b031660208201520152565b9091614bcf84615042565b9091614c00614bf987612547614bf38b61ffff166000526007602052604060002090565b8c610fde565b5460ff1690565b916001600160401b0391614c37907f0000000000000000000000000000000000000000000000000000000000000000908416614f00565b9288888b8315614d33575b505050853b15614ce85794614c899694614138948a946126c5948d99600014614ce15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614b37565b9015614cd6575090614cd161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614b9b565b0390a2565b926105019492614160565b1692614c6a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061420c915050565b90612547614d6892614d6289614d4d614d75979b30615231565b9961ffff166000526007602052604060002090565b90610fde565b805460ff19166001179055565b88888b614c42565b60065460ff1615614dca57602282511061154b5761ffff602261050193015191166000526002602052614dbd604060002060008052602052604060002090565b5490611512821515614dd2565b50516115bc57565b15614dd957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614e2257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614efb576001600160401b03919004818111614eb9571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b614e65565b81810292918115918404141715610d3c57565b7f00000000000000000000000000000000000000000000000000000000000000008015614efb57810690818103908111610d3c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610ed45760405290565b15614f9857565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261076394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615032815180926020868601910161070a565b8101036051810184520182610f0f565b9061505a600160ff61505385615489565b1614614f91565b61506382615439565b9061506d836154d4565b9060498451106150de5760498401519360518151106150a25761509f60518201519161509981516140cb565b906153b5565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036151ca575b801561517b5781615150846151436000956120f4565b546130f6828210156151da565b5561515e83600a5403600a55565b6040518381526000805160206155fd83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6151d583338461328a565b61512d565b156151e157565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614add57600a5490828201809211610d3c576000926152726020926000805160206155fd83398151915294600a556120f4565b818154019055604051908152a3565b6107639183916001600160a01b0381163081141590816152ad575b50156130a257610b5183338361328a565b90503314153861529c565b156152bf57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156152fc57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6153498261534281612fc6565b10156152b8565b61535682825110156152f5565b8161536e575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106153a25750508252601f01601f191660405290565b909283518152602080910193019061538a565b6153c28261534281612fc6565b6153d781516153d084612fd4565b11156152f5565b816153ef575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106154265750508252601f01601f191660405290565b909283518152602080910193019061540e565b602181511061544c57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615499576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106150a2576029015190565b60208151106154f4576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b909291600080916040519561554587610ed9565b6096875282602088019560a036883760208451940192f1903d9060968211615573575b6000908286523e9190565b6096915061556856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220c969d7aac155ffc8c6e18a36772869ddbad6e66ffec16b28b8dcf0b4f1caf17a64736f6c63430008120033", + "bytecode": "0x6101c06040523462000b7d57610160620066cc803803809162000025826101c062000b9e565b6101c0391262000b7d576200003c6101c062000bc2565b6101e051906001600160a01b038216820362000b7d57610200516001600160a01b038116810362000b7d576200007461022062000bc2565b926200008261024062000bc2565b916200009061026062000bc2565b6200009d61028062000bc2565b91620000ab6102a062000bc2565b93620000b96102c062000bc2565b95620000c76102e062000bc2565b91620000d561030062000bc2565b9360405191620000e58362000b82565b60048352635553444f60e01b60208401526040519a620001058c62000b82565b60018c52603160f81b60208d0152604051620001218162000b82565b60048152635553444f60e01b602082015260405191620001418362000b82565b60048352635553444f60e01b60208401526200015d3362000bd7565b6001600160a01b0316608052600860a0528051906001600160401b038211620008c857600b5490600182811c9216801562000b72575b602083101462000a445781601f84931162000b00575b50602090601f831160011462000a715760009262000a65575b50508160011b916000199060031b1c191617600b555b8051906001600160401b038211620008c857600c5490600182811c9216801562000a5a575b602083101462000a445781601f849311620009d2575b50602090601f8311600114620009435760009262000937575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa9081156200092b57600091620008de575b5061ffff1680600052600f60205260406000203360005260205260406000209060ff19916001838254161790556000526010602052604060002033600052602052600160406000209182541617905560e05260018060a01b031660018060a01b0319600d541617600d5560208151910120976020815191012088610160528061018052466101205260405198600080516020620066ac83398151915260208b015260408a015260608901524660808901523060a089015260a088528760c081011060018060401b0360c08a011117620008c85760c08801604081905288516020808b0191909120610100523061014052600080516020620066ac8339815191526101a052601580546001600160a01b039485166001600160a01b031991821681179092556016805498861698821689179055601780549986169982168a179055601880549a86169a82168b179055601980549b86169b82168c179055601a805496861696821687179055601b805497909516968116871790945560129091527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3805484169095179094557f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4805483169098179097557f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc805482169092179091557f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2805482169092179091557f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a805482169092179091557fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0538054821690921790915560056000527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746805490911690911790556200053e9062000b82565b600560c082015260e0810163100b652360e01b8152610306600052601c8060205260c06040600020930151916008831015620008b25783549264ffffffff00948592519160d89560ff938464ffffffffff199687928a1c169316911617179055604051620005ac8162000b82565b6003815260208101634dd8df6360e11b81526103076000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620005fa8162000b82565b60058152602081016313030a6160e31b81526103056000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006488162000b82565b6003815260208101631007cea560e31b81526103046000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006968162000b82565b60078152602081016381618d0560e01b81526103096000528460205260406000209151906008821015620008b257848489855493518a1c16931691161717905560405194620006e58662000b82565b600186526020860193630cef3d9360e31b855261030a60005260205260406000209551946008861015620008b25786549451901c1693169116171790553360018060a01b0360005416036200086e576001600160a01b038116156200081a576200074f9062000bd7565b604051615a8d908162000c1f823960805181818161055c0152818161081f0152818161096801528181610b3501528181610ff30152818161217d0152818161243b01528181612e970152818161428e01528181614a370152614d07015260a051816118d8015260c051818181614e890152818161507d015281816152ee0152615388015260e051816128590152610100518161365d0152610120518161371801526101405181613627015261016051816136ac015261018051816136d201526101a051816136890152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6020813d60201162000922575b81620008fa6020938362000b9e565b810103126200091e57519061ffff821682036200091b575061ffff62000282565b80fd5b5080fd5b3d9150620008eb565b6040513d6000823e3d90fd5b0151905038806200022c565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f1984168510620009b6576001945083601f198116106200099c575b505050811b01600c5562000242565b015160001960f88460031b161c191690553880806200098d565b8181015183556020948501946001909301929091019062000970565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c81016020851062000a3c575b90849392915b601f830160051c8201811062000a2c57505062000213565b6000815585945060010162000a14565b508062000a0e565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001fd565b015190503880620001c2565b600b600090815293507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db991905b601f198416851062000ae4576001945083601f1981161062000aca575b505050811b01600b55620001d8565b015160001960f88460031b161c1916905538808062000abb565b8181015183556020948501946001909301929091019062000a9e565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c81016020851062000b6a575b90849392915b601f830160051c8201811062000b5a575050620001a9565b6000815585945060010162000b42565b508062000b3c565b91607f169162000193565b600080fd5b604081019081106001600160401b03821117620008c857604052565b601f909101601f19168101906001600160401b03821190821017620008c857604052565b51906001600160a01b038216820362000b7d57565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461049057806301ffc9a71461048b57806306fdde031461048657806307e0db1714610481578063095ea7b31461047c5780630df374831461047757806310ddb1371461047257806318160ddd146103f057806323b872dd1461046d578063313ce567146104685780633644e51514610463578063365260b41461045e57806339509351146104595780633bdd4a43146104545780633d8b38f61461044f5780633f1f4fa41461044a57806342d65a8d14610445578063437be62214610440578063447705151461043b5780634c42899a1461043b5780635b8c41e6146104365780635c975abb1461043157806366ad5c8a1461042c578063695ef6bf1461042757806370a0823114610422578063715018a61461041d5780637533d7881461041857806376203b4814610413578063796fd43a1461040e5780637ecebe0014610409578063857749b0146104045780638cfd8f5c146103ff5780638da5cb5b146103fa5780639169d59e146103f55780639358928b146103f0578063950c8a74146103eb578063952168c5146103e657806395d89b41146103e15780639bdb9812146103dc5780639f38369a146103d7578063a457c2d7146103d2578063a4c51df5146103cd578063a6c3d165146103c8578063a9059cbb146103c3578063b02f69a2146103be578063b25ea8fb146103b9578063b353aaa7146103b4578063ba03a8d7146103af578063baf3292d146103aa578063c056a8de146103a5578063c4461834146103a0578063cbed8b9c1461039b578063ce8849ed14610396578063d1deba1f14610391578063d505accf1461038c578063dbd01de114610387578063dd62ed3e14610382578063de4065771461037d578063df2a5b3b14610378578063e6a20ae614610373578063e78eb9461461036e578063eab45d9c14610369578063eaffd49a14610364578063eb8d72b71461035f578063ec6d062b1461035a578063ed629c5c14610355578063f00c298d14610350578063f2fde38b1461034b578063f5ecbdbc14610346578063f8974de014610341578063fa74f0b51461033c5763fc0c546a0361000e57612fc9565b612f7a565b612f01565b612e2d565b612d66565b612ce3565b612cc0565b612c76565b612b2c565b612aa3565b612a45565b6129a0565b612975565b612888565b612843565b6127e9565b6127c0565b61265f565b6124fc565b6124d3565b6123e7565b6123ca565b61228a565b6121f6565b6121ac565b612167565b6120f0565b612049565b611fff565b611e7c565b611de9565b611d2b565b611c88565b611c3d565b611b99565b611a76565b611a1c565b6109c9565b611977565b61194e565b6118fc565b6118be565b611881565b6117ab565b61158d565b611536565b6113f0565b6113b3565b6112d0565b61124a565b611227565b6111c0565b6110d3565b61105a565b610fd9565b610fa0565b610f44565b610e6e565b610bb3565b610aaf565b610a43565b610a27565b6109e7565b61093f565b610900565b6108cb565b6107f6565b610716565b610659565b610545565b61ffff8116036104a157565b600080fd5b35906104b182610495565b565b9181601f840112156104a1578235916001600160401b0383116104a157602083818601950101116104a157565b9060806003198301126104a1576004356104f981610495565b916001600160401b03906024358281116104a1578161051a916004016104b3565b9390939260443581811681036104a157926064359182116104a157610541916004016104b3565b9091565b346104a157610553366104e0565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610614576105d96105e192610019976105d26105b86105b38a61ffff166000526001602052604060002090565b61151b565b805190818414918261060a575b50816105e7575b506143b8565b369161110a565b92369161110a565b926144d6565b90506105f436848661110a565b60208151910120906020815191012014386105cc565b15159150386105c5565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104a15760203660031901126104a15760043563ffffffff60e01b81168091036104a157602090631f7ecdf760e01b811490811561069e575b506040519015158152f35b6301ffc9a760e01b14905038610693565b60009103126104a157565b60005b8381106106cd5750506000910152565b81810151838201526020016106bd565b906020916106f6815180928185528580860191016106ba565b601f01601f1916010190565b9060206107139281815201906106dd565b90565b346104a1576000806003193601126107f35760405181600b546107388161144b565b808452906001908181169081156107cb5750600114610772575b61076e8461076281880382610cd3565b60405191829182610702565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106107b8575050508161076e936107629282010193610752565b805485850187015292850192810161079c565b61076e96506107629450602092508593915060ff191682840152151560051b82010193610752565b80fd5b346104a157600060203660031901126107f35760043561081581610495565b61081d612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561088c57610880575080f35b61088990610c85565b80f35b6135a0565b5080fd5b6001600160a01b038116036104a157565b600435906104b182610895565b606435906104b182610895565b35906104b182610895565b346104a15760403660031901126104a1576108f56004356108eb81610895565b6024359033613236565b602060405160018152f35b346104a15760403660031901126104a15761ffff60043561092081610495565b610928612fe4565b166000526003602052602435604060002055600080f35b346104a157600060203660031901126107f35760043561095e81610495565b610966612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561088c57610880575080f35b346104a15760003660031901126104a1576020600a54604051908152f35b346104a15760603660031901126104a1576108f5600435610a0781610895565b602435610a1381610895565b60443591610a22833383613361565b61312e565b346104a15760003660031901126104a157602060405160128152f35b346104a15760003660031901126104a1576020610a5e613624565b604051908152f35b6064359081151582036104a157565b6024359081151582036104a157565b60a4359081151582036104a157565b6004359081151582036104a157565b359081151582036104a157565b346104a15760a03660031901126104a157600435610acc81610495565b610ad4610a66565b90608435906001600160401b0382116104a157610afa6105d260409336906004016104b3565b90610b31610b14610b0c6044356152ec565b6024356153bd565b928451958694859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561088c576000908192610b82575b50604080519182526020820192909252f35b9050610ba5915060403d8111610bac575b610b9d8183610cd3565b810190614bc9565b9038610b70565b503d610b93565b346104a15760403660031901126104a157600435610bd081610895565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610c0a576108f59133613236565b61303c565b60609060c31901126104a15760c490565b60609060a31901126104a15760a490565b908160609103126104a15790565b908160e09103126104a15790565b60809060a31901126104a15760a490565b60809060831901126104a157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c9857604052565b610c6f565b60c081019081106001600160401b03821117610c9857604052565b604081019081106001600160401b03821117610c9857604052565b90601f801991011681019081106001600160401b03821117610c9857604052565b604051906101a082018281106001600160401b03821117610c9857604052565b6084359060ff821682036104a157565b359060ff821682036104a157565b81601f820112156104a1578035906001600160401b038211610c98576040805193602091610d65838660051b0187610cd3565b84865282860191836101a0809702860101948186116104a1578401925b858410610d93575050505050505090565b86848303126104a157848791610da7610cf4565b610db087610aa2565b8152610dbd838801610aa2565b83820152610dcc868801610aa2565b868201526060610ddd8189016104a6565b908201526080610dee8189016108c0565b9082015260a0610dff818901610aa2565b9082015260c0610e108189016108c0565b9082015260e0610e218189016108c0565b9082015261010080880135908201526101208088013590820152610140610e49818901610d24565b9082015261016080880135908201526101808088013590820152815201930192610d82565b6101603660031901126104a157610e836108a6565b6001600160401b03906064358281116104a157610ea4903690600401610c31565b6084358381116104a157610ebc903690600401610c3f565b90610ec636610c4d565b610124358581116104a157610edf9036906004016104b3565b939092610144359687116104a157610efe610019973690600401610d32565b956044359060243590613985565b9060406003198301126104a157600435610f2581610495565b91602435906001600160401b0382116104a157610541916004016104b3565b346104a157602061ffff610f91610f5a36610f0c565b9390911660005260018452610f7c610f83604060002060405192838092611485565b0382610cd3565b84815191012092369161110a565b82815191012014604051908152f35b346104a15760203660031901126104a15761ffff600435610fc081610495565b1660005260036020526020604060002054604051908152f35b346104a157610fe736610f0c565b9190610ff1612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104a157604051928380926342d65a8d60e01b8252816110486000988997889460048501614449565b03925af1801561088c57610880575080f35b346104a15760203660031901126104a15760043561107781610895565b6001600160a01b0316801561109c57600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b346104a15760003660031901126104a157602060405160008152f35b6001600160401b038111610c9857601f01601f191660200190565b929192611116826110ef565b916111246040519384610cd3565b8294818452818301116104a1578281602093846000960137010152565b60606003198201126104a15760043561115981610495565b916024356001600160401b03928382116104a157806023830112156104a15781602461118a9360040135910161110a565b9160443590811681036104a15790565b6020906111b49282604051948386809551938492016106ba565b82019081520301902090565b346104a157602061121e61ffff6111fd836111da36611141565b9490911660005260058252604060002082604051948386809551938492016106ba565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346104a15760003660031901126104a157602060ff601154166040519015158152f35b346104a157611258366104e0565b919294939030330361127c576105d96112769261001997369161110a565b9261469e565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126104a1576004356112e881610895565b6024356112f481610495565b604435916084356001600160401b0381116104a157602061ffff61132b600080516020615a18833981519152933690600401610c31565b9361139e853561133a81610895565b6113586105d2868901359861134e8a610895565b60408101906149b5565b611362818a6151e9565b611377611370606435615386565b5085615590565b97611383891515614c23565b61139561138f8a6152ec565b8c6153bd565b9234938b614cc3565b6040519485526001600160a01b0316941692a4005b346104a15760203660031901126104a1576004356113d081610895565b60018060a01b031660005260086020526020604060002054604051908152f35b346104a1576000806003193601126107f35761140a612fe4565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561147b575b602083101461146557565b634e487b7160e01b600052602260045260246000fd5b91607f169161145a565b90600092918054916114968361144b565b9182825260019384811690816000146114f857506001146114b8575b50505050565b90919394506000526020928360002092846000945b8386106114e45750505050010190388080806114b2565b8054858701830152940193859082016114cd565b9294505050602093945060ff191683830152151560051b010190388080806114b2565b906104b161152f9260405193848092611485565b0383610cd3565b346104a15760203660031901126104a15761ffff60043561155681610495565b16600052600160205261076e610f7c611579604060002060405192838092611485565b6040519182916020835260208301906106dd565b60e03660031901126104a1576004356115a581610895565b6024356115b181610495565b604435916001600160401b03906084358281116104a1576115d69036906004016104b3565b91909260a43591818316918284036104a15760c4359081116104a157611600903690600401610c31565b9261163784359561161087610895565b61162f61162560208801359761134e89610895565b999092369161110a565b97369161110a565b9460ff6006541660001461172a5760228651106116e5578560209561139561139e946116b38c6116a061ffff9a8b6022600080516020615a188339815191529f0151931660005260028d5261169a60406000206001600052602052604060002090565b5461306e565b906116ac82151561523e565b101561528a565b6116c86116c1606435615386565b5088615590565b9a6116d48c1515614c23565b8d6116de8d6152ec565b903361544a565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b94809493505161175757600080516020615a188339815191529460209461ffff9461139561139e946116b3565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b610100806003193601126104a157602435906117c682610895565b6001600160401b036044358181116104a1576117e6903690600401610c3f565b926064359182116104a1576100199361186e61186361180c61187c953690600401610c31565b61185161181836610c5e565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b03166044890152606488015261012487019061387c565b85810360231901608487015290613848565b9160a484019061392d565b03601f198101835282610cd3565b6140aa565b346104a15760203660031901126104a15760043561189e81610895565b60018060a01b031660005260136020526020604060002054604051908152f35b346104a15760003660031901126104a157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a15760403660031901126104a157602061121e60043561191e81610495565b61ffff6024359161192e83610495565b166000526002835260406000209061ffff16600052602052604060002090565b346104a15760003660031901126104a1576000546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a15760043561199481610895565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d760206119bf610a75565b926119c8612fe4565b6119d0614279565b60009081526010835260408082206001600160a01b03841683526020529020611a079085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104a15760003660031901126104a1576004546040516001600160a01b039091168152602090f35b9181601f840112156104a1578235916001600160401b0383116104a1576020808501946101a085020101116104a157565b60a03660031901126104a157600435611a8e81610495565b6001600160401b03906024358281116104a157611aaf9036906004016104b3565b90916064358481116104a157611ac9903690600401610c31565b936084359081116104a1576100199461ffff94611b9494611b85611b24611af761186e963690600401611a45565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613827565b60443560648801526060611b7560231996878a85030160848b01528035611b4a81610895565b6001600160a01b0390811685526020820135611b6581610895565b16602085015260408101906137f6565b9190928160408201520191613827565b928584030160a4860152613bbd565b61421c565b346104a1576000806003193601126107f35760405181600c54611bbb8161144b565b808452906001908181169081156107cb5750600114611be45761076e8461076281880382610cd3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c2a575050508161076e936107629282010193610752565b8054858501870152928501928101611c0e565b346104a157602060ff611c7c61ffff6111fd84611c5936611141565b9490911660005260078252604060002082604051948386809551938492016106ba565b54166040519015158152f35b346104a15760203660031901126104a15761ffff600435611ca881610495565b166000526001602052610f7c611cc8604060002060405192838092611485565b805115611ce65761076281611ce061076e93516144b8565b906157d0565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104a15760403660031901126104a157600435611d4881610895565b60243590336000526009602052611d758160406000209060018060a01b0316600052602052604060002090565b5491808310611d9657611d8a92039033613236565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104a15760e03660031901126104a157600435611e0681610495565b6001600160401b03906064358281116104a157611e279036906004016104b3565b60849291923584811681036104a157611e3e610a84565b9160c4359586116104a157611e5a611e6a9636906004016104b3565b95909460443590602435906149e7565b60408051928352602083019190915290f35b346104a157611e8a36610f0c565b90611e93612fe4565b60405192602092808385870137611ebf6034868381013060601b88820152036014810188520186610cd3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c9857611ef983611ef3865461144b565b86614464565b80601f8411600114611f69575091808092611f589695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611f5e575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611f3a565b91939498601f198416611f8187600052602060002090565b938a905b828210611fe8575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611f5898969410611fcf575b505050811b019055611f4c565b015160001960f88460031b161c19169055388080611fc2565b808886978294978701518155019601940190611f85565b346104a15760403660031901126104a1576108f560043561201f81610895565b602435903361312e565b6101e09060831901126104a157608490565b908160a09103126104a15790565b6102c03660031901126104a15760043561206281610895565b60243561206e81610895565b6044359161207b83610495565b6120836108b3565b9261208d36612029565b6001600160401b0394610264358681116104a1576120af903690600401611a45565b929091610284358881116104a1576120cb90369060040161203b565b946102a4359889116104a1576120e86100199936906004016104b3565b989097613d48565b346104a15760403660031901126104a15760243561210d81610895565b612115612fe4565b60008080808094600435905af161212a613785565b50156121335780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760403660031901126104a157602060ff611c7c6024356121d081610895565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346104a15760203660031901126104a1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561223681610895565b61223e612fe4565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104a157600490565b60c0906101231901126104a15761012490565b610220806003193601126104a1576122a136612266565b6122aa36610c0f565b916122b436612277565b906001600160401b03906101e4358281116104a1576122d7903690600401611a45565b90916102049384359081116104a1576122f49036906004016104b3565b94909560405198899863602b546f60e11b60208b0152803561231581610895565b6001600160a01b0390811660248c015280602083013561233481610895565b1660448c0152604082013560648c0152606082013560848c0152608082013561235c81610895565b1660a48b015260a0013560c48a015260e489016123789161401e565b610144880161238691614041565b86015261024485019061239892613bbd565b90602319848303016102248501526123af92613827565b03601f19810182526123c19082610cd3565b61001990614176565b346104a15760003660031901126104a15760206040516127108152f35b346104a15760803660031901126104a15760043561240481610495565b60243561241081610495565b6064356001600160401b0381116104a15761242f9036906004016104b3565b9092612439612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104a157600080946124b0604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613827565b03925af1801561088c576124c057005b806124cd61001992610c85565b806106af565b346104a15760003660031901126104a157600e546040516001600160a01b039091168152602090f35b612505366104e0565b9161ffff8694929616600052600560205261254c81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b5491821561260e576125fd84836125f67fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125e2846125ca8e8a8f6126099f908f6125b0906125a36125c49436908d61110a565b6020815191012014614928565b61ffff166000526005602052604060002090565b9161490f565b906001600160401b0316600052602052604060002090565b556125ee36878d61110a565b93369161110a565b918861469e565b6040519586958661497e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346104a15760e03660031901126104a15760043561267c81610895565b60243561268881610895565b6044359060643592612698610d14565b9380421161277b576127636127769161273d6100199761274b6126d68760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610cd3565b61275e60c4359360a4359351902061373e565b613445565b6001600160a01b038381169116146133f9565b613236565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104a15760003660031901126104a157600d546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a157602061121e60043561280b81610895565b6024359061281882610895565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760603660031901126104a1576004356128a581610495565b6024356128b181610495565b604435916128bd612fe4565b8215612938576126097f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129128560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104a15760003660031901126104a157602060405160018152f35b90816101c09103126104a15790565b6101403660031901126104a1576004356129b981610895565b6024356129c581610895565b604435916129d283610495565b6129da6108b3565b6001600160401b0393906084358581116104a1576129fc9036906004016104b3565b90612a0636610c20565b92610104358881116104a157612a20903690600401612991565b94610124359889116104a157612a3d610019993690600401611a45565b989097613f5b565b346104a15760203660031901126104a1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612a81610a93565b612a89612fe4565b151560ff196006541660ff821617600655604051908152a1005b346104a1576101003660031901126104a157600435612ac181610495565b6001600160401b03906024358281116104a157612ae29036906004016104b3565b91906044359084821682036104a157608435612afd81610895565b60c4359586116104a157612b186100199636906004016104b3565b94909360e4359660a4359460643593614add565b346104a157612b3a36610f0c565b9190612b44612fe4565b60009161ffff81168352600160209080825260408520916001600160401b038711610c9857612b7d87612b77855461144b565b85614464565b8590601f8811600114612be45750918680879893611f58957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612bd9575b501b906000198460031b1c191617905560405193849384614449565b880135925038612bbd565b90601f198816612bf985600052602060002090565b9288905b828210612c5f575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611f58969410612c45575b505082811b019055611f4c565b870135600019600386901b60f8161c191690553880612c38565b808685968294968c01358155019501930190612bfd565b346104a15760403660031901126104a157602060ff611c7c602435612c9a81610895565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a157602060ff600654166040519015158152f35b346104a15760403660031901126104a157600435612d0081610895565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612d2b610a75565b92612d34612fe4565b612d3c614279565b6000908152600f835260408082206001600160a01b03841683526020529020611a079085906119f6565b346104a15760203660031901126104a157600435612d8381610895565b612d8b612fe4565b6001600160a01b039081168015612dd957600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104a15760803660031901126104a157600435612e4a81610495565b60243590612e5782610495565b612e62604435610895565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c5761076e91600091612ee0575b5060405191829182610702565b612efb913d8091833e612ef38183610cd3565b810190614413565b38612ed3565b346104a15760203660031901126104a157612f1a610a93565b612f2f60018060a01b03600e541633146137b5565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104a15760203660031901126104a157600435612f9781610895565b612f9f612fe4565b6001600160a01b0316612fb38115156137b5565b600e80546001600160a01b031916919091179055005b346104a15760003660031901126104a1576020604051308152f35b6000546001600160a01b03163303612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610c0a57565b6051019081605111610c0a57565b91908201809211610c0a57565b1561308257565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156130da57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156131e3576131c882600080516020615a38833981519152946131de94169661316888151561307b565b6001600160a01b03811660009081526008602052604090206131ad90859054613193828210156130d3565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156133105782169384156132c057806132af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946132986131de9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016133995750505050565b8084106133b4576133ab930391613236565b388080806114b2565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561340057565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107139391613454936135ac565b919091613481565b634e487b7160e01b600052602160045260246000fd5b6005111561347c57565b61345c565b61348a81613472565b806134925750565b61349b81613472565b600181036134e75760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6134f081613472565b6002810361353d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613549600392613472565b1461355057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116136185791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561088c5781516001600160a01b03811615613612579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613715575b1561367f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261370f81610c9d565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613656565b613746613624565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610c985760405251902090565b3d156137b0573d90613796826110ef565b916137a46040519384610cd3565b82523d6000602084013e565b606090565b156137bc57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156104a15701602081359101916001600160401b0382116104a15781360383136104a157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611b7561071393803561385d81610895565b6001600160a01b031684526020818101359085015260408101906137f6565b906107139082358152602083013561389381610495565b61ffff809116602083015260408401356138ac81610495565b16604082015260608301356138c081610895565b6001600160a01b0316606082015260c0806139106138f56138e460808801886137f6565b60e0608088015260e0870191613827565b61390260a08801886137f6565b9086830360a0880152613827565b9401359161391d83610895565b6001600160a01b03909216910152565b6060908181359161393d83610895565b6001600160a01b03928316855282602082013561395981610895565b16602086015282604082013561396e81610895565b166040860152013561397f81610895565b16910152565b939490929596613a0a9298976139fa6139ef6139dc60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613848565b6023198d8203810160a48f01529961387c565b9360c48c019061392d565b868a8403016101448b0152613827565b92868403016101648701528180865194858152019501936000915b848310613a4d575050505050509061187c81613a499303601f198101835282610cd3565b5050565b909192939495846101a06001928951613a6882825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613a25565b35906001600160801b03821682036104a157565b60808091613b3581610aa2565b151584526020810135613b4781610895565b6001600160a01b031660208501526000196001831b0180613b6a60408401613b14565b166040860152613b7c60608301613b14565b1660608501520135910152565b60408091613b9681610aa2565b151584526020810135613ba881610895565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613bdb575050505090565b9091929380613bf5600192613bef88610aa2565b15159052565b613c0b613c03848801610aa2565b151582850152565b613c236040613c1b818901610aa2565b151590830152565b613c3d6060613c338189016104a6565b61ffff1690830152565b613c5c6080613c4d8189016108c0565b6001600160a01b031690830152565b613c6c60a0613c1b818901610aa2565b613c7c60c0613c4d8189016108c0565b613c8c60e0613c4d8189016108c0565b61010080870135908201526101208087013590820152613cbc610140613cb3818901610d24565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613bcd565b9060a0613d3861071393613cf681610aa2565b1515845260208101356020850152613d1060408201610aa2565b1515604085015261ffff6060820135613d2881610495565b16606085015260808101906137f6565b9190928160808201520191613827565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613d9782610aa2565b151560a4890152602082013560c4890152604082013560e48901526060820135613dc081610895565b16610104880152613dd3608082016108c0565b6001600160a01b0316610124880152613dee60a08201610aa2565b151561014488015260c0810135610164880152613e12610184880160e08301613b28565b613e259061022488019061018001613b89565b61028486016102c090526102e4860190613e3e92613bbd565b916023199283868203016102a4870152613e5791613ce3565b91848303016102c4850152613e6b92613827565b03601f1981018252613e7d9082610cd3565b613a49906141c9565b9035609e19823603018112156104a1570190565b9061071391613eac82613bef83610aa2565b60208101356020830152613ece613ec560408301610aa2565b15156040840152565b60608101356060830152613ef0613ee760808301610aa2565b15156080840152565b60a081013560a0830152613f0a60c0830160c08301613b89565b613f1b610120808401908301613b89565b613f3e610180613f2d81840184613e86565b906101c08091860152840190613ce3565b91613f4f6101a09283810190613e86565b91818403910152613ce3565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613fb691610164890191613827565b93818135613fc381610895565b1660c4880152816020820135613fd881610895565b1660e488015260400135613feb81610895565b1661010486015260231992838682030161012487015261400a91613e9a565b9184830301610144850152613e6b92613bbd565b6040809161ffff813561403081610495565b1684526020810135613ba881610895565b60a0809161404e81610aa2565b15158452602081013561406081610895565b600180841b03809116602086015261ffff604083013561407f81610495565b16604086015260608201356060860152608082013561409d81610895565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b90821580614130575b61410c57565b6134e361411883614340565b60405162461bcd60e51b815291829160048301610702565b506001614106565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b6008111561347c57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c576000906142cf575b61ffff91501690565b6020823d8211614303575b816142e760209383610cd3565b810103126107f3575061ffff90516142fe81610495565b6142c6565b3d91506142da565b90929192614318816110ef565b916143266040519384610cd3565b8294828452828201116104a15760206104b19301906106ba565b6044815110614391576004810151810190602081602484019303126104a1576024810151906001600160401b0382116104a1570190806043830112156104a15760248201516107139260440161430b565b5060405161439e81610cb8565b600a8152695553444f3a206461746160b01b602082015290565b156143bf57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104a1578051906001600160401b0382116104a157019080601f830112156104a15781516107139260200161430b565b60409061ffff61071395931681528160208201520191613827565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b601319810191908211610c0a57565b605019810191908211610c0a57565b92909161453a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906145348261273d61451360a483018a6106dd565b6001600160401b0388166064840152828103602319016084840152886106dd565b306159cc565b939015614549575b5050505050565b6145529461455c565b3880808080614542565b91936145f97fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614607939561ffff815160208301209616958660005260056020526145c0836111fd60208b604060002082604051948386809551938492016106ba565b556001600160401b036145e5604051988998895260a060208a015260a08901906106dd565b9216604087015285820360608701526106dd565b9083820360808501526106dd565b0390a1565b90604051604081018181106001600160401b03821117610c985760405280925460ff811690600882101561347c5790825260d81b6001600160e01b03191660209190910152565b91610713959361ffff61468a926001600160401b039460018060a01b0316865216602085015260a0604085015260a08401906106dd565b9316606082015260808184039101526106dd565b9291906146aa8361597f565b6146c86146c182600052601c602052604060002090565b5460ff1690565b6146d18161426f565b1561482a57936146f66146f16104b196600052601c602052604060002090565b61460c565b80516147018161426f565b60208201516001600160e01b0319169180519061471d8261426f565b6147268261426f565b60009160050361477557505060185461477090614753906001600160a01b03165b6001600160a01b031690565b925b61273d88888888604051988996602088015260248701614653565b61489f565b600381516147828161426f565b61478b8161426f565b036147b1575050601654614770906147ab906001600160a01b0316614747565b92614755565b600781516147be8161426f565b6147c78161426f565b036147ec575050601a54614770906147e7906001600160a01b0316614747565b6147ab565b600190516147f98161426f565b6148028161426f565b036148215750601b54614770906147e7906001600160a01b0316614747565b614770906147ab565b5061483d61483784615924565b60ff1690565b8061484e575050506104b191614e38565b60010361485e576104b193615038565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b9492939194600881101561347c576000908152601260205260409020546001600160a01b0316801561413857816000929160208493519201905af4926148e3613785565b93158080614907575b6148fb57614549575050505050565b6134e361411886614340565b5060006148ec565b6020919283604051948593843782019081520301902090565b1561492f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916149aa9060609461ffff6001600160401b039499989799168552608060208601526080850191613827565b951660408201520152565b903590601e19813603018212156104a157018035906001600160401b0382116104a1576020019181360383136104a157565b9491959897906116de614a10604099614a08614a1697614a3399369161110a565b94369161110a565b976152ec565b928451968794859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561088c576000908193614a7657509190565b905061054191925060403d8111610bac57610b9d8183610cd3565b93969491614abf9061071399979461ffff6001600160401b039416875260c0602088015260c0870191613827565b961660408401526060830152608082015260a0818503910152613827565b91969792989594939094303303614b8457614af990853061571c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156104a1576000988995614b67936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614a91565b0393f1801561088c57614b775750565b806124cd6104b192610c85565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104a1576020825192015190565b9192610713959361ffff614c0e9316845260018060a01b0316602084015260a0604084015260a08301906106dd565b921515606082015260808184039101526106dd565b15614c2a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614c9061071397959361ffff614c9e9416865260c0602087015260c08601906106dd565b9084820360408601526106dd565b6001600160a01b0391821660608401529316608082015280830360a0909101526106dd565b94614cec9193929561ffff81166000526001602052614cf3604060002060405194858092611485565b0384610cd3565b825115614d6b57614d05855182614dc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104a157600096614d5a91604051998a988997889662c5803160e81b885260048801614c6b565b03925af1801561088c57614b775750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614e2e575b11614dea57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614de3565b9060ff614e4482615924565b161580614f9f575b614e5590615403565b614e67614e61826158d4565b9161596f565b90916001600160a01b039182841615614f95575b614eaf906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615373565b918316928315614f50577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91614f1061ffff92614ef6614ef187600a5461306e565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020615a3883398151915260405180614f3b89829190602083019252565b0390a3604051938452169180602081016131de565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614e7b565b508051602914614e4c565b98979692936001600160401b03614fdc60e0989461ffff6150089995168d5260208d61010091829101528d01906106dd565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526106dd565b930152565b6001600160401b0361502d604093969594966060845260608401906106dd565b951660208201520152565b9091615043846154b7565b909161506d6146c1876125ca6150678b61ffff166000526007602052604060002090565b8c61119a565b916150a36001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615373565b9288888b831561519f575b505050853b1561515457946150f59694614534948a9461273d948d9960001461514d5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614faa565b901561514257509061513d61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461500d565b0390a2565b926104b1949261455c565b16926150d6565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614607915050565b906125ca6151d4926151ce896151b96151e1979b306156b9565b9961ffff166000526007602052604060002090565b9061119a565b805460ff19166001179055565b88888b6150ae565b60065460ff16156152365760228251106116e55761ffff60226104b193015191166000526002602052615229604060002060008052602052604060002090565b54906116ac82151561523e565b505161175757565b1561524557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561529157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561536e57046001600160401b0390818111615329571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6152d6565b81810292918115918404141715610c0a57565b7f0000000000000000000000000000000000000000000000000000000000000000801561536e57810690818103908111610c0a5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c985760405290565b1561540a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261071394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526154a781518092602086860191016106ba565b8101036051810184520182610cd3565b906154cf600160ff6154c885615924565b1614615403565b6154d8826158d4565b906154e28361596f565b9060498451106155535760498401519360518151106155175761551460518201519161550e81516144c7565b90615850565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615652575b801561560357816155d8846155cb60009560018060a01b03166000526008602052604060002090565b5461319382821015615662565b556155e683600a5403600a55565b604051838152600080516020615a3883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61565d833384613361565b6155a2565b1561566957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614f5057600a5490828201809211610c0a5760009261570d602092600080516020615a3883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6107139183916001600160a01b038116308114159081615748575b501561312e57610a22833383613361565b905033141538615737565b1561575a57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561579757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6157e4826157dd81613052565b1015615753565b6157f18282511015615790565b81615809575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061583d5750508252601f01601f191660405290565b9092835181526020809101930190615825565b61585d826157dd81613052565b615872815161586b84613060565b1115615790565b8161588a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106158c15750508252601f01601f191660405290565b90928351815260208091019301906158a9565b60218151106158e757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615934576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615517576029015190565b602081511061598f576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b90929160008091604051956159e087610c9d565b6096875282602088019560a036883760208451940192f1903d9060968211615a0e575b6000908286523e9190565b60969150615a0356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220edc1a250316bb6227c504304207571c9d1020270104a7df747c53b84c7b4730e64736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461049057806301ffc9a71461048b57806306fdde031461048657806307e0db1714610481578063095ea7b31461047c5780630df374831461047757806310ddb1371461047257806318160ddd146103f057806323b872dd1461046d578063313ce567146104685780633644e51514610463578063365260b41461045e57806339509351146104595780633bdd4a43146104545780633d8b38f61461044f5780633f1f4fa41461044a57806342d65a8d14610445578063437be62214610440578063447705151461043b5780634c42899a1461043b5780635b8c41e6146104365780635c975abb1461043157806366ad5c8a1461042c578063695ef6bf1461042757806370a0823114610422578063715018a61461041d5780637533d7881461041857806376203b4814610413578063796fd43a1461040e5780637ecebe0014610409578063857749b0146104045780638cfd8f5c146103ff5780638da5cb5b146103fa5780639169d59e146103f55780639358928b146103f0578063950c8a74146103eb578063952168c5146103e657806395d89b41146103e15780639bdb9812146103dc5780639f38369a146103d7578063a457c2d7146103d2578063a4c51df5146103cd578063a6c3d165146103c8578063a9059cbb146103c3578063b02f69a2146103be578063b25ea8fb146103b9578063b353aaa7146103b4578063ba03a8d7146103af578063baf3292d146103aa578063c056a8de146103a5578063c4461834146103a0578063cbed8b9c1461039b578063ce8849ed14610396578063d1deba1f14610391578063d505accf1461038c578063dbd01de114610387578063dd62ed3e14610382578063de4065771461037d578063df2a5b3b14610378578063e6a20ae614610373578063e78eb9461461036e578063eab45d9c14610369578063eaffd49a14610364578063eb8d72b71461035f578063ec6d062b1461035a578063ed629c5c14610355578063f00c298d14610350578063f2fde38b1461034b578063f5ecbdbc14610346578063f8974de014610341578063fa74f0b51461033c5763fc0c546a0361000e57612fc9565b612f7a565b612f01565b612e2d565b612d66565b612ce3565b612cc0565b612c76565b612b2c565b612aa3565b612a45565b6129a0565b612975565b612888565b612843565b6127e9565b6127c0565b61265f565b6124fc565b6124d3565b6123e7565b6123ca565b61228a565b6121f6565b6121ac565b612167565b6120f0565b612049565b611fff565b611e7c565b611de9565b611d2b565b611c88565b611c3d565b611b99565b611a76565b611a1c565b6109c9565b611977565b61194e565b6118fc565b6118be565b611881565b6117ab565b61158d565b611536565b6113f0565b6113b3565b6112d0565b61124a565b611227565b6111c0565b6110d3565b61105a565b610fd9565b610fa0565b610f44565b610e6e565b610bb3565b610aaf565b610a43565b610a27565b6109e7565b61093f565b610900565b6108cb565b6107f6565b610716565b610659565b610545565b61ffff8116036104a157565b600080fd5b35906104b182610495565b565b9181601f840112156104a1578235916001600160401b0383116104a157602083818601950101116104a157565b9060806003198301126104a1576004356104f981610495565b916001600160401b03906024358281116104a1578161051a916004016104b3565b9390939260443581811681036104a157926064359182116104a157610541916004016104b3565b9091565b346104a157610553366104e0565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610614576105d96105e192610019976105d26105b86105b38a61ffff166000526001602052604060002090565b61151b565b805190818414918261060a575b50816105e7575b506143b8565b369161110a565b92369161110a565b926144d6565b90506105f436848661110a565b60208151910120906020815191012014386105cc565b15159150386105c5565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104a15760203660031901126104a15760043563ffffffff60e01b81168091036104a157602090631f7ecdf760e01b811490811561069e575b506040519015158152f35b6301ffc9a760e01b14905038610693565b60009103126104a157565b60005b8381106106cd5750506000910152565b81810151838201526020016106bd565b906020916106f6815180928185528580860191016106ba565b601f01601f1916010190565b9060206107139281815201906106dd565b90565b346104a1576000806003193601126107f35760405181600b546107388161144b565b808452906001908181169081156107cb5750600114610772575b61076e8461076281880382610cd3565b60405191829182610702565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106107b8575050508161076e936107629282010193610752565b805485850187015292850192810161079c565b61076e96506107629450602092508593915060ff191682840152151560051b82010193610752565b80fd5b346104a157600060203660031901126107f35760043561081581610495565b61081d612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561088c57610880575080f35b61088990610c85565b80f35b6135a0565b5080fd5b6001600160a01b038116036104a157565b600435906104b182610895565b606435906104b182610895565b35906104b182610895565b346104a15760403660031901126104a1576108f56004356108eb81610895565b6024359033613236565b602060405160018152f35b346104a15760403660031901126104a15761ffff60043561092081610495565b610928612fe4565b166000526003602052602435604060002055600080f35b346104a157600060203660031901126107f35760043561095e81610495565b610966612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561088c57610880575080f35b346104a15760003660031901126104a1576020600a54604051908152f35b346104a15760603660031901126104a1576108f5600435610a0781610895565b602435610a1381610895565b60443591610a22833383613361565b61312e565b346104a15760003660031901126104a157602060405160128152f35b346104a15760003660031901126104a1576020610a5e613624565b604051908152f35b6064359081151582036104a157565b6024359081151582036104a157565b60a4359081151582036104a157565b6004359081151582036104a157565b359081151582036104a157565b346104a15760a03660031901126104a157600435610acc81610495565b610ad4610a66565b90608435906001600160401b0382116104a157610afa6105d260409336906004016104b3565b90610b31610b14610b0c6044356152ec565b6024356153bd565b928451958694859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561088c576000908192610b82575b50604080519182526020820192909252f35b9050610ba5915060403d8111610bac575b610b9d8183610cd3565b810190614bc9565b9038610b70565b503d610b93565b346104a15760403660031901126104a157600435610bd081610895565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610c0a576108f59133613236565b61303c565b60609060c31901126104a15760c490565b60609060a31901126104a15760a490565b908160609103126104a15790565b908160e09103126104a15790565b60809060a31901126104a15760a490565b60809060831901126104a157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c9857604052565b610c6f565b60c081019081106001600160401b03821117610c9857604052565b604081019081106001600160401b03821117610c9857604052565b90601f801991011681019081106001600160401b03821117610c9857604052565b604051906101a082018281106001600160401b03821117610c9857604052565b6084359060ff821682036104a157565b359060ff821682036104a157565b81601f820112156104a1578035906001600160401b038211610c98576040805193602091610d65838660051b0187610cd3565b84865282860191836101a0809702860101948186116104a1578401925b858410610d93575050505050505090565b86848303126104a157848791610da7610cf4565b610db087610aa2565b8152610dbd838801610aa2565b83820152610dcc868801610aa2565b868201526060610ddd8189016104a6565b908201526080610dee8189016108c0565b9082015260a0610dff818901610aa2565b9082015260c0610e108189016108c0565b9082015260e0610e218189016108c0565b9082015261010080880135908201526101208088013590820152610140610e49818901610d24565b9082015261016080880135908201526101808088013590820152815201930192610d82565b6101603660031901126104a157610e836108a6565b6001600160401b03906064358281116104a157610ea4903690600401610c31565b6084358381116104a157610ebc903690600401610c3f565b90610ec636610c4d565b610124358581116104a157610edf9036906004016104b3565b939092610144359687116104a157610efe610019973690600401610d32565b956044359060243590613985565b9060406003198301126104a157600435610f2581610495565b91602435906001600160401b0382116104a157610541916004016104b3565b346104a157602061ffff610f91610f5a36610f0c565b9390911660005260018452610f7c610f83604060002060405192838092611485565b0382610cd3565b84815191012092369161110a565b82815191012014604051908152f35b346104a15760203660031901126104a15761ffff600435610fc081610495565b1660005260036020526020604060002054604051908152f35b346104a157610fe736610f0c565b9190610ff1612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104a157604051928380926342d65a8d60e01b8252816110486000988997889460048501614449565b03925af1801561088c57610880575080f35b346104a15760203660031901126104a15760043561107781610895565b6001600160a01b0316801561109c57600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b346104a15760003660031901126104a157602060405160008152f35b6001600160401b038111610c9857601f01601f191660200190565b929192611116826110ef565b916111246040519384610cd3565b8294818452818301116104a1578281602093846000960137010152565b60606003198201126104a15760043561115981610495565b916024356001600160401b03928382116104a157806023830112156104a15781602461118a9360040135910161110a565b9160443590811681036104a15790565b6020906111b49282604051948386809551938492016106ba565b82019081520301902090565b346104a157602061121e61ffff6111fd836111da36611141565b9490911660005260058252604060002082604051948386809551938492016106ba565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346104a15760003660031901126104a157602060ff601154166040519015158152f35b346104a157611258366104e0565b919294939030330361127c576105d96112769261001997369161110a565b9261469e565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126104a1576004356112e881610895565b6024356112f481610495565b604435916084356001600160401b0381116104a157602061ffff61132b600080516020615a18833981519152933690600401610c31565b9361139e853561133a81610895565b6113586105d2868901359861134e8a610895565b60408101906149b5565b611362818a6151e9565b611377611370606435615386565b5085615590565b97611383891515614c23565b61139561138f8a6152ec565b8c6153bd565b9234938b614cc3565b6040519485526001600160a01b0316941692a4005b346104a15760203660031901126104a1576004356113d081610895565b60018060a01b031660005260086020526020604060002054604051908152f35b346104a1576000806003193601126107f35761140a612fe4565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561147b575b602083101461146557565b634e487b7160e01b600052602260045260246000fd5b91607f169161145a565b90600092918054916114968361144b565b9182825260019384811690816000146114f857506001146114b8575b50505050565b90919394506000526020928360002092846000945b8386106114e45750505050010190388080806114b2565b8054858701830152940193859082016114cd565b9294505050602093945060ff191683830152151560051b010190388080806114b2565b906104b161152f9260405193848092611485565b0383610cd3565b346104a15760203660031901126104a15761ffff60043561155681610495565b16600052600160205261076e610f7c611579604060002060405192838092611485565b6040519182916020835260208301906106dd565b60e03660031901126104a1576004356115a581610895565b6024356115b181610495565b604435916001600160401b03906084358281116104a1576115d69036906004016104b3565b91909260a43591818316918284036104a15760c4359081116104a157611600903690600401610c31565b9261163784359561161087610895565b61162f61162560208801359761134e89610895565b999092369161110a565b97369161110a565b9460ff6006541660001461172a5760228651106116e5578560209561139561139e946116b38c6116a061ffff9a8b6022600080516020615a188339815191529f0151931660005260028d5261169a60406000206001600052602052604060002090565b5461306e565b906116ac82151561523e565b101561528a565b6116c86116c1606435615386565b5088615590565b9a6116d48c1515614c23565b8d6116de8d6152ec565b903361544a565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b94809493505161175757600080516020615a188339815191529460209461ffff9461139561139e946116b3565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b610100806003193601126104a157602435906117c682610895565b6001600160401b036044358181116104a1576117e6903690600401610c3f565b926064359182116104a1576100199361186e61186361180c61187c953690600401610c31565b61185161181836610c5e565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b03166044890152606488015261012487019061387c565b85810360231901608487015290613848565b9160a484019061392d565b03601f198101835282610cd3565b6140aa565b346104a15760203660031901126104a15760043561189e81610895565b60018060a01b031660005260136020526020604060002054604051908152f35b346104a15760003660031901126104a157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a15760403660031901126104a157602061121e60043561191e81610495565b61ffff6024359161192e83610495565b166000526002835260406000209061ffff16600052602052604060002090565b346104a15760003660031901126104a1576000546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a15760043561199481610895565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d760206119bf610a75565b926119c8612fe4565b6119d0614279565b60009081526010835260408082206001600160a01b03841683526020529020611a079085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104a15760003660031901126104a1576004546040516001600160a01b039091168152602090f35b9181601f840112156104a1578235916001600160401b0383116104a1576020808501946101a085020101116104a157565b60a03660031901126104a157600435611a8e81610495565b6001600160401b03906024358281116104a157611aaf9036906004016104b3565b90916064358481116104a157611ac9903690600401610c31565b936084359081116104a1576100199461ffff94611b9494611b85611b24611af761186e963690600401611a45565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613827565b60443560648801526060611b7560231996878a85030160848b01528035611b4a81610895565b6001600160a01b0390811685526020820135611b6581610895565b16602085015260408101906137f6565b9190928160408201520191613827565b928584030160a4860152613bbd565b61421c565b346104a1576000806003193601126107f35760405181600c54611bbb8161144b565b808452906001908181169081156107cb5750600114611be45761076e8461076281880382610cd3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c2a575050508161076e936107629282010193610752565b8054858501870152928501928101611c0e565b346104a157602060ff611c7c61ffff6111fd84611c5936611141565b9490911660005260078252604060002082604051948386809551938492016106ba565b54166040519015158152f35b346104a15760203660031901126104a15761ffff600435611ca881610495565b166000526001602052610f7c611cc8604060002060405192838092611485565b805115611ce65761076281611ce061076e93516144b8565b906157d0565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104a15760403660031901126104a157600435611d4881610895565b60243590336000526009602052611d758160406000209060018060a01b0316600052602052604060002090565b5491808310611d9657611d8a92039033613236565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104a15760e03660031901126104a157600435611e0681610495565b6001600160401b03906064358281116104a157611e279036906004016104b3565b60849291923584811681036104a157611e3e610a84565b9160c4359586116104a157611e5a611e6a9636906004016104b3565b95909460443590602435906149e7565b60408051928352602083019190915290f35b346104a157611e8a36610f0c565b90611e93612fe4565b60405192602092808385870137611ebf6034868381013060601b88820152036014810188520186610cd3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c9857611ef983611ef3865461144b565b86614464565b80601f8411600114611f69575091808092611f589695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611f5e575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611f3a565b91939498601f198416611f8187600052602060002090565b938a905b828210611fe8575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611f5898969410611fcf575b505050811b019055611f4c565b015160001960f88460031b161c19169055388080611fc2565b808886978294978701518155019601940190611f85565b346104a15760403660031901126104a1576108f560043561201f81610895565b602435903361312e565b6101e09060831901126104a157608490565b908160a09103126104a15790565b6102c03660031901126104a15760043561206281610895565b60243561206e81610895565b6044359161207b83610495565b6120836108b3565b9261208d36612029565b6001600160401b0394610264358681116104a1576120af903690600401611a45565b929091610284358881116104a1576120cb90369060040161203b565b946102a4359889116104a1576120e86100199936906004016104b3565b989097613d48565b346104a15760403660031901126104a15760243561210d81610895565b612115612fe4565b60008080808094600435905af161212a613785565b50156121335780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760403660031901126104a157602060ff611c7c6024356121d081610895565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346104a15760203660031901126104a1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561223681610895565b61223e612fe4565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104a157600490565b60c0906101231901126104a15761012490565b610220806003193601126104a1576122a136612266565b6122aa36610c0f565b916122b436612277565b906001600160401b03906101e4358281116104a1576122d7903690600401611a45565b90916102049384359081116104a1576122f49036906004016104b3565b94909560405198899863602b546f60e11b60208b0152803561231581610895565b6001600160a01b0390811660248c015280602083013561233481610895565b1660448c0152604082013560648c0152606082013560848c0152608082013561235c81610895565b1660a48b015260a0013560c48a015260e489016123789161401e565b610144880161238691614041565b86015261024485019061239892613bbd565b90602319848303016102248501526123af92613827565b03601f19810182526123c19082610cd3565b61001990614176565b346104a15760003660031901126104a15760206040516127108152f35b346104a15760803660031901126104a15760043561240481610495565b60243561241081610495565b6064356001600160401b0381116104a15761242f9036906004016104b3565b9092612439612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104a157600080946124b0604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613827565b03925af1801561088c576124c057005b806124cd61001992610c85565b806106af565b346104a15760003660031901126104a157600e546040516001600160a01b039091168152602090f35b612505366104e0565b9161ffff8694929616600052600560205261254c81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b5491821561260e576125fd84836125f67fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125e2846125ca8e8a8f6126099f908f6125b0906125a36125c49436908d61110a565b6020815191012014614928565b61ffff166000526005602052604060002090565b9161490f565b906001600160401b0316600052602052604060002090565b556125ee36878d61110a565b93369161110a565b918861469e565b6040519586958661497e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346104a15760e03660031901126104a15760043561267c81610895565b60243561268881610895565b6044359060643592612698610d14565b9380421161277b576127636127769161273d6100199761274b6126d68760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610cd3565b61275e60c4359360a4359351902061373e565b613445565b6001600160a01b038381169116146133f9565b613236565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104a15760003660031901126104a157600d546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a157602061121e60043561280b81610895565b6024359061281882610895565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760603660031901126104a1576004356128a581610495565b6024356128b181610495565b604435916128bd612fe4565b8215612938576126097f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129128560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104a15760003660031901126104a157602060405160018152f35b90816101c09103126104a15790565b6101403660031901126104a1576004356129b981610895565b6024356129c581610895565b604435916129d283610495565b6129da6108b3565b6001600160401b0393906084358581116104a1576129fc9036906004016104b3565b90612a0636610c20565b92610104358881116104a157612a20903690600401612991565b94610124359889116104a157612a3d610019993690600401611a45565b989097613f5b565b346104a15760203660031901126104a1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612a81610a93565b612a89612fe4565b151560ff196006541660ff821617600655604051908152a1005b346104a1576101003660031901126104a157600435612ac181610495565b6001600160401b03906024358281116104a157612ae29036906004016104b3565b91906044359084821682036104a157608435612afd81610895565b60c4359586116104a157612b186100199636906004016104b3565b94909360e4359660a4359460643593614add565b346104a157612b3a36610f0c565b9190612b44612fe4565b60009161ffff81168352600160209080825260408520916001600160401b038711610c9857612b7d87612b77855461144b565b85614464565b8590601f8811600114612be45750918680879893611f58957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612bd9575b501b906000198460031b1c191617905560405193849384614449565b880135925038612bbd565b90601f198816612bf985600052602060002090565b9288905b828210612c5f575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611f58969410612c45575b505082811b019055611f4c565b870135600019600386901b60f8161c191690553880612c38565b808685968294968c01358155019501930190612bfd565b346104a15760403660031901126104a157602060ff611c7c602435612c9a81610895565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a157602060ff600654166040519015158152f35b346104a15760403660031901126104a157600435612d0081610895565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612d2b610a75565b92612d34612fe4565b612d3c614279565b6000908152600f835260408082206001600160a01b03841683526020529020611a079085906119f6565b346104a15760203660031901126104a157600435612d8381610895565b612d8b612fe4565b6001600160a01b039081168015612dd957600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104a15760803660031901126104a157600435612e4a81610495565b60243590612e5782610495565b612e62604435610895565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c5761076e91600091612ee0575b5060405191829182610702565b612efb913d8091833e612ef38183610cd3565b810190614413565b38612ed3565b346104a15760203660031901126104a157612f1a610a93565b612f2f60018060a01b03600e541633146137b5565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104a15760203660031901126104a157600435612f9781610895565b612f9f612fe4565b6001600160a01b0316612fb38115156137b5565b600e80546001600160a01b031916919091179055005b346104a15760003660031901126104a1576020604051308152f35b6000546001600160a01b03163303612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610c0a57565b6051019081605111610c0a57565b91908201809211610c0a57565b1561308257565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156130da57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156131e3576131c882600080516020615a38833981519152946131de94169661316888151561307b565b6001600160a01b03811660009081526008602052604090206131ad90859054613193828210156130d3565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156133105782169384156132c057806132af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946132986131de9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016133995750505050565b8084106133b4576133ab930391613236565b388080806114b2565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561340057565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107139391613454936135ac565b919091613481565b634e487b7160e01b600052602160045260246000fd5b6005111561347c57565b61345c565b61348a81613472565b806134925750565b61349b81613472565b600181036134e75760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6134f081613472565b6002810361353d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613549600392613472565b1461355057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116136185791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561088c5781516001600160a01b03811615613612579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613715575b1561367f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261370f81610c9d565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613656565b613746613624565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610c985760405251902090565b3d156137b0573d90613796826110ef565b916137a46040519384610cd3565b82523d6000602084013e565b606090565b156137bc57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156104a15701602081359101916001600160401b0382116104a15781360383136104a157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611b7561071393803561385d81610895565b6001600160a01b031684526020818101359085015260408101906137f6565b906107139082358152602083013561389381610495565b61ffff809116602083015260408401356138ac81610495565b16604082015260608301356138c081610895565b6001600160a01b0316606082015260c0806139106138f56138e460808801886137f6565b60e0608088015260e0870191613827565b61390260a08801886137f6565b9086830360a0880152613827565b9401359161391d83610895565b6001600160a01b03909216910152565b6060908181359161393d83610895565b6001600160a01b03928316855282602082013561395981610895565b16602086015282604082013561396e81610895565b166040860152013561397f81610895565b16910152565b939490929596613a0a9298976139fa6139ef6139dc60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613848565b6023198d8203810160a48f01529961387c565b9360c48c019061392d565b868a8403016101448b0152613827565b92868403016101648701528180865194858152019501936000915b848310613a4d575050505050509061187c81613a499303601f198101835282610cd3565b5050565b909192939495846101a06001928951613a6882825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613a25565b35906001600160801b03821682036104a157565b60808091613b3581610aa2565b151584526020810135613b4781610895565b6001600160a01b031660208501526000196001831b0180613b6a60408401613b14565b166040860152613b7c60608301613b14565b1660608501520135910152565b60408091613b9681610aa2565b151584526020810135613ba881610895565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613bdb575050505090565b9091929380613bf5600192613bef88610aa2565b15159052565b613c0b613c03848801610aa2565b151582850152565b613c236040613c1b818901610aa2565b151590830152565b613c3d6060613c338189016104a6565b61ffff1690830152565b613c5c6080613c4d8189016108c0565b6001600160a01b031690830152565b613c6c60a0613c1b818901610aa2565b613c7c60c0613c4d8189016108c0565b613c8c60e0613c4d8189016108c0565b61010080870135908201526101208087013590820152613cbc610140613cb3818901610d24565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613bcd565b9060a0613d3861071393613cf681610aa2565b1515845260208101356020850152613d1060408201610aa2565b1515604085015261ffff6060820135613d2881610495565b16606085015260808101906137f6565b9190928160808201520191613827565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613d9782610aa2565b151560a4890152602082013560c4890152604082013560e48901526060820135613dc081610895565b16610104880152613dd3608082016108c0565b6001600160a01b0316610124880152613dee60a08201610aa2565b151561014488015260c0810135610164880152613e12610184880160e08301613b28565b613e259061022488019061018001613b89565b61028486016102c090526102e4860190613e3e92613bbd565b916023199283868203016102a4870152613e5791613ce3565b91848303016102c4850152613e6b92613827565b03601f1981018252613e7d9082610cd3565b613a49906141c9565b9035609e19823603018112156104a1570190565b9061071391613eac82613bef83610aa2565b60208101356020830152613ece613ec560408301610aa2565b15156040840152565b60608101356060830152613ef0613ee760808301610aa2565b15156080840152565b60a081013560a0830152613f0a60c0830160c08301613b89565b613f1b610120808401908301613b89565b613f3e610180613f2d81840184613e86565b906101c08091860152840190613ce3565b91613f4f6101a09283810190613e86565b91818403910152613ce3565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613fb691610164890191613827565b93818135613fc381610895565b1660c4880152816020820135613fd881610895565b1660e488015260400135613feb81610895565b1661010486015260231992838682030161012487015261400a91613e9a565b9184830301610144850152613e6b92613bbd565b6040809161ffff813561403081610495565b1684526020810135613ba881610895565b60a0809161404e81610aa2565b15158452602081013561406081610895565b600180841b03809116602086015261ffff604083013561407f81610495565b16604086015260608201356060860152608082013561409d81610895565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b90821580614130575b61410c57565b6134e361411883614340565b60405162461bcd60e51b815291829160048301610702565b506001614106565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b6008111561347c57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c576000906142cf575b61ffff91501690565b6020823d8211614303575b816142e760209383610cd3565b810103126107f3575061ffff90516142fe81610495565b6142c6565b3d91506142da565b90929192614318816110ef565b916143266040519384610cd3565b8294828452828201116104a15760206104b19301906106ba565b6044815110614391576004810151810190602081602484019303126104a1576024810151906001600160401b0382116104a1570190806043830112156104a15760248201516107139260440161430b565b5060405161439e81610cb8565b600a8152695553444f3a206461746160b01b602082015290565b156143bf57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104a1578051906001600160401b0382116104a157019080601f830112156104a15781516107139260200161430b565b60409061ffff61071395931681528160208201520191613827565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b601319810191908211610c0a57565b605019810191908211610c0a57565b92909161453a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906145348261273d61451360a483018a6106dd565b6001600160401b0388166064840152828103602319016084840152886106dd565b306159cc565b939015614549575b5050505050565b6145529461455c565b3880808080614542565b91936145f97fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614607939561ffff815160208301209616958660005260056020526145c0836111fd60208b604060002082604051948386809551938492016106ba565b556001600160401b036145e5604051988998895260a060208a015260a08901906106dd565b9216604087015285820360608701526106dd565b9083820360808501526106dd565b0390a1565b90604051604081018181106001600160401b03821117610c985760405280925460ff811690600882101561347c5790825260d81b6001600160e01b03191660209190910152565b91610713959361ffff61468a926001600160401b039460018060a01b0316865216602085015260a0604085015260a08401906106dd565b9316606082015260808184039101526106dd565b9291906146aa8361597f565b6146c86146c182600052601c602052604060002090565b5460ff1690565b6146d18161426f565b1561482a57936146f66146f16104b196600052601c602052604060002090565b61460c565b80516147018161426f565b60208201516001600160e01b0319169180519061471d8261426f565b6147268261426f565b60009160050361477557505060185461477090614753906001600160a01b03165b6001600160a01b031690565b925b61273d88888888604051988996602088015260248701614653565b61489f565b600381516147828161426f565b61478b8161426f565b036147b1575050601654614770906147ab906001600160a01b0316614747565b92614755565b600781516147be8161426f565b6147c78161426f565b036147ec575050601a54614770906147e7906001600160a01b0316614747565b6147ab565b600190516147f98161426f565b6148028161426f565b036148215750601b54614770906147e7906001600160a01b0316614747565b614770906147ab565b5061483d61483784615924565b60ff1690565b8061484e575050506104b191614e38565b60010361485e576104b193615038565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b9492939194600881101561347c576000908152601260205260409020546001600160a01b0316801561413857816000929160208493519201905af4926148e3613785565b93158080614907575b6148fb57614549575050505050565b6134e361411886614340565b5060006148ec565b6020919283604051948593843782019081520301902090565b1561492f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916149aa9060609461ffff6001600160401b039499989799168552608060208601526080850191613827565b951660408201520152565b903590601e19813603018212156104a157018035906001600160401b0382116104a1576020019181360383136104a157565b9491959897906116de614a10604099614a08614a1697614a3399369161110a565b94369161110a565b976152ec565b928451968794859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561088c576000908193614a7657509190565b905061054191925060403d8111610bac57610b9d8183610cd3565b93969491614abf9061071399979461ffff6001600160401b039416875260c0602088015260c0870191613827565b961660408401526060830152608082015260a0818503910152613827565b91969792989594939094303303614b8457614af990853061571c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156104a1576000988995614b67936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614a91565b0393f1801561088c57614b775750565b806124cd6104b192610c85565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104a1576020825192015190565b9192610713959361ffff614c0e9316845260018060a01b0316602084015260a0604084015260a08301906106dd565b921515606082015260808184039101526106dd565b15614c2a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614c9061071397959361ffff614c9e9416865260c0602087015260c08601906106dd565b9084820360408601526106dd565b6001600160a01b0391821660608401529316608082015280830360a0909101526106dd565b94614cec9193929561ffff81166000526001602052614cf3604060002060405194858092611485565b0384610cd3565b825115614d6b57614d05855182614dc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104a157600096614d5a91604051998a988997889662c5803160e81b885260048801614c6b565b03925af1801561088c57614b775750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614e2e575b11614dea57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614de3565b9060ff614e4482615924565b161580614f9f575b614e5590615403565b614e67614e61826158d4565b9161596f565b90916001600160a01b039182841615614f95575b614eaf906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615373565b918316928315614f50577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91614f1061ffff92614ef6614ef187600a5461306e565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020615a3883398151915260405180614f3b89829190602083019252565b0390a3604051938452169180602081016131de565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614e7b565b508051602914614e4c565b98979692936001600160401b03614fdc60e0989461ffff6150089995168d5260208d61010091829101528d01906106dd565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526106dd565b930152565b6001600160401b0361502d604093969594966060845260608401906106dd565b951660208201520152565b9091615043846154b7565b909161506d6146c1876125ca6150678b61ffff166000526007602052604060002090565b8c61119a565b916150a36001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615373565b9288888b831561519f575b505050853b1561515457946150f59694614534948a9461273d948d9960001461514d5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614faa565b901561514257509061513d61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461500d565b0390a2565b926104b1949261455c565b16926150d6565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614607915050565b906125ca6151d4926151ce896151b96151e1979b306156b9565b9961ffff166000526007602052604060002090565b9061119a565b805460ff19166001179055565b88888b6150ae565b60065460ff16156152365760228251106116e55761ffff60226104b193015191166000526002602052615229604060002060008052602052604060002090565b54906116ac82151561523e565b505161175757565b1561524557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561529157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561536e57046001600160401b0390818111615329571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6152d6565b81810292918115918404141715610c0a57565b7f0000000000000000000000000000000000000000000000000000000000000000801561536e57810690818103908111610c0a5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c985760405290565b1561540a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261071394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526154a781518092602086860191016106ba565b8101036051810184520182610cd3565b906154cf600160ff6154c885615924565b1614615403565b6154d8826158d4565b906154e28361596f565b9060498451106155535760498401519360518151106155175761551460518201519161550e81516144c7565b90615850565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615652575b801561560357816155d8846155cb60009560018060a01b03166000526008602052604060002090565b5461319382821015615662565b556155e683600a5403600a55565b604051838152600080516020615a3883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61565d833384613361565b6155a2565b1561566957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614f5057600a5490828201809211610c0a5760009261570d602092600080516020615a3883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6107139183916001600160a01b038116308114159081615748575b501561312e57610a22833383613361565b905033141538615737565b1561575a57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561579757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6157e4826157dd81613052565b1015615753565b6157f18282511015615790565b81615809575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061583d5750508252601f01601f191660405290565b9092835181526020809101930190615825565b61585d826157dd81613052565b615872815161586b84613060565b1115615790565b8161588a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106158c15750508252601f01601f191660405290565b90928351815260208091019301906158a9565b60218151106158e757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615934576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615517576029015190565b602081511061598f576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b90929160008091604051956159e087610c9d565b6096875282602088019560a036883760208451940192f1903d9060968211615a0e575b6000908286523e9190565b60969150615a0356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220edc1a250316bb6227c504304207571c9d1020270104a7df747c53b84c7b4730e64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BaseUSDOStorage.json b/src/artifacts/tapioca-bar/BaseUSDOStorage.json index 345058f9..02b5376a 100644 --- a/src/artifacts/tapioca-bar/BaseUSDOStorage.json +++ b/src/artifacts/tapioca-bar/BaseUSDOStorage.json @@ -80,63 +80,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -911,19 +854,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1084,19 +1014,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1709,8 +1626,8 @@ "type": "receive" } ], - "bytecode": "0x61010060409080825234620004e05760608162003f708038038091620000268285620004e5565b833981010312620004e05780516001600160a01b039182821691829003620004e057602080820151918483168303620004e05785015193808516809503620004e057620000726200051f565b906200007d6200051f565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e757600b54916001968784811c94168015620004d5575b89851014620004c1578190601f948581116200046d575b50899085831160011462000407578892620003fb575b5050600019600383901b1c191690871b17600b555b8051928311620003e757600c548681811c91168015620003dc575b88821014620003c857908183899594931162000370575b508391831160011462000305576004949291869183620002f9575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ef57908291899391620002a4575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d5551613a1f90816200055182396080518181816104970152818161075601528181610872015281816109ed01528181610ba0015281816118a901528181611a1a015281816121530152818161297a0152612dee015260a05181611342015260c051818181612bb401528181612ff80152818161326501526132fd015260e05181611ca10152f35b80929350858092503d8311620002e7575b620002c18183620004e5565b81010312620002e3575161ffff81168103620002e35787919061ffff620001c5565b5080fd5b503d620002b5565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200035757509683600498106200033d575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200032e565b8289015184558b978b9690940193928301920162000319565b9091929350600c86528786208380860160051c8201928a8710620003be575b9189918b97969594930160051c01915b828110620003af57505062000162565b8881558a96508991016200039f565b925081926200038f565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200045657505084116200043c575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200042d565b8385015186558d979095019493840193016200041a565b909150600b88528988208580850160051c8201928c8610620004b7575b918b91869594930160051c01915b828110620004a857505062000105565b8a81558594508b910162000498565b925081926200048a565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050957604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005095760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063940a1dc014610339578063950c8a741461033457806395d89b411461032f5780639bdb98121461032a5780639d3f4d1a146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e576121bd565b6120f1565b61203c565b612019565b611fe1565b611eb8565b611e33565b611dd1565b611db5565b611cd0565b611c8b565b611c41565b611c18565b611adb565b611ab2565b6119ce565b6119b1565b611941565b611909565b611893565b611869565b611707565b611678565b6115cc565b61152d565b61150f565b6114c4565b611420565b6113f7565b6113d9565b6108d3565b6113b0565b611366565b611328565b61110f565b6110bc565b610f86565b610f49565b610e6a565b610dd6565b610db3565b610d5f565b610c07565b610b86565b610b51565b610af5565b610a6b565b61096b565b610931565b6108f1565b61084d565b610812565b6107dd565b610731565b610651565b610594565b610480565b6004359061ffff821682036103d657565b600080fd5b6024359061ffff821682036103d657565b9181601f840112156103d6578235916001600160401b0383116103d657602083818601950101116103d657565b9060806003198301126103d65760043561ffff811681036103d657916001600160401b03906024358281116103d65781610455916004016103ec565b9390939260443581811681036103d657926064359182116103d65761047c916004016103ec565b9091565b346103d65761048e36610419565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054f5761051461051c926100199761050d6104f36104ee8a61ffff166000526001602052604060002090565b61109f565b8051908184149182610545575b5081610522575b5061259a565b3691610c8f565b923691610c8f565b9261270d565b905061052f368486610c8f565b6020815191012090602081519101201438610507565b1515915038610500565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d65760203660031901126103d65760043563ffffffff60e01b81168091036103d657602090631f7ecdf760e01b81149081156105d9575b506040519015158152f35b6301ffc9a760e01b149050386105ce565b60009103126103d657565b60005b8381106106085750506000910152565b81810151838201526020016105f8565b90602091610631815180928185528580860191016105f5565b601f01601f1916010190565b90602061064e928181520190610618565b90565b346103d65760008060031936011261072e5760405181600b5461067381610fcf565b8084529060019081811690811561070657506001146106ad575b6106a98461069d81880382610c51565b6040519182918261063d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f357505050816106a99361069d928201019361068d565b80548585018701529285019281016106d7565b6106a9965061069d9450602092508593915060ff191682840152151560051b8201019361068d565b80fd5b346103d6576000602036600319011261072e5761074c6103c5565b6107546121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c3576107b7575080f35b6107c090610c39565b80f35b612653565b5080fd5b6001600160a01b038116036103d657565b346103d65760403660031901126103d6576108076004356107fd816107cc565b60243590336123f1565b602060405160018152f35b346103d65760403660031901126103d65761ffff61082e6103c5565b6108366121d8565b166000526003602052602435604060002055600080f35b346103d6576000602036600319011261072e576108686103c5565b6108706121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c3576107b7575080f35b346103d65760003660031901126103d6576020600a54604051908152f35b346103d65760603660031901126103d657610807600435610911816107cc565b60243561091d816107cc565b6044359161092c83338361250a565b612322565b346103d65760003660031901126103d657602060405160128152f35b6064359081151582036103d657565b60a4359081151582036103d657565b346103d65760a03660031901126103d6576109846103c5565b61098c61094d565b90608435906001600160401b0382116103d6576109b261050d60409336906004016103ec565b906109e96109cc6109c4604435613263565b602435613332565b928451958694859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c3576000908192610a3a575b50604080519182526020820192909252f35b9050610a5d915060403d8111610a64575b610a558183610c51565b810190612afb565b9038610a28565b503d610a4b565b346103d65760403660031901126103d657600435610a88816107cc565b336000526009602052610a9f8160406000206118f2565b546024358101809111610ab65761080791336123f1565b612230565b9060406003198301126103d65760043561ffff811681036103d65791602435906001600160401b0382116103d65761047c916004016103ec565b346103d657602061ffff610b42610b0b36610abb565b9390911660005260018452610b2d610b34604060002060405192838092611009565b0382610c51565b848151910120923691610c8f565b82815191012014604051908152f35b346103d65760203660031901126103d65761ffff610b6d6103c5565b1660005260036020526020604060002054604051908152f35b346103d657610b9436610abb565b9190610b9e6121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d657604051928380926342d65a8d60e01b825281610bf56000988997889460048501612680565b03925af180156107c3576107b7575080f35b346103d65760003660031901126103d657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c4c57604052565b610c23565b601f909101601f19168101906001600160401b03821190821017610c4c57604052565b6001600160401b038111610c4c57601f01601f191660200190565b929192610c9b82610c74565b91610ca96040519384610c51565b8294818452818301116103d6578281602093846000960137010152565b60606003198201126103d65760043561ffff811681036103d657916001600160401b0391602435908382116103d657806023830112156103d657816024610d1293600401359101610c8f565b9160443590811681036103d65790565b602090610d3c9282604051948386809551938492016105f5565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346103d6576020610daa61ffff610d9c83610d7936610cc6565b9490911660005260058252604060002082604051948386809551938492016105f5565b820190815203019020610d48565b54604051908152f35b346103d65760003660031901126103d657602060ff601154166040519015158152f35b346103d657610de436610419565b9192949390303303610e0857610514610e0292610019973691610c8f565b92612b55565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d65790565b60a03660031901126103d657600435610e82816107cc565b610e8a6103db565b604435916084356001600160401b0381116103d657602061ffff610ec160008051602061392a833981519152933690600401610e5c565b93610f348535610ed0816107cc565b610eee61050d8689013598610ee48a6107cc565b60408101906128f8565b610ef8818a613165565b610f0d610f066064356132fb565b5085613503565b97610f19891515612d0a565b610f2b610f258a613263565b8c613332565b9234938b612daa565b6040519485526001600160a01b0316941692a4005b346103d65760203660031901126103d657600435610f66816107cc565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d65760008060031936011261072e57610fa06121d8565b80546001600160a01b03198116825581906001600160a01b031660008051602061398a8339815191528280a380f35b90600182811c92168015610fff575b6020831014610fe957565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fde565b906000929180549161101a83610fcf565b91828252600193848116908160001461107c575060011461103c575b50505050565b90919394506000526020928360002092846000945b838610611068575050505001019038808080611036565b805485870183015294019385908201611051565b9294505050602093945060ff191683830152151560051b01019038808080611036565b906110ba6110b39260405193848092611009565b0383610c51565b565b346103d65760203660031901126103d65761ffff6110d86103c5565b1660005260016020526106a9610b2d6110fb604060002060405192838092611009565b604051918291602083526020830190610618565b60e03660031901126103d657600435611127816107cc565b61112f6103db565b604435916001600160401b03906084358281116103d6576111549036906004016103ec565b91909260a43591818316918284036103d65760c4359081116103d65761117e903690600401610e5c565b926111b584359561118e876107cc565b6111ad6111a3602088013597610ee4896107cc565b9990923691610c8f565b973691610c8f565b9460ff600654166000146112a75760228651106112635785602095610f2b610f34946112318c61121e61ffff9a8b602260008051602061392a8339815191529f0151931660005260028d5261121860406000206001600052602052604060002090565b54612262565b9061122a8215156131ba565b1015613203565b61124661123f6064356132fb565b5088613503565b9a6112528c1515612d0a565b8d61125c8d613263565b90336133c0565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516112d45760008051602061392a8339815191529460209461ffff94610f2b610f3494611231565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d65760003660031901126103d657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d65760403660031901126103d6576020610daa6113846103c5565b61ffff61138f6103db565b91166000526002835260406000209061ffff16600052602052604060002090565b346103d65760003660031901126103d6576000546040516001600160a01b039091168152602090f35b346103d65760003660031901126103d6576020601254604051908152f35b346103d65760003660031901126103d6576004546040516001600160a01b039091168152602090f35b346103d65760008060031936011261072e5760405181600c5461144281610fcf565b80845290600190818116908115610706575060011461146b576106a98461069d81880382610c51565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114b157505050816106a99361069d928201019361068d565b8054858501870152928501928101611495565b346103d657602060ff61150361ffff610d9c846114e036610cc6565b9490911660005260078252604060002082604051948386809551938492016105f5565b54166040519015158152f35b346103d65760003660031901126103d6576020601354604051908152f35b346103d65760203660031901126103d65761ffff6115496103c5565b166000526001602052610b2d611569604060002060405192838092611009565b8051156115875761069d816115816106a993516126ef565b9061371d565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d65760403660031901126103d6576004356115e9816107cc565b602435903360005260096020526116048160406000206118f2565b549180831061162557611619920390336123f1565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d65760e03660031901126103d6576116916103c5565b6001600160401b03906064358281116103d6576116b29036906004016103ec565b60849291923584811681036103d6576116c961095c565b9160c4359586116103d6576116e56116f59636906004016103ec565b959094604435906024359061292a565b60408051928352602083019190915290f35b346103d65761171536610abb565b9061171e6121d8565b6040519260209280838587013761174a6034868381013060601b88820152036014810188520186610c51565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610c4c57611787836117818654610fcf565b8661269b565b80601f84116001146117e55750918080926117d49695948a9b60008051602061394a8339815191529b946117da575b50501b916000199060031b1c19161790555b60405193849384612680565b0390a180f35b0151925038806117b6565b91939498601f1984166117fd87600052602060002090565b938a905b8282106118525750509160008051602061394a833981519152999a959391856117d498969410611839575b505050811b0190556117c8565b015160001960f88460031b161c1916905538808061182c565b808886978294978701518155019601940190611801565b346103d65760403660031901126103d657610807600435611889816107cc565b6024359033612322565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346103d65760403660031901126103d657602060ff61150360243561192d816107cc565b600435600052600f845260406000206118f2565b346103d65760203660031901126103d6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611981816107cc565b6119896121d8565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d65760003660031901126103d65760206040516127108152f35b346103d65760803660031901126103d6576119e76103c5565b6119ef6103db565b6064356001600160401b0381116103d657611a0e9036906004016103ec565b9092611a186121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d65760008094611a8f604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161265f565b03925af180156107c357611a9f57005b80611aac61001992610c39565b806105ea565b346103d65760003660031901126103d657600e546040516001600160a01b039091168152602090f35b611ae436610419565b9161ffff86949296166000526005602052611b1881604060002060206040518092878b833787820190815203019020610d48565b54918215611bc757611bb68483611baf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9b84611b968e8a8f611bc29f908f611b7c90611b6f611b909436908d610c8f565b602081519101201461286b565b61ffff166000526005602052604060002090565b91612852565b610d48565b55611ba736878d610c8f565b933691610c8f565b9188612b55565b604051958695866128c1565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d65760003660031901126103d657600d546040516001600160a01b039091168152602090f35b346103d65760403660031901126103d6576020610daa600435611c63816107cc565b60243590611c70826107cc565b6001600160a01b0316600090815260098452604090206118f2565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d65760603660031901126103d657611ce96103c5565b611cf16103db565b60443591611cfd6121d8565b8215611d7857611bc27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d528560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d65760003660031901126103d657602060405160018152f35b346103d65760203660031901126103d6576004358015158091036103d65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e1b6121d8565b60ff196006541660ff821617600655604051908152a1005b346103d6576101003660031901126103d657611e4d6103c5565b6001600160401b03906024358281116103d657611e6e9036906004016103ec565b91906044359084821682036103d657608435611e89816107cc565b60c4359586116103d657611ea46100199636906004016103ec565b94909360e4359660a4359460643593612a21565b346103d657611ec636610abb565b9190611ed06121d8565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610c4c57611f0c87611f068554610fcf565b8561269b565b8590601f8811600114611f6157509186808798936117d4956000805160206139ca8339815191529993611f56575b501b906000198460031b1c191617905560405193849384612680565b880135925038611f3a565b90601f198816611f7685600052602060002090565b9288905b828210611fca575050918893916000805160206139ca83398151915298996117d4969410611fb0575b505082811b0190556117c8565b870135600019600386901b60f8161c191690553880611fa3565b808685968294968c01358155019501930190611f7a565b346103d65760403660031901126103d657602060ff611503602435612005816107cc565b6004356000526010845260406000206118f2565b346103d65760003660031901126103d657602060ff600654166040519015158152f35b346103d65760203660031901126103d657600435612059816107cc565b6120616121d8565b6001600160a01b03908116801561209d57600080546001600160a01b031981168317825590921660008051602061398a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d65760803660031901126103d65761210a6103c5565b6121126103db565b9061211e6044356107cc565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c3576106a99160009161219c575b506040519182918261063d565b6121b7913d8091833e6121af8183610c51565b8101906125f5565b3861218f565b346103d65760003660031901126103d6576020604051308152f35b6000546001600160a01b031633036121ec57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ab657565b6051019081605111610ab657565b91908201809211610ab657565b1561227657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156122ce57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561239e57612383826000805160206139aa8339815191529461239994169661235c88151561226f565b61237d84612369836118d8565b54612376828210156122c7565b03916118d8565b556118d8565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156124b957821693841561246957806124587f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124536123999560018060a01b03166000526009602052604060002090565b6118f2565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b038216600052600960205261252a8160406000206118f2565b54926001840161253a5750505050565b8084106125555761254c9303916123f1565b38808080611036565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156125a157565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d6578051906001600160401b0382116103d6570181601f820112156103d657805161262781610c74565b926126356040519485610c51565b818452602082840101116103d65761064e91602080850191016105f5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61064e9593168152816020820152019161265f565b90601f81116126a957505050565b600091825260208220906020601f850160051c830194106126e5575b601f0160051c01915b8281106126da57505050565b8181556001016126ce565b90925082906126c5565b601319810191908211610ab657565b605019810191908211610ab657565b92909161277f5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906127798261276b61274a60a483018a610618565b6001600160401b038816606484015282810360231901608484015288610618565b03601f198101845283610c51565b306138cc565b93901561278e575b5050505050565b612797946127a1565b3880808080612787565b919361283f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561284d939561ffff8151602083012096169586600052600560205261280583610d9c60208b604060002082604051948386809551938492016105f5565b55612822604051978897885260a0602089015260a0880190610618565b6001600160401b0390921660408701528582036060870152610618565b908382036080850152610618565b0390a1565b6020919283604051948593843782019081520301902090565b1561287257565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6128e4939897969816845260806020850152608084019161265f565b6001600160401b0390951660408201520152565b903590601e19813603018212156103d657018035906001600160401b0382116103d6576020019181360383136103d657565b94919598979061125c61295360409961294b61295997612976993691610c8f565b943691610c8f565b97613263565b928451968794859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c35760009081936129b957509190565b905061047c91925060403d8111610a6457610a558183610c51565b9396949161064e98969361ffff6129f99316865260c0602087015260c086019161265f565b6001600160401b0390961660408401526060830152608082015280840360a09091015261265f565b91969792989594939094303303612ab657612a3d908530613669565b60405181815290946001600160a01b03169390849061ffff85169060008051602061396a83398151915290602090a3833b156103d6576000988995612a99936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016129d4565b0393f180156107c357612aa95750565b80611aac6110ba92610c39565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d6576020825192015190565b919261064e959361ffff612b409316845260018060a01b0316602084015260a0604084015260a0830190610618565b92151560608201526080818403910152610618565b92919060ff612b6384613871565b1680612cb65750505060ff612b7782613871565b161580612cab575b612b8890613379565b612b9a612b9482613821565b916138bc565b90916001600160a01b039182841615612ca1575b612be2907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166132e8565b918316928315612c5c5760008051602061396a83398151915291612c1c61ffff92612c17612c1287600a54612262565b600a55565b6118d8565b8481540190558460006000805160206139aa83398151915260405180612c4789829190602083019252565b0390a360405193845216918060208101612399565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612bae565b508051602914612b7f565b600103612cc6576110ba93612fac565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15612d1157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612d7761064e97959361ffff612d859416865260c0602087015260c0860190610618565b908482036040860152610618565b6001600160a01b0391821660608401529316608082015280830360a090910152610618565b94612dd39193929561ffff81166000526001602052612dda604060002060405194858092611009565b0384610c51565b825115612e5257612dec855182612eb0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d657600096612e4191604051998a988997889662c5803160e81b885260048801612d52565b03925af180156107c357612aa95750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612f15575b11612ed157565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612eca565b9897969293612f4960e0979361ffff612f7e9894168c5260208c61010091829101528c0190610618565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610618565b930152565b612f9b60409295949395606083526060830190610618565b94600180841b031660208201520152565b9091612fb78461342a565b9091612fe8612fe187611b96612fdb8b61ffff166000526007602052604060002090565b8c610d22565b5460ff1690565b916001600160401b039161301f907f00000000000000000000000000000000000000000000000000000000000000009084166132e8565b9288888b831561311b575b505050853b156130d057946130719694612779948a9461276b948d996000146130c95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612f1f565b90156130be5750906130b961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684612f83565b0390a2565b926110ba94926127a1565b1692613052565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061284d915050565b90611b966131509261314a8961313561315d979b30613619565b9961ffff166000526007602052604060002090565b90610d22565b805460ff19166001179055565b88888b61302a565b60065460ff16156131b25760228251106112635761ffff60226110ba930151911660005260026020526131a5604060002060008052602052604060002090565b549061122a8215156131ba565b50516112d457565b156131c157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561320a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156132e3576001600160401b039190048181116132a1571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b61324d565b81810292918115918404141715610ab657565b7f000000000000000000000000000000000000000000000000000000000000000080156132e357810690818103908111610ab65791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610c4c5760405290565b1561338057565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064e94604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b16606983015261341a81518092602086860191016105f5565b8101036051810184520182610c51565b90613442600160ff61343b85613871565b1614613379565b61344b82613821565b90613455836138bc565b9060498451106134c657604984015193605181511061348a5761348760518201519161348181516126fe565b9061379d565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036135b2575b801561356357816135388461352b6000956118d8565b54612376828210156135c2565b5561354683600a5403600a55565b6040518381526000805160206139aa83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6135bd83338461250a565b613515565b156135c957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612c5c57600a5490828201809211610ab65760009261365a6020926000805160206139aa83398151915294600a556118d8565b818154019055604051908152a3565b61064e9183916001600160a01b038116308114159081613695575b50156123225761092c83338361250a565b905033141538613684565b156136a757565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156136e457565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6137318261372a81612246565b10156136a0565b61373e82825110156136dd565b81613756575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061378a5750508252601f01601f191660405290565b9092835181526020809101930190613772565b6137aa8261372a81612246565b6137bf81516137b884612254565b11156136dd565b816137d7575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061380e5750508252601f01601f191660405290565b90928351815260208091019301906137f6565b602181511061383457602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613881576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061348a576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c4c5783926040526096875282602088019560a036883760208451940192f1903d9060968211613920575b6000908286523e9190565b6096915061391556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212201713392485520d0ab14bafefd1c0a1ae75b11ee3fe4c39e5bb6f142aee4d19c564736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063940a1dc014610339578063950c8a741461033457806395d89b411461032f5780639bdb98121461032a5780639d3f4d1a146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e576121bd565b6120f1565b61203c565b612019565b611fe1565b611eb8565b611e33565b611dd1565b611db5565b611cd0565b611c8b565b611c41565b611c18565b611adb565b611ab2565b6119ce565b6119b1565b611941565b611909565b611893565b611869565b611707565b611678565b6115cc565b61152d565b61150f565b6114c4565b611420565b6113f7565b6113d9565b6108d3565b6113b0565b611366565b611328565b61110f565b6110bc565b610f86565b610f49565b610e6a565b610dd6565b610db3565b610d5f565b610c07565b610b86565b610b51565b610af5565b610a6b565b61096b565b610931565b6108f1565b61084d565b610812565b6107dd565b610731565b610651565b610594565b610480565b6004359061ffff821682036103d657565b600080fd5b6024359061ffff821682036103d657565b9181601f840112156103d6578235916001600160401b0383116103d657602083818601950101116103d657565b9060806003198301126103d65760043561ffff811681036103d657916001600160401b03906024358281116103d65781610455916004016103ec565b9390939260443581811681036103d657926064359182116103d65761047c916004016103ec565b9091565b346103d65761048e36610419565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054f5761051461051c926100199761050d6104f36104ee8a61ffff166000526001602052604060002090565b61109f565b8051908184149182610545575b5081610522575b5061259a565b3691610c8f565b923691610c8f565b9261270d565b905061052f368486610c8f565b6020815191012090602081519101201438610507565b1515915038610500565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d65760203660031901126103d65760043563ffffffff60e01b81168091036103d657602090631f7ecdf760e01b81149081156105d9575b506040519015158152f35b6301ffc9a760e01b149050386105ce565b60009103126103d657565b60005b8381106106085750506000910152565b81810151838201526020016105f8565b90602091610631815180928185528580860191016105f5565b601f01601f1916010190565b90602061064e928181520190610618565b90565b346103d65760008060031936011261072e5760405181600b5461067381610fcf565b8084529060019081811690811561070657506001146106ad575b6106a98461069d81880382610c51565b6040519182918261063d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f357505050816106a99361069d928201019361068d565b80548585018701529285019281016106d7565b6106a9965061069d9450602092508593915060ff191682840152151560051b8201019361068d565b80fd5b346103d6576000602036600319011261072e5761074c6103c5565b6107546121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c3576107b7575080f35b6107c090610c39565b80f35b612653565b5080fd5b6001600160a01b038116036103d657565b346103d65760403660031901126103d6576108076004356107fd816107cc565b60243590336123f1565b602060405160018152f35b346103d65760403660031901126103d65761ffff61082e6103c5565b6108366121d8565b166000526003602052602435604060002055600080f35b346103d6576000602036600319011261072e576108686103c5565b6108706121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c3576107b7575080f35b346103d65760003660031901126103d6576020600a54604051908152f35b346103d65760603660031901126103d657610807600435610911816107cc565b60243561091d816107cc565b6044359161092c83338361250a565b612322565b346103d65760003660031901126103d657602060405160128152f35b6064359081151582036103d657565b60a4359081151582036103d657565b346103d65760a03660031901126103d6576109846103c5565b61098c61094d565b90608435906001600160401b0382116103d6576109b261050d60409336906004016103ec565b906109e96109cc6109c4604435613263565b602435613332565b928451958694859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c3576000908192610a3a575b50604080519182526020820192909252f35b9050610a5d915060403d8111610a64575b610a558183610c51565b810190612afb565b9038610a28565b503d610a4b565b346103d65760403660031901126103d657600435610a88816107cc565b336000526009602052610a9f8160406000206118f2565b546024358101809111610ab65761080791336123f1565b612230565b9060406003198301126103d65760043561ffff811681036103d65791602435906001600160401b0382116103d65761047c916004016103ec565b346103d657602061ffff610b42610b0b36610abb565b9390911660005260018452610b2d610b34604060002060405192838092611009565b0382610c51565b848151910120923691610c8f565b82815191012014604051908152f35b346103d65760203660031901126103d65761ffff610b6d6103c5565b1660005260036020526020604060002054604051908152f35b346103d657610b9436610abb565b9190610b9e6121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d657604051928380926342d65a8d60e01b825281610bf56000988997889460048501612680565b03925af180156107c3576107b7575080f35b346103d65760003660031901126103d657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c4c57604052565b610c23565b601f909101601f19168101906001600160401b03821190821017610c4c57604052565b6001600160401b038111610c4c57601f01601f191660200190565b929192610c9b82610c74565b91610ca96040519384610c51565b8294818452818301116103d6578281602093846000960137010152565b60606003198201126103d65760043561ffff811681036103d657916001600160401b0391602435908382116103d657806023830112156103d657816024610d1293600401359101610c8f565b9160443590811681036103d65790565b602090610d3c9282604051948386809551938492016105f5565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346103d6576020610daa61ffff610d9c83610d7936610cc6565b9490911660005260058252604060002082604051948386809551938492016105f5565b820190815203019020610d48565b54604051908152f35b346103d65760003660031901126103d657602060ff601154166040519015158152f35b346103d657610de436610419565b9192949390303303610e0857610514610e0292610019973691610c8f565b92612b55565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d65790565b60a03660031901126103d657600435610e82816107cc565b610e8a6103db565b604435916084356001600160401b0381116103d657602061ffff610ec160008051602061392a833981519152933690600401610e5c565b93610f348535610ed0816107cc565b610eee61050d8689013598610ee48a6107cc565b60408101906128f8565b610ef8818a613165565b610f0d610f066064356132fb565b5085613503565b97610f19891515612d0a565b610f2b610f258a613263565b8c613332565b9234938b612daa565b6040519485526001600160a01b0316941692a4005b346103d65760203660031901126103d657600435610f66816107cc565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d65760008060031936011261072e57610fa06121d8565b80546001600160a01b03198116825581906001600160a01b031660008051602061398a8339815191528280a380f35b90600182811c92168015610fff575b6020831014610fe957565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fde565b906000929180549161101a83610fcf565b91828252600193848116908160001461107c575060011461103c575b50505050565b90919394506000526020928360002092846000945b838610611068575050505001019038808080611036565b805485870183015294019385908201611051565b9294505050602093945060ff191683830152151560051b01019038808080611036565b906110ba6110b39260405193848092611009565b0383610c51565b565b346103d65760203660031901126103d65761ffff6110d86103c5565b1660005260016020526106a9610b2d6110fb604060002060405192838092611009565b604051918291602083526020830190610618565b60e03660031901126103d657600435611127816107cc565b61112f6103db565b604435916001600160401b03906084358281116103d6576111549036906004016103ec565b91909260a43591818316918284036103d65760c4359081116103d65761117e903690600401610e5c565b926111b584359561118e876107cc565b6111ad6111a3602088013597610ee4896107cc565b9990923691610c8f565b973691610c8f565b9460ff600654166000146112a75760228651106112635785602095610f2b610f34946112318c61121e61ffff9a8b602260008051602061392a8339815191529f0151931660005260028d5261121860406000206001600052602052604060002090565b54612262565b9061122a8215156131ba565b1015613203565b61124661123f6064356132fb565b5088613503565b9a6112528c1515612d0a565b8d61125c8d613263565b90336133c0565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516112d45760008051602061392a8339815191529460209461ffff94610f2b610f3494611231565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d65760003660031901126103d657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d65760403660031901126103d6576020610daa6113846103c5565b61ffff61138f6103db565b91166000526002835260406000209061ffff16600052602052604060002090565b346103d65760003660031901126103d6576000546040516001600160a01b039091168152602090f35b346103d65760003660031901126103d6576020601254604051908152f35b346103d65760003660031901126103d6576004546040516001600160a01b039091168152602090f35b346103d65760008060031936011261072e5760405181600c5461144281610fcf565b80845290600190818116908115610706575060011461146b576106a98461069d81880382610c51565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114b157505050816106a99361069d928201019361068d565b8054858501870152928501928101611495565b346103d657602060ff61150361ffff610d9c846114e036610cc6565b9490911660005260078252604060002082604051948386809551938492016105f5565b54166040519015158152f35b346103d65760003660031901126103d6576020601354604051908152f35b346103d65760203660031901126103d65761ffff6115496103c5565b166000526001602052610b2d611569604060002060405192838092611009565b8051156115875761069d816115816106a993516126ef565b9061371d565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d65760403660031901126103d6576004356115e9816107cc565b602435903360005260096020526116048160406000206118f2565b549180831061162557611619920390336123f1565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d65760e03660031901126103d6576116916103c5565b6001600160401b03906064358281116103d6576116b29036906004016103ec565b60849291923584811681036103d6576116c961095c565b9160c4359586116103d6576116e56116f59636906004016103ec565b959094604435906024359061292a565b60408051928352602083019190915290f35b346103d65761171536610abb565b9061171e6121d8565b6040519260209280838587013761174a6034868381013060601b88820152036014810188520186610c51565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610c4c57611787836117818654610fcf565b8661269b565b80601f84116001146117e55750918080926117d49695948a9b60008051602061394a8339815191529b946117da575b50501b916000199060031b1c19161790555b60405193849384612680565b0390a180f35b0151925038806117b6565b91939498601f1984166117fd87600052602060002090565b938a905b8282106118525750509160008051602061394a833981519152999a959391856117d498969410611839575b505050811b0190556117c8565b015160001960f88460031b161c1916905538808061182c565b808886978294978701518155019601940190611801565b346103d65760403660031901126103d657610807600435611889816107cc565b6024359033612322565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346103d65760403660031901126103d657602060ff61150360243561192d816107cc565b600435600052600f845260406000206118f2565b346103d65760203660031901126103d6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611981816107cc565b6119896121d8565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d65760003660031901126103d65760206040516127108152f35b346103d65760803660031901126103d6576119e76103c5565b6119ef6103db565b6064356001600160401b0381116103d657611a0e9036906004016103ec565b9092611a186121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d65760008094611a8f604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161265f565b03925af180156107c357611a9f57005b80611aac61001992610c39565b806105ea565b346103d65760003660031901126103d657600e546040516001600160a01b039091168152602090f35b611ae436610419565b9161ffff86949296166000526005602052611b1881604060002060206040518092878b833787820190815203019020610d48565b54918215611bc757611bb68483611baf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9b84611b968e8a8f611bc29f908f611b7c90611b6f611b909436908d610c8f565b602081519101201461286b565b61ffff166000526005602052604060002090565b91612852565b610d48565b55611ba736878d610c8f565b933691610c8f565b9188612b55565b604051958695866128c1565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d65760003660031901126103d657600d546040516001600160a01b039091168152602090f35b346103d65760403660031901126103d6576020610daa600435611c63816107cc565b60243590611c70826107cc565b6001600160a01b0316600090815260098452604090206118f2565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d65760603660031901126103d657611ce96103c5565b611cf16103db565b60443591611cfd6121d8565b8215611d7857611bc27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d528560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d65760003660031901126103d657602060405160018152f35b346103d65760203660031901126103d6576004358015158091036103d65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e1b6121d8565b60ff196006541660ff821617600655604051908152a1005b346103d6576101003660031901126103d657611e4d6103c5565b6001600160401b03906024358281116103d657611e6e9036906004016103ec565b91906044359084821682036103d657608435611e89816107cc565b60c4359586116103d657611ea46100199636906004016103ec565b94909360e4359660a4359460643593612a21565b346103d657611ec636610abb565b9190611ed06121d8565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610c4c57611f0c87611f068554610fcf565b8561269b565b8590601f8811600114611f6157509186808798936117d4956000805160206139ca8339815191529993611f56575b501b906000198460031b1c191617905560405193849384612680565b880135925038611f3a565b90601f198816611f7685600052602060002090565b9288905b828210611fca575050918893916000805160206139ca83398151915298996117d4969410611fb0575b505082811b0190556117c8565b870135600019600386901b60f8161c191690553880611fa3565b808685968294968c01358155019501930190611f7a565b346103d65760403660031901126103d657602060ff611503602435612005816107cc565b6004356000526010845260406000206118f2565b346103d65760003660031901126103d657602060ff600654166040519015158152f35b346103d65760203660031901126103d657600435612059816107cc565b6120616121d8565b6001600160a01b03908116801561209d57600080546001600160a01b031981168317825590921660008051602061398a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d65760803660031901126103d65761210a6103c5565b6121126103db565b9061211e6044356107cc565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c3576106a99160009161219c575b506040519182918261063d565b6121b7913d8091833e6121af8183610c51565b8101906125f5565b3861218f565b346103d65760003660031901126103d6576020604051308152f35b6000546001600160a01b031633036121ec57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ab657565b6051019081605111610ab657565b91908201809211610ab657565b1561227657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156122ce57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561239e57612383826000805160206139aa8339815191529461239994169661235c88151561226f565b61237d84612369836118d8565b54612376828210156122c7565b03916118d8565b556118d8565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156124b957821693841561246957806124587f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124536123999560018060a01b03166000526009602052604060002090565b6118f2565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b038216600052600960205261252a8160406000206118f2565b54926001840161253a5750505050565b8084106125555761254c9303916123f1565b38808080611036565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156125a157565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d6578051906001600160401b0382116103d6570181601f820112156103d657805161262781610c74565b926126356040519485610c51565b818452602082840101116103d65761064e91602080850191016105f5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61064e9593168152816020820152019161265f565b90601f81116126a957505050565b600091825260208220906020601f850160051c830194106126e5575b601f0160051c01915b8281106126da57505050565b8181556001016126ce565b90925082906126c5565b601319810191908211610ab657565b605019810191908211610ab657565b92909161277f5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906127798261276b61274a60a483018a610618565b6001600160401b038816606484015282810360231901608484015288610618565b03601f198101845283610c51565b306138cc565b93901561278e575b5050505050565b612797946127a1565b3880808080612787565b919361283f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561284d939561ffff8151602083012096169586600052600560205261280583610d9c60208b604060002082604051948386809551938492016105f5565b55612822604051978897885260a0602089015260a0880190610618565b6001600160401b0390921660408701528582036060870152610618565b908382036080850152610618565b0390a1565b6020919283604051948593843782019081520301902090565b1561287257565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6128e4939897969816845260806020850152608084019161265f565b6001600160401b0390951660408201520152565b903590601e19813603018212156103d657018035906001600160401b0382116103d6576020019181360383136103d657565b94919598979061125c61295360409961294b61295997612976993691610c8f565b943691610c8f565b97613263565b928451968794859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c35760009081936129b957509190565b905061047c91925060403d8111610a6457610a558183610c51565b9396949161064e98969361ffff6129f99316865260c0602087015260c086019161265f565b6001600160401b0390961660408401526060830152608082015280840360a09091015261265f565b91969792989594939094303303612ab657612a3d908530613669565b60405181815290946001600160a01b03169390849061ffff85169060008051602061396a83398151915290602090a3833b156103d6576000988995612a99936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016129d4565b0393f180156107c357612aa95750565b80611aac6110ba92610c39565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d6576020825192015190565b919261064e959361ffff612b409316845260018060a01b0316602084015260a0604084015260a0830190610618565b92151560608201526080818403910152610618565b92919060ff612b6384613871565b1680612cb65750505060ff612b7782613871565b161580612cab575b612b8890613379565b612b9a612b9482613821565b916138bc565b90916001600160a01b039182841615612ca1575b612be2907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166132e8565b918316928315612c5c5760008051602061396a83398151915291612c1c61ffff92612c17612c1287600a54612262565b600a55565b6118d8565b8481540190558460006000805160206139aa83398151915260405180612c4789829190602083019252565b0390a360405193845216918060208101612399565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612bae565b508051602914612b7f565b600103612cc6576110ba93612fac565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15612d1157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612d7761064e97959361ffff612d859416865260c0602087015260c0860190610618565b908482036040860152610618565b6001600160a01b0391821660608401529316608082015280830360a090910152610618565b94612dd39193929561ffff81166000526001602052612dda604060002060405194858092611009565b0384610c51565b825115612e5257612dec855182612eb0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d657600096612e4191604051998a988997889662c5803160e81b885260048801612d52565b03925af180156107c357612aa95750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612f15575b11612ed157565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612eca565b9897969293612f4960e0979361ffff612f7e9894168c5260208c61010091829101528c0190610618565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610618565b930152565b612f9b60409295949395606083526060830190610618565b94600180841b031660208201520152565b9091612fb78461342a565b9091612fe8612fe187611b96612fdb8b61ffff166000526007602052604060002090565b8c610d22565b5460ff1690565b916001600160401b039161301f907f00000000000000000000000000000000000000000000000000000000000000009084166132e8565b9288888b831561311b575b505050853b156130d057946130719694612779948a9461276b948d996000146130c95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612f1f565b90156130be5750906130b961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684612f83565b0390a2565b926110ba94926127a1565b1692613052565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061284d915050565b90611b966131509261314a8961313561315d979b30613619565b9961ffff166000526007602052604060002090565b90610d22565b805460ff19166001179055565b88888b61302a565b60065460ff16156131b25760228251106112635761ffff60226110ba930151911660005260026020526131a5604060002060008052602052604060002090565b549061122a8215156131ba565b50516112d457565b156131c157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561320a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156132e3576001600160401b039190048181116132a1571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b61324d565b81810292918115918404141715610ab657565b7f000000000000000000000000000000000000000000000000000000000000000080156132e357810690818103908111610ab65791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610c4c5760405290565b1561338057565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064e94604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b16606983015261341a81518092602086860191016105f5565b8101036051810184520182610c51565b90613442600160ff61343b85613871565b1614613379565b61344b82613821565b90613455836138bc565b9060498451106134c657604984015193605181511061348a5761348760518201519161348181516126fe565b9061379d565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036135b2575b801561356357816135388461352b6000956118d8565b54612376828210156135c2565b5561354683600a5403600a55565b6040518381526000805160206139aa83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6135bd83338461250a565b613515565b156135c957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612c5c57600a5490828201809211610ab65760009261365a6020926000805160206139aa83398151915294600a556118d8565b818154019055604051908152a3565b61064e9183916001600160a01b038116308114159081613695575b50156123225761092c83338361250a565b905033141538613684565b156136a757565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156136e457565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6137318261372a81612246565b10156136a0565b61373e82825110156136dd565b81613756575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061378a5750508252601f01601f191660405290565b9092835181526020809101930190613772565b6137aa8261372a81612246565b6137bf81516137b884612254565b11156136dd565b816137d7575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061380e5750508252601f01601f191660405290565b90928351815260208091019301906137f6565b602181511061383457602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613881576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061348a576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c4c5783926040526096875282602088019560a036883760208451940192f1903d9060968211613920575b6000908286523e9190565b6096915061391556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212201713392485520d0ab14bafefd1c0a1ae75b11ee3fe4c39e5bb6f142aee4d19c564736f6c63430008120033", + "bytecode": "0x61010060409080825234620004cd5760608162003fe28038038091620000268285620004d2565b833981010312620004cd5780516001600160a01b039182821691829003620004cd57602080820151918483168303620004cd5785015193808516809503620004cd57620000726200050c565b906200007d6200050c565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003d457600b54916001968784811c94168015620004c2575b89851014620004ae578190601f948581116200045a575b508990858311600114620003f4578892620003e8575b5050600019600383901b1c191690871b17600b555b8051928311620003d457600c548681811c91168015620003c9575b88821014620003b55790818389959493116200035d575b5083918311600114620002f2576004949291869183620002e6575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002dc5790829189939162000291575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551613aa490816200053e82396080518181816104770152818161073601528181610852015281816109cd01528181610b8c01528181611898015281816119ea0152818161219e01528181612a170152612ec4015260a0518161133a015260c051818181612c6a015281816130cf0152818161334001526133da015260e05181611ca70152f35b80929350858092503d8311620002d4575b620002ae8183620004d2565b81010312620002d0575161ffff81168103620002d05787919061ffff620001c5565b5080fd5b503d620002a2565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034457509683600498106200032a575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200031b565b8289015184558b978b9690940193928301920162000306565b9091929350600c86528786208380860160051c8201928a8710620003ab575b9189918b97969594930160051c01915b8281106200039c57505062000162565b8881558a96508991016200038c565b925081926200037c565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000443575050841162000429575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200041a565b8385015186558d9790950194938401930162000407565b909150600b88528988208580850160051c8201928c8610620004a4575b918b91869594930160051c01915b8281106200049557505062000105565b8a81558594508b910162000485565b9250819262000477565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004f657604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004f65760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103a057806301ffc9a71461039b57806306fdde031461039657806307e0db1714610391578063095ea7b31461038c5780630df374831461038757806310ddb1371461038257806318160ddd1461031e57806323b872dd1461037d578063313ce56714610378578063365260b414610373578063395093511461036e5780633d8b38f6146103695780633f1f4fa41461036457806342d65a8d1461035f578063447705151461035a5780634c42899a1461035a5780635b8c41e6146103555780635c975abb1461035057806366ad5c8a1461034b578063695ef6bf1461034657806370a0823114610341578063715018a61461033c5780637533d7881461033757806376203b4814610332578063857749b01461032d5780638cfd8f5c146103285780638da5cb5b146103235780639358928b1461031e578063950c8a741461031957806395d89b41146103145780639bdb98121461030f5780639f38369a1461030a578063a457c2d714610305578063a4c51df514610300578063a6c3d165146102fb578063a9059cbb146102f6578063b353aaa7146102f1578063ba03a8d7146102ec578063baf3292d146102e7578063c4461834146102e2578063cbed8b9c146102dd578063ce8849ed146102d8578063d1deba1f146102d3578063dbd01de1146102ce578063dd62ed3e146102c9578063de406577146102c4578063df2a5b3b146102bf578063e6a20ae6146102ba578063eab45d9c146102b5578063eaffd49a146102b0578063eb8d72b7146102ab578063ec6d062b146102a6578063ed629c5c146102a1578063f2fde38b1461029c578063f5ecbdbc146102975763fc0c546a0361000e57612208565b61213c565b612075565b612052565b612008565b611ebe565b611e39565b611dd7565b611dbb565b611cd6565b611c91565b611c37565b611c0e565b611aab565b611a82565b61199e565b611981565b611911565b6118c7565b611882565b611858565b6116d5565b611646565b611588565b6114e9565b61149e565b6113fa565b6113d1565b6108b3565b6113a8565b61135e565b611320565b611106565b6110b3565b610f6b565b610f2e565b610e4f565b610dbb565b610d98565b610d31565b610bf3565b610b72565b610b3d565b610ae1565b610a4b565b61094b565b610911565b6108d1565b61082d565b6107f2565b6107bd565b610711565b610631565b610574565b610460565b6004359061ffff821682036103b657565b600080fd5b6024359061ffff821682036103b657565b9181601f840112156103b6578235916001600160401b0383116103b657602083818601950101116103b657565b9060806003198301126103b65760043561ffff811681036103b657916001600160401b03906024358281116103b65781610435916004016103cc565b9390939260443581811681036103b657926064359182116103b65761045c916004016103cc565b9091565b346103b65761046e366103f9565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361052f576104f46104fc92610019976104ed6104d36104ce8a61ffff166000526001602052604060002090565b611096565b8051908184149182610525575b5081610502575b50612638565b3691610c79565b923691610c79565b926127ab565b905061050f368486610c79565b60208151910120906020815191012014386104e7565b15159150386104e0565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103b65760203660031901126103b65760043563ffffffff60e01b81168091036103b657602090631f7ecdf760e01b81149081156105b9575b506040519015158152f35b6301ffc9a760e01b149050386105ae565b60009103126103b657565b60005b8381106105e85750506000910152565b81810151838201526020016105d8565b90602091610611815180928185528580860191016105d5565b601f01601f1916010190565b90602061062e9281815201906105f8565b90565b346103b65760008060031936011261070e5760405181600b5461065381610fc6565b808452906001908181169081156106e6575060011461068d575b6106898461067d81880382610c3d565b6040519182918261061d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106d357505050816106899361067d928201019361066d565b80548585018701529285019281016106b7565b610689965061067d9450602092508593915060ff191682840152151560051b8201019361066d565b80fd5b346103b6576000602036600319011261070e5761072c6103a5565b610734612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107a357610797575080f35b6107a090610c25565b80f35b6126f1565b5080fd5b6001600160a01b038116036103b657565b346103b65760403660031901126103b6576107e76004356107dd816107ac565b6024359033612475565b602060405160018152f35b346103b65760403660031901126103b65761ffff61080e6103a5565b610816612223565b166000526003602052602435604060002055600080f35b346103b6576000602036600319011261070e576108486103a5565b610850612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107a357610797575080f35b346103b65760003660031901126103b6576020600a54604051908152f35b346103b65760603660031901126103b6576107e76004356108f1816107ac565b6024356108fd816107ac565b6044359161090c8333836125a0565b61236d565b346103b65760003660031901126103b657602060405160128152f35b6064359081151582036103b657565b60a4359081151582036103b657565b346103b65760a03660031901126103b6576109646103a5565b61096c61092d565b90608435906001600160401b0382116103b6576109926104ed60409336906004016103cc565b906109c96109ac6109a460443561333e565b60243561340f565b928451958694859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107a3576000908192610a1a575b50604080519182526020820192909252f35b9050610a3d915060403d8111610a44575b610a358183610c3d565b810190612ba9565b9038610a08565b503d610a2b565b346103b65760403660031901126103b657600435610a68816107ac565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610aa2576107e79133612475565b61227b565b9060406003198301126103b65760043561ffff811681036103b65791602435906001600160401b0382116103b65761045c916004016103cc565b346103b657602061ffff610b2e610af736610aa7565b9390911660005260018452610b19610b20604060002060405192838092611000565b0382610c3d565b848151910120923691610c79565b82815191012014604051908152f35b346103b65760203660031901126103b65761ffff610b596103a5565b1660005260036020526020604060002054604051908152f35b346103b657610b8036610aa7565b9190610b8a612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b657604051928380926342d65a8d60e01b825281610be1600098899788946004850161271e565b03925af180156107a357610797575080f35b346103b65760003660031901126103b657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c3857604052565b610c0f565b90601f801991011681019081106001600160401b03821117610c3857604052565b6001600160401b038111610c3857601f01601f191660200190565b929192610c8582610c5e565b91610c936040519384610c3d565b8294818452818301116103b6578281602093846000960137010152565b60606003198201126103b65760043561ffff811681036103b657916024356001600160401b03928382116103b657806023830112156103b657816024610cfb93600401359101610c79565b9160443590811681036103b65790565b602090610d259282604051948386809551938492016105d5565b82019081520301902090565b346103b6576020610d8f61ffff610d6e83610d4b36610cb0565b9490911660005260058252604060002082604051948386809551938492016105d5565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103b65760003660031901126103b657602060ff601154166040519015158152f35b346103b657610dc9366103f9565b9192949390303303610ded576104f4610de792610019973691610c79565b92612c03565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103b65790565b60a03660031901126103b657600435610e67816107ac565b610e6f6103bb565b604435916084356001600160401b0381116103b657602061ffff610ea6600080516020613a2f833981519152933690600401610e41565b93610f198535610eb5816107ac565b610ed36104ed8689013598610ec98a6107ac565b6040810190612995565b610edd818a61323b565b610ef2610eeb6064356133d8565b50856135e2565b97610efe891515612de0565b610f10610f0a8a61333e565b8c61340f565b9234938b612e80565b6040519485526001600160a01b0316941692a4005b346103b65760203660031901126103b657600435610f4b816107ac565b60018060a01b031660005260086020526020604060002054604051908152f35b346103b65760008060031936011261070e57610f85612223565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015610ff6575b6020831014610fe057565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fd5565b906000929180549161101183610fc6565b9182825260019384811690816000146110735750600114611033575b50505050565b90919394506000526020928360002092846000945b83861061105f57505050500101903880808061102d565b805485870183015294019385908201611048565b9294505050602093945060ff191683830152151560051b0101903880808061102d565b906110b16110aa9260405193848092611000565b0383610c3d565b565b346103b65760203660031901126103b65761ffff6110cf6103a5565b166000526001602052610689610b196110f2604060002060405192838092611000565b6040519182916020835260208301906105f8565b60e03660031901126103b65760043561111e816107ac565b6111266103bb565b604435916001600160401b03906084358281116103b65761114b9036906004016103cc565b91909260a43591818316918284036103b65760c4359081116103b657611175903690600401610e41565b926111ac843595611185876107ac565b6111a461119a602088013597610ec9896107ac565b9990923691610c79565b973691610c79565b9460ff6006541660001461129f57602286511061125a5785602095610f10610f19946112288c61121561ffff9a8b6022600080516020613a2f8339815191529f0151931660005260028d5261120f60406000206001600052602052604060002090565b546122ad565b90611221821515613290565b10156132dc565b61123d6112366064356133d8565b50886135e2565b9a6112498c1515612de0565b8d6112538d61333e565b903361349c565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516112cc57600080516020613a2f8339815191529460209461ffff94610f10610f1994611228565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103b65760003660031901126103b657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103b65760403660031901126103b6576020610d8f61137c6103a5565b61ffff6113876103bb565b91166000526002835260406000209061ffff16600052602052604060002090565b346103b65760003660031901126103b6576000546040516001600160a01b039091168152602090f35b346103b65760003660031901126103b6576004546040516001600160a01b039091168152602090f35b346103b65760008060031936011261070e5760405181600c5461141c81610fc6565b808452906001908181169081156106e65750600114611445576106898461067d81880382610c3d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061148b57505050816106899361067d928201019361066d565b805485850187015292850192810161146f565b346103b657602060ff6114dd61ffff610d6e846114ba36610cb0565b9490911660005260078252604060002082604051948386809551938492016105d5565b54166040519015158152f35b346103b65760203660031901126103b65761ffff6115056103a5565b166000526001602052610b19611525604060002060405192838092611000565b8051156115435761067d8161153d610689935161278d565b90613822565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103b65760403660031901126103b6576004356115a5816107ac565b602435903360005260096020526115d28160406000209060018060a01b0316600052602052604060002090565b54918083106115f3576115e792039033612475565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103b65760e03660031901126103b65761165f6103a5565b6001600160401b03906064358281116103b6576116809036906004016103cc565b60849291923584811681036103b65761169761093c565b9160c4359586116103b6576116b36116c39636906004016103cc565b95909460443590602435906129c7565b60408051928352602083019190915290f35b346103b6576116e336610aa7565b906116ec612223565b604051926020928083858701376117186034868381013060601b88820152036014810188520186610c3d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c38576117528361174c8654610fc6565b86612739565b80601f84116001146117c25750918080926117b19695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117b7575b50501b916000199060031b1c19161790555b6040519384938461271e565b0390a180f35b015192503880611793565b91939498601f1984166117da87600052602060002090565b938a905b828210611841575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117b198969410611828575b505050811b0190556117a5565b015160001960f88460031b161c1916905538808061181b565b8088869782949787015181550196019401906117de565b346103b65760403660031901126103b6576107e7600435611878816107ac565b602435903361236d565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760403660031901126103b657602060ff6114dd6024356118eb816107ac565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103b65760203660031901126103b6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611951816107ac565b611959612223565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103b65760003660031901126103b65760206040516127108152f35b346103b65760803660031901126103b6576119b76103a5565b6119bf6103bb565b6064356001600160401b0381116103b6576119de9036906004016103cc565b90926119e8612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103b65760008094611a5f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916126fd565b03925af180156107a357611a6f57005b80611a7c61001992610c25565b806105ca565b346103b65760003660031901126103b657600e546040516001600160a01b039091168152602090f35b611ab4366103f9565b9161ffff86949296166000526005602052611afb81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611bbd57611bac8483611ba57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9184611b798e8a8f611bb89f908f611b5f90611b52611b739436908d610c79565b6020815191012014612908565b61ffff166000526005602052604060002090565b916128ef565b906001600160401b0316600052602052604060002090565b55611b9d36878d610c79565b933691610c79565b9188612c03565b6040519586958661295e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103b65760003660031901126103b657600d546040516001600160a01b039091168152602090f35b346103b65760403660031901126103b6576020610d8f600435611c59816107ac565b60243590611c66826107ac565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760603660031901126103b657611cef6103a5565b611cf76103bb565b60443591611d03612223565b8215611d7e57611bb87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103b65760003660031901126103b657602060405160018152f35b346103b65760203660031901126103b6576004358015158091036103b65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e21612223565b60ff196006541660ff821617600655604051908152a1005b346103b6576101003660031901126103b657611e536103a5565b6001600160401b03906024358281116103b657611e749036906004016103cc565b91906044359084821682036103b657608435611e8f816107ac565b60c4359586116103b657611eaa6100199636906004016103cc565b94909360e4359660a4359460643593612abd565b346103b657611ecc36610aa7565b9190611ed6612223565b60009161ffff81168352600160209080825260408520916001600160401b038711610c3857611f0f87611f098554610fc6565b85612739565b8590601f8811600114611f7657509186808798936117b1957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993611f6b575b501b906000198460031b1c19161790556040519384938461271e565b880135925038611f4f565b90601f198816611f8b85600052602060002090565b9288905b828210611ff1575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117b1969410611fd7575b505082811b0190556117a5565b870135600019600386901b60f8161c191690553880611fca565b808685968294968c01358155019501930190611f8f565b346103b65760403660031901126103b657602060ff6114dd60243561202c816107ac565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b657602060ff600654166040519015158152f35b346103b65760203660031901126103b657600435612092816107ac565b61209a612223565b6001600160a01b0390811680156120e857600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b65760803660031901126103b6576121556103a5565b61215d6103bb565b906121696044356107ac565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107a357610689916000916121e7575b506040519182918261061d565b612202913d8091833e6121fa8183610c3d565b810190612693565b386121da565b346103b65760003660031901126103b6576020604051308152f35b6000546001600160a01b0316330361223757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610aa257565b6051019081605111610aa257565b91908201809211610aa257565b156122c157565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561231957565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124225761240782600080516020613a4f8339815191529461241d9416966123a78815156122ba565b6001600160a01b03811660009081526008602052604090206123ec908590546123d282821015612312565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561254f5782169384156124ff57806124ee7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124d761241d9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016125d85750505050565b8084106125f3576125ea930391612475565b3880808061102d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561263f57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103b6578051906001600160401b0382116103b6570181601f820112156103b65780516126c581610c5e565b926126d36040519485610c3d565b818452602082840101116103b65761062e91602080850191016105d5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61062e959316815281602082015201916126fd565b90601f811161274757505050565b600091825260208220906020601f850160051c83019410612783575b601f0160051c01915b82811061277857505050565b81815560010161276c565b9092508290612763565b601319810191908211610aa257565b605019810191908211610aa257565b92909161281d5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290612817826128096127e860a483018a6105f8565b6001600160401b0388166064840152828103602319016084840152886105f8565b03601f198101845283610c3d565b306139d1565b93901561282c575b5050505050565b6128359461283f565b3880808080612825565b91936128dc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956128ea939561ffff815160208301209616958660005260056020526128a383610d6e60208b604060002082604051948386809551938492016105d5565b556001600160401b036128c8604051988998895260a060208a015260a08901906105f8565b9216604087015285820360608701526105f8565b9083820360808501526105f8565b0390a1565b6020919283604051948593843782019081520301902090565b1561290f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161298a9060609461ffff6001600160401b0394999897991685526080602086015260808501916126fd565b951660408201520152565b903590601e19813603018212156103b657018035906001600160401b0382116103b6576020019181360383136103b657565b9491959897906112536129f06040996129e86129f697612a13993691610c79565b943691610c79565b9761333e565b928451968794859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107a3576000908193612a5657509190565b905061045c91925060403d8111610a4457610a358183610c3d565b93969491612a9f9061062e99979461ffff6001600160401b039416875260c0602088015260c08701916126fd565b961660408401526060830152608082015260a08185039101526126fd565b91969792989594939094303303612b6457612ad990853061376e565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103b6576000988995612b47936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01612a71565b0393f180156107a357612b575750565b80611a7c6110b192610c25565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103b6576020825192015190565b919261062e959361ffff612bee9316845260018060a01b0316602084015260a0604084015260a08301906105f8565b921515606082015260808184039101526105f8565b92919060ff612c1184613976565b1680612d8b5750505060ff612c2582613976565b161580612d80575b612c3690613455565b612c48612c4282613926565b916139c1565b90916001600160a01b039182841615612d76575b612c90906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166133c5565b918316928315612d31577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91612cf161ffff92612cd7612cd287600a546122ad565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020613a4f83398151915260405180612d1c89829190602083019252565b0390a36040519384521691806020810161241d565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612c5c565b508051602914612c2d565b600103612d9b576110b193613083565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15612de757565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612e4d61062e97959361ffff612e5b9416865260c0602087015260c08601906105f8565b9084820360408601526105f8565b6001600160a01b0391821660608401529316608082015280830360a0909101526105f8565b94612ea99193929561ffff81166000526001602052612eb0604060002060405194858092611000565b0384610c3d565b825115612f2857612ec2855182612f86565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103b657600096612f1791604051998a988997889662c5803160e81b885260048801612e28565b03925af180156107a357612b575750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612feb575b11612fa757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612fa0565b98979692936001600160401b0361302760e0989461ffff6130539995168d5260208d61010091829101528d01906105f8565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526105f8565b930152565b6001600160401b03613078604093969594966060845260608401906105f8565b951660208201520152565b909161308e84613509565b90916130bf6130b887611b796130b28b61ffff166000526007602052604060002090565b8c610d0b565b5460ff1690565b916130f56001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166133c5565b9288888b83156131f1575b505050853b156131a657946131479694612817948a94612809948d9960001461319f5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612ff5565b901561319457509061318f61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613058565b0390a2565b926110b1949261283f565b1692613128565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506128ea915050565b90611b79613226926132208961320b613233979b3061370b565b9961ffff166000526007602052604060002090565b90610d0b565b805460ff19166001179055565b88888b613100565b60065460ff161561328857602282511061125a5761ffff60226110b19301519116600052600260205261327b604060002060008052602052604060002090565b5490611221821515613290565b50516112cc57565b1561329757565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156132e357565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156133c057046001600160401b039081811161337b571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613328565b81810292918115918404141715610aa257565b7f000000000000000000000000000000000000000000000000000000000000000080156133c057810690818103908111610aa25791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c385760405290565b1561345c57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261062e94604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526134f981518092602086860191016105d5565b8101036051810184520182610c3d565b90613521600160ff61351a85613976565b1614613455565b61352a82613926565b90613534836139c1565b9060498451106135a557604984015193605181511061356957613566605182015191613560815161279c565b906138a2565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036136a4575b8015613655578161362a8461361d60009560018060a01b03166000526008602052604060002090565b546123d2828210156136b4565b5561363883600a5403600a55565b604051838152600080516020613a4f83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6136af8333846125a0565b6135f4565b156136bb57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612d3157600a5490828201809211610aa25760009261375f602092600080516020613a4f83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b61062e9183916001600160a01b03811630811415908161379a575b501561236d5761090c8333836125a0565b905033141538613789565b156137ac57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156137e957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6138368261382f81612291565b10156137a5565b61384382825110156137e2565b8161385b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061388f5750508252601f01601f191660405290565b9092835181526020809101930190613877565b6138af8261382f81612291565b6138c481516138bd8461229f565b11156137e2565b816138dc575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106139135750508252601f01601f191660405290565b90928351815260208091019301906138fb565b602181511061393957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613986576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613569576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c385783926040526096875282602088019560a036883760208451940192f1903d9060968211613a25575b6000908286523e9190565b60969150613a1a56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c25d7c691873a765a5c4266b2b4db1f90460b6eca7694711c59c03ff687f8fe964736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103a057806301ffc9a71461039b57806306fdde031461039657806307e0db1714610391578063095ea7b31461038c5780630df374831461038757806310ddb1371461038257806318160ddd1461031e57806323b872dd1461037d578063313ce56714610378578063365260b414610373578063395093511461036e5780633d8b38f6146103695780633f1f4fa41461036457806342d65a8d1461035f578063447705151461035a5780634c42899a1461035a5780635b8c41e6146103555780635c975abb1461035057806366ad5c8a1461034b578063695ef6bf1461034657806370a0823114610341578063715018a61461033c5780637533d7881461033757806376203b4814610332578063857749b01461032d5780638cfd8f5c146103285780638da5cb5b146103235780639358928b1461031e578063950c8a741461031957806395d89b41146103145780639bdb98121461030f5780639f38369a1461030a578063a457c2d714610305578063a4c51df514610300578063a6c3d165146102fb578063a9059cbb146102f6578063b353aaa7146102f1578063ba03a8d7146102ec578063baf3292d146102e7578063c4461834146102e2578063cbed8b9c146102dd578063ce8849ed146102d8578063d1deba1f146102d3578063dbd01de1146102ce578063dd62ed3e146102c9578063de406577146102c4578063df2a5b3b146102bf578063e6a20ae6146102ba578063eab45d9c146102b5578063eaffd49a146102b0578063eb8d72b7146102ab578063ec6d062b146102a6578063ed629c5c146102a1578063f2fde38b1461029c578063f5ecbdbc146102975763fc0c546a0361000e57612208565b61213c565b612075565b612052565b612008565b611ebe565b611e39565b611dd7565b611dbb565b611cd6565b611c91565b611c37565b611c0e565b611aab565b611a82565b61199e565b611981565b611911565b6118c7565b611882565b611858565b6116d5565b611646565b611588565b6114e9565b61149e565b6113fa565b6113d1565b6108b3565b6113a8565b61135e565b611320565b611106565b6110b3565b610f6b565b610f2e565b610e4f565b610dbb565b610d98565b610d31565b610bf3565b610b72565b610b3d565b610ae1565b610a4b565b61094b565b610911565b6108d1565b61082d565b6107f2565b6107bd565b610711565b610631565b610574565b610460565b6004359061ffff821682036103b657565b600080fd5b6024359061ffff821682036103b657565b9181601f840112156103b6578235916001600160401b0383116103b657602083818601950101116103b657565b9060806003198301126103b65760043561ffff811681036103b657916001600160401b03906024358281116103b65781610435916004016103cc565b9390939260443581811681036103b657926064359182116103b65761045c916004016103cc565b9091565b346103b65761046e366103f9565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361052f576104f46104fc92610019976104ed6104d36104ce8a61ffff166000526001602052604060002090565b611096565b8051908184149182610525575b5081610502575b50612638565b3691610c79565b923691610c79565b926127ab565b905061050f368486610c79565b60208151910120906020815191012014386104e7565b15159150386104e0565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103b65760203660031901126103b65760043563ffffffff60e01b81168091036103b657602090631f7ecdf760e01b81149081156105b9575b506040519015158152f35b6301ffc9a760e01b149050386105ae565b60009103126103b657565b60005b8381106105e85750506000910152565b81810151838201526020016105d8565b90602091610611815180928185528580860191016105d5565b601f01601f1916010190565b90602061062e9281815201906105f8565b90565b346103b65760008060031936011261070e5760405181600b5461065381610fc6565b808452906001908181169081156106e6575060011461068d575b6106898461067d81880382610c3d565b6040519182918261061d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106d357505050816106899361067d928201019361066d565b80548585018701529285019281016106b7565b610689965061067d9450602092508593915060ff191682840152151560051b8201019361066d565b80fd5b346103b6576000602036600319011261070e5761072c6103a5565b610734612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107a357610797575080f35b6107a090610c25565b80f35b6126f1565b5080fd5b6001600160a01b038116036103b657565b346103b65760403660031901126103b6576107e76004356107dd816107ac565b6024359033612475565b602060405160018152f35b346103b65760403660031901126103b65761ffff61080e6103a5565b610816612223565b166000526003602052602435604060002055600080f35b346103b6576000602036600319011261070e576108486103a5565b610850612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107a357610797575080f35b346103b65760003660031901126103b6576020600a54604051908152f35b346103b65760603660031901126103b6576107e76004356108f1816107ac565b6024356108fd816107ac565b6044359161090c8333836125a0565b61236d565b346103b65760003660031901126103b657602060405160128152f35b6064359081151582036103b657565b60a4359081151582036103b657565b346103b65760a03660031901126103b6576109646103a5565b61096c61092d565b90608435906001600160401b0382116103b6576109926104ed60409336906004016103cc565b906109c96109ac6109a460443561333e565b60243561340f565b928451958694859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107a3576000908192610a1a575b50604080519182526020820192909252f35b9050610a3d915060403d8111610a44575b610a358183610c3d565b810190612ba9565b9038610a08565b503d610a2b565b346103b65760403660031901126103b657600435610a68816107ac565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610aa2576107e79133612475565b61227b565b9060406003198301126103b65760043561ffff811681036103b65791602435906001600160401b0382116103b65761045c916004016103cc565b346103b657602061ffff610b2e610af736610aa7565b9390911660005260018452610b19610b20604060002060405192838092611000565b0382610c3d565b848151910120923691610c79565b82815191012014604051908152f35b346103b65760203660031901126103b65761ffff610b596103a5565b1660005260036020526020604060002054604051908152f35b346103b657610b8036610aa7565b9190610b8a612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b657604051928380926342d65a8d60e01b825281610be1600098899788946004850161271e565b03925af180156107a357610797575080f35b346103b65760003660031901126103b657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c3857604052565b610c0f565b90601f801991011681019081106001600160401b03821117610c3857604052565b6001600160401b038111610c3857601f01601f191660200190565b929192610c8582610c5e565b91610c936040519384610c3d565b8294818452818301116103b6578281602093846000960137010152565b60606003198201126103b65760043561ffff811681036103b657916024356001600160401b03928382116103b657806023830112156103b657816024610cfb93600401359101610c79565b9160443590811681036103b65790565b602090610d259282604051948386809551938492016105d5565b82019081520301902090565b346103b6576020610d8f61ffff610d6e83610d4b36610cb0565b9490911660005260058252604060002082604051948386809551938492016105d5565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103b65760003660031901126103b657602060ff601154166040519015158152f35b346103b657610dc9366103f9565b9192949390303303610ded576104f4610de792610019973691610c79565b92612c03565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103b65790565b60a03660031901126103b657600435610e67816107ac565b610e6f6103bb565b604435916084356001600160401b0381116103b657602061ffff610ea6600080516020613a2f833981519152933690600401610e41565b93610f198535610eb5816107ac565b610ed36104ed8689013598610ec98a6107ac565b6040810190612995565b610edd818a61323b565b610ef2610eeb6064356133d8565b50856135e2565b97610efe891515612de0565b610f10610f0a8a61333e565b8c61340f565b9234938b612e80565b6040519485526001600160a01b0316941692a4005b346103b65760203660031901126103b657600435610f4b816107ac565b60018060a01b031660005260086020526020604060002054604051908152f35b346103b65760008060031936011261070e57610f85612223565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015610ff6575b6020831014610fe057565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fd5565b906000929180549161101183610fc6565b9182825260019384811690816000146110735750600114611033575b50505050565b90919394506000526020928360002092846000945b83861061105f57505050500101903880808061102d565b805485870183015294019385908201611048565b9294505050602093945060ff191683830152151560051b0101903880808061102d565b906110b16110aa9260405193848092611000565b0383610c3d565b565b346103b65760203660031901126103b65761ffff6110cf6103a5565b166000526001602052610689610b196110f2604060002060405192838092611000565b6040519182916020835260208301906105f8565b60e03660031901126103b65760043561111e816107ac565b6111266103bb565b604435916001600160401b03906084358281116103b65761114b9036906004016103cc565b91909260a43591818316918284036103b65760c4359081116103b657611175903690600401610e41565b926111ac843595611185876107ac565b6111a461119a602088013597610ec9896107ac565b9990923691610c79565b973691610c79565b9460ff6006541660001461129f57602286511061125a5785602095610f10610f19946112288c61121561ffff9a8b6022600080516020613a2f8339815191529f0151931660005260028d5261120f60406000206001600052602052604060002090565b546122ad565b90611221821515613290565b10156132dc565b61123d6112366064356133d8565b50886135e2565b9a6112498c1515612de0565b8d6112538d61333e565b903361349c565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516112cc57600080516020613a2f8339815191529460209461ffff94610f10610f1994611228565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103b65760003660031901126103b657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103b65760403660031901126103b6576020610d8f61137c6103a5565b61ffff6113876103bb565b91166000526002835260406000209061ffff16600052602052604060002090565b346103b65760003660031901126103b6576000546040516001600160a01b039091168152602090f35b346103b65760003660031901126103b6576004546040516001600160a01b039091168152602090f35b346103b65760008060031936011261070e5760405181600c5461141c81610fc6565b808452906001908181169081156106e65750600114611445576106898461067d81880382610c3d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061148b57505050816106899361067d928201019361066d565b805485850187015292850192810161146f565b346103b657602060ff6114dd61ffff610d6e846114ba36610cb0565b9490911660005260078252604060002082604051948386809551938492016105d5565b54166040519015158152f35b346103b65760203660031901126103b65761ffff6115056103a5565b166000526001602052610b19611525604060002060405192838092611000565b8051156115435761067d8161153d610689935161278d565b90613822565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103b65760403660031901126103b6576004356115a5816107ac565b602435903360005260096020526115d28160406000209060018060a01b0316600052602052604060002090565b54918083106115f3576115e792039033612475565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103b65760e03660031901126103b65761165f6103a5565b6001600160401b03906064358281116103b6576116809036906004016103cc565b60849291923584811681036103b65761169761093c565b9160c4359586116103b6576116b36116c39636906004016103cc565b95909460443590602435906129c7565b60408051928352602083019190915290f35b346103b6576116e336610aa7565b906116ec612223565b604051926020928083858701376117186034868381013060601b88820152036014810188520186610c3d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c38576117528361174c8654610fc6565b86612739565b80601f84116001146117c25750918080926117b19695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117b7575b50501b916000199060031b1c19161790555b6040519384938461271e565b0390a180f35b015192503880611793565b91939498601f1984166117da87600052602060002090565b938a905b828210611841575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117b198969410611828575b505050811b0190556117a5565b015160001960f88460031b161c1916905538808061181b565b8088869782949787015181550196019401906117de565b346103b65760403660031901126103b6576107e7600435611878816107ac565b602435903361236d565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760403660031901126103b657602060ff6114dd6024356118eb816107ac565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103b65760203660031901126103b6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611951816107ac565b611959612223565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103b65760003660031901126103b65760206040516127108152f35b346103b65760803660031901126103b6576119b76103a5565b6119bf6103bb565b6064356001600160401b0381116103b6576119de9036906004016103cc565b90926119e8612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103b65760008094611a5f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916126fd565b03925af180156107a357611a6f57005b80611a7c61001992610c25565b806105ca565b346103b65760003660031901126103b657600e546040516001600160a01b039091168152602090f35b611ab4366103f9565b9161ffff86949296166000526005602052611afb81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611bbd57611bac8483611ba57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9184611b798e8a8f611bb89f908f611b5f90611b52611b739436908d610c79565b6020815191012014612908565b61ffff166000526005602052604060002090565b916128ef565b906001600160401b0316600052602052604060002090565b55611b9d36878d610c79565b933691610c79565b9188612c03565b6040519586958661295e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103b65760003660031901126103b657600d546040516001600160a01b039091168152602090f35b346103b65760403660031901126103b6576020610d8f600435611c59816107ac565b60243590611c66826107ac565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760603660031901126103b657611cef6103a5565b611cf76103bb565b60443591611d03612223565b8215611d7e57611bb87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103b65760003660031901126103b657602060405160018152f35b346103b65760203660031901126103b6576004358015158091036103b65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e21612223565b60ff196006541660ff821617600655604051908152a1005b346103b6576101003660031901126103b657611e536103a5565b6001600160401b03906024358281116103b657611e749036906004016103cc565b91906044359084821682036103b657608435611e8f816107ac565b60c4359586116103b657611eaa6100199636906004016103cc565b94909360e4359660a4359460643593612abd565b346103b657611ecc36610aa7565b9190611ed6612223565b60009161ffff81168352600160209080825260408520916001600160401b038711610c3857611f0f87611f098554610fc6565b85612739565b8590601f8811600114611f7657509186808798936117b1957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993611f6b575b501b906000198460031b1c19161790556040519384938461271e565b880135925038611f4f565b90601f198816611f8b85600052602060002090565b9288905b828210611ff1575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117b1969410611fd7575b505082811b0190556117a5565b870135600019600386901b60f8161c191690553880611fca565b808685968294968c01358155019501930190611f8f565b346103b65760403660031901126103b657602060ff6114dd60243561202c816107ac565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b657602060ff600654166040519015158152f35b346103b65760203660031901126103b657600435612092816107ac565b61209a612223565b6001600160a01b0390811680156120e857600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b65760803660031901126103b6576121556103a5565b61215d6103bb565b906121696044356107ac565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107a357610689916000916121e7575b506040519182918261061d565b612202913d8091833e6121fa8183610c3d565b810190612693565b386121da565b346103b65760003660031901126103b6576020604051308152f35b6000546001600160a01b0316330361223757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610aa257565b6051019081605111610aa257565b91908201809211610aa257565b156122c157565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561231957565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124225761240782600080516020613a4f8339815191529461241d9416966123a78815156122ba565b6001600160a01b03811660009081526008602052604090206123ec908590546123d282821015612312565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561254f5782169384156124ff57806124ee7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124d761241d9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016125d85750505050565b8084106125f3576125ea930391612475565b3880808061102d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561263f57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103b6578051906001600160401b0382116103b6570181601f820112156103b65780516126c581610c5e565b926126d36040519485610c3d565b818452602082840101116103b65761062e91602080850191016105d5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61062e959316815281602082015201916126fd565b90601f811161274757505050565b600091825260208220906020601f850160051c83019410612783575b601f0160051c01915b82811061277857505050565b81815560010161276c565b9092508290612763565b601319810191908211610aa257565b605019810191908211610aa257565b92909161281d5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290612817826128096127e860a483018a6105f8565b6001600160401b0388166064840152828103602319016084840152886105f8565b03601f198101845283610c3d565b306139d1565b93901561282c575b5050505050565b6128359461283f565b3880808080612825565b91936128dc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956128ea939561ffff815160208301209616958660005260056020526128a383610d6e60208b604060002082604051948386809551938492016105d5565b556001600160401b036128c8604051988998895260a060208a015260a08901906105f8565b9216604087015285820360608701526105f8565b9083820360808501526105f8565b0390a1565b6020919283604051948593843782019081520301902090565b1561290f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161298a9060609461ffff6001600160401b0394999897991685526080602086015260808501916126fd565b951660408201520152565b903590601e19813603018212156103b657018035906001600160401b0382116103b6576020019181360383136103b657565b9491959897906112536129f06040996129e86129f697612a13993691610c79565b943691610c79565b9761333e565b928451968794859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107a3576000908193612a5657509190565b905061045c91925060403d8111610a4457610a358183610c3d565b93969491612a9f9061062e99979461ffff6001600160401b039416875260c0602088015260c08701916126fd565b961660408401526060830152608082015260a08185039101526126fd565b91969792989594939094303303612b6457612ad990853061376e565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103b6576000988995612b47936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01612a71565b0393f180156107a357612b575750565b80611a7c6110b192610c25565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103b6576020825192015190565b919261062e959361ffff612bee9316845260018060a01b0316602084015260a0604084015260a08301906105f8565b921515606082015260808184039101526105f8565b92919060ff612c1184613976565b1680612d8b5750505060ff612c2582613976565b161580612d80575b612c3690613455565b612c48612c4282613926565b916139c1565b90916001600160a01b039182841615612d76575b612c90906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166133c5565b918316928315612d31577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91612cf161ffff92612cd7612cd287600a546122ad565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020613a4f83398151915260405180612d1c89829190602083019252565b0390a36040519384521691806020810161241d565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612c5c565b508051602914612c2d565b600103612d9b576110b193613083565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15612de757565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612e4d61062e97959361ffff612e5b9416865260c0602087015260c08601906105f8565b9084820360408601526105f8565b6001600160a01b0391821660608401529316608082015280830360a0909101526105f8565b94612ea99193929561ffff81166000526001602052612eb0604060002060405194858092611000565b0384610c3d565b825115612f2857612ec2855182612f86565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103b657600096612f1791604051998a988997889662c5803160e81b885260048801612e28565b03925af180156107a357612b575750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612feb575b11612fa757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612fa0565b98979692936001600160401b0361302760e0989461ffff6130539995168d5260208d61010091829101528d01906105f8565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526105f8565b930152565b6001600160401b03613078604093969594966060845260608401906105f8565b951660208201520152565b909161308e84613509565b90916130bf6130b887611b796130b28b61ffff166000526007602052604060002090565b8c610d0b565b5460ff1690565b916130f56001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166133c5565b9288888b83156131f1575b505050853b156131a657946131479694612817948a94612809948d9960001461319f5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612ff5565b901561319457509061318f61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613058565b0390a2565b926110b1949261283f565b1692613128565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506128ea915050565b90611b79613226926132208961320b613233979b3061370b565b9961ffff166000526007602052604060002090565b90610d0b565b805460ff19166001179055565b88888b613100565b60065460ff161561328857602282511061125a5761ffff60226110b19301519116600052600260205261327b604060002060008052602052604060002090565b5490611221821515613290565b50516112cc57565b1561329757565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156132e357565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156133c057046001600160401b039081811161337b571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613328565b81810292918115918404141715610aa257565b7f000000000000000000000000000000000000000000000000000000000000000080156133c057810690818103908111610aa25791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c385760405290565b1561345c57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261062e94604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526134f981518092602086860191016105d5565b8101036051810184520182610c3d565b90613521600160ff61351a85613976565b1614613455565b61352a82613926565b90613534836139c1565b9060498451106135a557604984015193605181511061356957613566605182015191613560815161279c565b906138a2565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036136a4575b8015613655578161362a8461361d60009560018060a01b03166000526008602052604060002090565b546123d2828210156136b4565b5561363883600a5403600a55565b604051838152600080516020613a4f83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6136af8333846125a0565b6135f4565b156136bb57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612d3157600a5490828201809211610aa25760009261375f602092600080516020613a4f83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b61062e9183916001600160a01b03811630811415908161379a575b501561236d5761090c8333836125a0565b905033141538613789565b156137ac57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156137e957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6138368261382f81612291565b10156137a5565b61384382825110156137e2565b8161385b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061388f5750508252601f01601f191660405290565b9092835181526020809101930190613877565b6138af8261382f81612291565b6138c481516138bd8461229f565b11156137e2565b816138dc575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106139135750508252601f01601f191660405290565b90928351815260208091019301906138fb565b602181511061393957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613986576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613569576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c385783926040526096875282602088019560a036883760208451940192f1903d9060968211613a25575b6000908286523e9190565b60969150613a1a56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c25d7c691873a765a5c4266b2b4db1f90460b6eca7694711c59c03ff687f8fe964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BigBang.json b/src/artifacts/tapioca-bar/BigBang.json index f979f156..2a73906f 100644 --- a/src/artifacts/tapioca-bar/BigBang.json +++ b/src/artifacts/tapioca-bar/BigBang.json @@ -1113,14 +1113,14 @@ "type": "uint256[]" }, { - "internalType": "bytes[]", - "name": "collateralToAssetSwapDatas", - "type": "bytes[]" + "internalType": "contract IMarketLiquidatorReceiver[]", + "name": "liquidatorReceivers", + "type": "address[]" }, { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" + "internalType": "bytes[]", + "name": "liquidatorReceiverDatas", + "type": "bytes[]" } ], "name": "liquidate", @@ -1141,13 +1141,13 @@ "type": "address" }, { - "internalType": "contract ISwapper", - "name": "swapper", + "internalType": "contract IMarketLiquidatorReceiver", + "name": "liquidatorReceiver", "type": "address" }, { "internalType": "bytes", - "name": "collateralToAssetSwapData", + "name": "liquidatorReceiverData", "type": "bytes" } ], @@ -1973,8 +1973,8 @@ "type": "receive" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556143f69283620001ab8439608051836130bb015260a05183613176015260c05183613085015260e0518361310a01525182613130015251816130e70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cb7940e1146103b9578063cce19f81146103b4578063cd0211eb146103af578063ce8849ed146103aa578063d505accf146103a5578063d8dfeb45146103a0578063dd62ed3e1461039b578063de40657714610396578063e0996cb614610391578063e30c39781461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e5761232c565b61230e565b6122e5565b6122c7565b6122a9565b612225565b6121fc565b6121de565b6121b5565b612185565b61215c565b6120c0565b612097565b612015565b611fda565b611eaa565b611e81565b611e66565b611e48565b611e2a565b611e07565b611dd4565b611d48565b611d2a565b611b21565b611a0e565b611921565b611877565b611839565b61180e565b6117f1565b611770565b61172c565b61170e565b6116d1565b61169f565b611675565b611638565b61160f565b611548565b6113e7565b61136c565b611343565b611325565b6112fc565b611259565b61123b565b61121d565b6111c3565b611119565b610f8b565b610f4e565b610f30565b610f12565b610ef4565b610ed0565b610eb2565b610e89565b610e6b565b610e48565b610e2a565b610e01565b610de3565b610beb565b610bc2565b610bac565b610b62565b610a8f565b610978565b6108eb565b6108cf565b6107d8565b61074e565b6106df565b6105d6565b6105a3565b61056a565b6001600160a01b031690565b6001600160a01b0381160361050c57565b600080fd5b604090600319011261050c57600435610529816104fb565b90602435610536816104fb565b90565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b3461050c57602061059a61057d36610511565b6001600160a01b0390911660009081526003845260409020610553565b54604051908152f35b3461050c57600036600319011261050c5760406105be612da6565b825191151582526020820152f35b8015150361050c57565b3461050c57606036600319011261050c576004356105f3816104fb565b60243590610600826105cc565b6044359161060d836105cc565b6005546001600160a01b0391906106279083163314612345565b156106c6578116918215908115916106be575b50156106815761066f916106576106526005546104ef565b6104ef565b600080516020614361833981519152600080a3612390565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861063a565b60068054919092166001600160a01b0319909116179055005b3461050c57604036600319011261050c576107096004356106ff816104fb565b6024359033613590565b602060405160018152f35b359061071f826104fb565b565b9181601f8401121561050c578235916001600160401b03831161050c576020838186019501011161050c57565b3461050c5761018036600319011261050c5760243561076c816104fb565b604435906001600160401b03821161050c5761078f610019923690600401610721565b906064359261079d846104fb565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123d4565b60043590600982101561050c57565b3461050c57604036600319011261050c576107f16107c9565b6024356107fd816105cc565b6008546001600160a01b03163303610893576108828261083161082c610825610019966113ce565b5460ff1690565b151590565b610840841515918214156128a4565b61084c610825836113ce565b610855836113bf565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46113ce565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050c57600036600319011261050c57602060405160008152f35b3461050c57602036600319011261050c57600435610908816104fb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050c57565b60e090600319011261050c5760043561094b816104fb565b90602435610958816104fb565b90604435906064359060843561096d81610928565b9060a4359060c43590565b3461050c5761098636610933565b9592809594959291924211610a4a5761001996610a4593610a3293610a25878a610a1d8b610a0f610a2a996109ba8661351b565b60405195869460208601988991959493909260c09360e084019760008051602061438183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f1981018352826114cc565b5190206134c6565b61344e565b919091613333565b6001600160a01b038381169116146132ce565b613543565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050c5760c036600319011261050c57600435610aac816104fb565b608435610ab8816104fb565b60a435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f610ae9610b4e963690600401610721565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916140f8565b61422a565b60208082518301019101612edb565b6040519081529081906020820190565b0390f35b3461050c57600036600319011261050c576020602a54604051908152f35b606090600319011261050c57600435610b98816104fb565b90602435610ba5816104fb565b9060443590565b3461050c57610bba36610b80565b5050506141a2565b3461050c57600036600319011261050c57602c546040516001600160a01b039091168152602090f35b3461050c57608036600319011261050c576004356024356044359060643592610c1f60018060a01b03600554163314612345565b6004600c546020610c34610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57610c6f92600092610dae575b501460ff8019602654169115151617602655565b610c82610c7e60265460ff1690565b1590565b610c8857005b610c90613861565b80610d69575b5080610d24575b5080610cec575b5080610cac57005b80610cbe620186a061001993106141ee565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d1e916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610ca4565b610d6390610d3560285482116141ee565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c9d565b610da890610d7a60275482106141ee565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c96565b610dd091925060203d8111610dd7575b610dc881836114cc565b810190612edb565b9038610c5b565b503d610dbe565b612d14565b3461050c57600036600319011261050c576020601354604051908152f35b3461050c57600036600319011261050c576014546040516001600160801b039091168152602090f35b3461050c57600036600319011261050c576020601954604051908152f35b3461050c57600036600319011261050c576020610e63613082565b604051908152f35b3461050c57600036600319011261050c576020601254604051908152f35b3461050c57600036600319011261050c57600d546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601154604051908152f35b3461050c57606036600319011261050c576020610e63604435602435600435612a35565b3461050c57600036600319011261050c576020601654604051908152f35b3461050c57600036600319011261050c576020600e54604051908152f35b3461050c57600036600319011261050c576020601554604051908152f35b3461050c57602036600319011261050c57600435610f6b816104fb565b60018060a01b031660005260176020526020604060002054604051908152f35b3461050c57602036600319011261050c576004356001600160401b03811161050c57610fbb903690600401610721565b60ff602354166110de57816101e0918101031261050c57806110a1610fe26110c093610714565b610fee60208401610714565b610ffa60408501610714565b9161108161100a60608701610714565b9361101760808801610714565b9361102460a08901610714565b9361103160e08a01610714565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613bf8565b6101808101359061016081013590610120610140820135910135613a84565b6110cc62015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461050c576000806003193601126111c0576006546001600160a01b03163381900361117c5780611169916111526106526005546104ef565b6000805160206143618339815191528580a3612390565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461050c576040611211611202610a0f6111fd6111df36610b80565b87516314890dcb60e21b6020820152948593909290602485016140c0565b6142c2565b602080825183010191016140e2565b82519182526020820152f35b3461050c57600036600319011261050c576020602154604051908152f35b3461050c57600036600319011261050c576020601c54604051908152f35b3461050c5760a036600319011261050c57600435611276816104fb565b606435611282816104fb565b608435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f6112b3610b4e963690600401610721565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916140f8565b3461050c57600036600319011261050c57602b546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602754604051908152f35b3461050c57600036600319011261050c57600a546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611389816104fb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156113c957565b6113a9565b60098110156113c9576000526007602052604060002090565b3461050c57602036600319011261050c576114006107c9565b60098110156113c9576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611456575b602083101461144057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611435565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761149157604052565b611460565b60c081019081106001600160401b0382111761149157604052565b60e081019081106001600160401b0382111761149157604052565b601f909101601f19168101906001600160401b0382119082101761149157604052565b60005b8381106115025750506000910152565b81810151838201526020016114f2565b9060209161152b815180928185528580860191016114ef565b601f01601f1916010190565b906020610536928181520190611512565b3461050c576000806003193601126111c0576040518160105461156a81611426565b808452906001908181169081156115e757506001146115a0575b610b5e84611594818803826114cc565b60405191829182611537565b60108352602094506000805160206143a18339815191525b8284106115d45750505081610b5e936115949282010193611584565b80548585018701529285019281016115b8565b610b5e96506115949450602092508593915060ff191682840152151560051b82010193611584565b3461050c57600036600319011261050c57600f546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611655816104fb565b60018060a01b031660005260046020526020604060002054604051908152f35b3461050c57604036600319011261050c57610709600435611695816104fb565b6024359033613543565b3461050c57600036600319011261050c57601454604080516001600160801b038316815260809290921c602083015290f35b3461050c57602036600319011261050c576004356116ee816104fb565b60018060a01b031660005260246020526020604060002054604051908152f35b3461050c57600036600319011261050c576020601b54604051908152f35b3461050c57600036600319011261050c576005546040516001600160a01b039091168152602090f35b6001600160401b03811161149157601f01601f191660200190565b3461050c57604036600319011261050c576004356001600160401b03811161050c573660238201121561050c5780600401356117ab81611755565b916117b960405193846114cc565b818352366024838301011161050c5781600092602460209301838601378301015260243561ffff8116810361050c576100199161319c565b3461050c57600036600319011261050c5760208054604051908152f35b3461050c57604036600319011261050c576020610e63600435611830816104fb565b60243590612fb2565b3461050c57604036600319011261050c57606061186460043561185b816104fb565b60243590612b19565b9060405192835260208301526040820152f35b3461050c57608036600319011261050c57600435611894816104fb565b6024356118a0816104fb565b604435906118ad826104fb565b606435926001600160401b03841161050c57610a0f61191c926118d7610019963690600401610721565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916140f8565b6142ec565b3461050c57604036600319011261050c5761193d6004356104fb565b6141a2565b9181601f8401121561050c578235916001600160401b03831161050c576020808501948460051b01011161050c57565b906040820191604081528151809352606081019260208093019060005b8181106119f857505050818184039101528251908183528083019281808460051b8301019501936000915b8483106119ca5750505050505090565b90919293949584806119e8600193601f198682030187528a51611512565b98019301930191949392906119ba565b825115158652948401949184019160010161198f565b3461050c5760408060031936011261050c57600480356001600160401b03811161050c57611a3f9036908301611942565b9290602435611a4d816105cc565b611a5685613eab565b93611a6086613edd565b95600090815b818110611a7b57865180610b5e8b8b83611972565b8280611a8883858a613f3d565b90611a978b5180938193613f83565b0390305af4611aa4613f91565b90801580611b1a575b611af3578291611ace611ad392611ac7611aee968e613fc1565b9015159052565b613fd5565b611add828c613fc1565b52611ae8818b613fc1565b5061350c565b611a66565b8886611b16611b0185613fd5565b925162461bcd60e51b81529283928301611537565b0390fd5b5086611aad565b3461050c576000806003193601126111c057611b4860018060a01b03600554163314612345565b611b56610652600d546104ef565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610dde57611bb7948392611d0b575b50611b986106526009546104ef565b8683600e5487519889928392638eb22cdd60e01b845260048401612eea565b0381845afa958615610dde578496611cec575b5085611bdb575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610dde57611c769584938693611cbe575b5050611c346106526009546104ef565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610dde57610b5e93611c92575b808080611bd1565b611cb190823d8411611cb7575b611ca981836114cc565b8101906140e2565b50611c8a565b503d611c9f565b81611cdd92903d10611ce5575b611cd581836114cc565b8101906141d9565b503880611c24565b503d611ccb565b611d04919650873d8911610dd757610dc881836114cc565b9438611bca565b611d23919250863d8811610dd757610dc881836114cc565b9038611b89565b3461050c57600036600319011261050c576020601a54604051908152f35b3461050c57604036600319011261050c57602435611d65816104fb565b611d7a60018060a01b03600554163314612345565b60008080808094600435905af1611d8f613f91565b5015611d985780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b3461050c57600036600319011261050c57602554604080516001600160401b03808416825292821c909216602083015290f35b3461050c57600036600319011261050c57602060ff602654166040519015158152f35b3461050c57600036600319011261050c576020601e54604051908152f35b3461050c57600036600319011261050c576020602954604051908152f35b3461050c57600036600319011261050c576020610e636135f7565b3461050c57600036600319011261050c57602d546040516001600160a01b039091168152602090f35b3461050c5760031960803682011261050c576001600160401b0360043581811161050c57611edc903690600401611942565b92909160243581811161050c57611ef7903690600401611942565b909160443590811161050c57611f11903690600401611942565b94909160643592611f21846104fb565b6040519660209863cb7940e160e01b8a8a01528060a48a01608060248c01525260c48901949060005b8b828210611fb257505050508784036023190160448901528284526001600160fb1b03831161050c576100199861191c978997610a0f96611fa09660051b80928583013701908882030160648901520191614119565b6001600160a01b039092166084840152565b808498600193949535611fc4816104fb565b848060a01b031681520197019101919091611f4a565b3461050c57610019610a0f612010611ff136610b80565b60405163cce19f8160e01b6020820152948593909290602485016140c0565b614316565b3461050c57608036600319011261050c57610b5e610b4e610b3f60043561203b816104fb565b60243590612048826104fb565b60443590612055826105cc565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526111fd81611496565b3461050c57600036600319011261050c576008546040516001600160a01b039091168152602090f35b3461050c576120ce36610933565b9592809594959291924211610a4a576100199661215793610a3293610a25878a610a1d8b610a0f610a2a996121028661351b565b60405195869460208601988991959493909260c09360e084019760008051602061434183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613590565b3461050c57600036600319011261050c57600b546040516001600160a01b039091168152602090f35b3461050c57602061059a61219836610511565b6001600160a01b0390911660009081526002845260409020610553565b3461050c57600036600319011261050c576009546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601d54604051908152f35b3461050c57600036600319011261050c576006546040516001600160a01b039091168152602090f35b3461050c5760a036600319011261050c57610019600435612245816104fb565b60243590612252826104fb565b6044359061225f826105cc565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152612010816114b1565b3461050c57600036600319011261050c576020601f54604051908152f35b3461050c57600036600319011261050c576020600c54604051908152f35b3461050c57600036600319011261050c57602e546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602854604051908152f35b3461050c57600036600319011261050c57610019613861565b1561234c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906123f09086163314612345565b8061263d575b50838116612609575b50806125d4575b505081169081612574575b505080612556575b5080612538575b508061251b575b50806124f1575b50806124c7575b508061248f575b5080612463575b508061244c5750565b61071f9061245e601e5482101561283d565b601f55565b80612476620186a0612489931115612684565b612484601f548211156127e3565b601e55565b38612443565b806124c1916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861243c565b806124d9620186a06124eb9310612684565b6124e6601b548211612684565b601c55565b38612435565b80612503620186a06125159310612684565b612510601c548210612684565b601b55565b3861242e565b8061252d620186a06125329310612684565b601d55565b38612427565b8061254b620186a0612550931115612684565b601a55565b38612420565b80612569620186a061256e931115612684565b601955565b38612419565b6125cd916125866106526008546104ef565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612411565b6125dd91612718565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612406565b612612906123b2565b7f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386123ff565b80612650620186a061267e931115612684565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b386123f6565b1561268b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126d0575050565b6000906010825260208220906020601f850160051c8301941061270e575b601f0160051c01915b82811061270357505050565b8181556001016126f7565b90925082906126ee565b91906001600160401b0381116114915761273c81612737601054611426565b6126c4565b6000601f82116001146127765781929360009261276b575b50508160011b916000199060031b1c191617601055565b013590503880612754565b6010600052601f198216936000805160206143a183398151915291805b8681106127cb57508360019596106127b1575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127a6565b90926020600181928686013581550194019101612793565b156127ea57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561284457565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128ab57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561291357565b6128e5565b90670de0b6b3a76400009182810292818404149015171561291357565b8181029291811591840414171561291357565b634e487b7160e01b600052601260045260246000fd5b8115612968570490565b612948565b604d811161291357600a0a90565b9190820391821161291357565b9190820180921161291357565b8181039291600013801582851316918412161761291357565b906509184e72a0009182810292818405149015171561291357565b90670de0b6b3a76400009182810292818405149015171561291357565b818102929160008212600160ff1b82141661291357818405149015171561291357565b811561296857600160ff1b8114600019831416612913570590565b600160ff1b81146129135760000390565b60145491929190612a50906001600160801b03831690612935565b9060801c90811561296857612a7d91612a6e910493601f5490612935565b612a778361296d565b9061295e565b90818310612b1157612ae2612adc612ad7612a9b612ae7958761297b565b93612ad2612acc612ac3601e54612abd612ab48661296d565b60215490612988565b90612935565b612a778461296d565b9161296d565b612995565b6129ae565b916129c9565b612a09565b6000811215612b0b57612af990612a24565b905b808211612b06575090565b905090565b90612afb565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c4f57612b9190612b496137cc565b93612b55841515612e8f565b6020612b656106526009546104ef565b600c5490612b728a610539565b5460405163442c159960e01b8152968793849283929160048401612eea565b03915afa928315610dde57612c2695612a77612bf46020612c00612be18a612bdc612bd3612c209c612c0f9a8c91612c32575b50602254620186a09004612abd565b601e5490612935565b61295e565b8551909890612abd906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c2a5750035b94610539565b54612f02565b9091565b915050612c1a565b612c499150873d8111610dd757610dc881836114cc565b38612bc4565b505080919250918190565b919082604091031261050c5760208251612c73816105cc565b92015190565b602080825260009160105491612c8e83611426565b9283828401526001908181169081600014612cf15750600114612cb3575b5050505090565b929350601060005280600020926000935b858510612cdd5750505060409250010138808080612cac565b805485850160400152938201938101612cc4565b925050506040935060ff929192191683830152151560051b010138808080612cac565b6040513d6000823e3d90fd5b15612d2757565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612d6a57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b612db4610652600f546104ef565b6040805163d6d7d52560e01b81529291839081600081612dd660048201612c79565b03925af18015610dde576000928391612e5b575b50908215612e3657612dfd821515612d63565b612e0682601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61071f42601355565b9050612e52612e4a60135460125490612988565b421115612d20565b60115490612e2d565b9050612e7f91925060403d8111612e88575b612e7781836114cc565b810190612c5a565b91909138612dea565b503d612e6d565b15612e9657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b9081602091031261050c575190565b60409060009294936060820195825260208201520152565b612f3e6020831592612f148415612e8f565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401612eea565b03915afa8015610dde57612f5e91600091612f78575b5060225490612935565b906129685704620186a0612f74601e5483612935565b0491565b612f90915060203d8111610dd757610dc881836114cc565b38612f54565b9190916000838201938412911290801582169115161761291357565b90612fc3612fe191612c2084610539565b6001600160a01b039093166000908152601760205260409020909291565b548015612b11578215612b1157828110612b115781811015613079578261303961303461303f9561302f612a77956130256014549160018060801b03831690612935565b9060801c9061295e565b61297b565b6128fb565b9261297b565b61306d601b549161306861305f601c549261305a8487612995565b6129e6565b620186a0900590565b612f96565b90808212612b06575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613173575b156130dd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261316d81611496565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b4565b61010090818180518101031261050c5760208101516131ba816105cc565b6040820151926131c9846104fb565b6060830151946131d8866104fb565b60808401519460a085015160c0860151936131f285610928565b60e08701519601516001600160a01b0392831698831696428310610a4a576132a2956132968a8c610a1d8199610a0f61329b998f8f6000146132b957600080516020614341833981519152965b6132488761351b565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61331a565b16146132ce565b156132b05761071f92613590565b61071f92613543565b6000805160206143818339815191529661323f565b156132d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105369391610a2a9361344e565b600511156113c957565b61333c81613329565b806133445750565b61334d81613329565b600181036133955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61339e81613329565b600281036133eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806133f7600392613329565b146133fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610dde5781516001600160a01b038116156134b4579190565b50600190565b50505050600090600390565b6134ce613082565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176114915760405251902090565b60001981146129135760010190565b6001600160a01b0316600090815260046020526040902080549061353e8261350c565b905590565b60018060a01b038091169182600052600360205283613566826040600020610553565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809116938460005260028352856135d6826040600020610553565b556040519586521693a3565b9081602091031261050c5751610536816104fb565b60265460ff1661373d576014546001600160801b0316801561373657613621610652600a546104ef565b6040518091631848f2bf60e31b825281600460209384935afa918215610dde576004928291600091613709575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610dde5761369b9261368d926000926136ec575b505060295490612935565b670de0b6b3a7640000900490565b808210156136e457612a776136bf926130396136ba602a54809361297b565b612918565b612af9602754916136df61368d602854926136da848761297b565b612935565b612988565b505060275490565b6137029250803d10610dd757610dc881836114cc565b3880613682565b6137299150823d841161372f575b61372181836114cc565b8101906135e2565b3861364e565b503d613717565b5060285490565b6004602061374f610652600a546104ef565b60405163e6abad4960e01b815292839182905afa908115610dde57600091613775575090565b610536915060203d8111610dd757610dc881836114cc565b6040519061379a82611476565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161291357565b600060206040516137dc81611476565b828152015260255460401c6001600160401b0390811642818103939291908411612913574214613856576138516136da91670de0b6b3a764000061384661382161378d565b9660018060801b03958694858a5116906301e1338061383e6135f7565b041690612935565b0416828551166137b3565b168252565b50905061053661378d565b60405161386d81611476565b6025546001600160401b03808216835260409190911c81166020830181815290613897904261297b565b9283156139ed576138e96139c4926138d96138cc6138c06138b66135f7565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b6001600160401b03428616169052565b61397c61392961368d6138fa61378d565b80519097906136da90613915906001600160801b0316612bf4565b8651612abd906001600160401b03166138c0565b855190959061395590613948906001600160801b03808a1691166137b3565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b8051602580546020840151600160401b600160801b0360409190911b166001600160401b039093166001600160801b031990911617919091179055516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b156139fa57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601b60248201527a10908e881b585e081919589d081c985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b9291906004600c546020613a9c610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57613ad692600092610dae57501460ff8019602654169115151617602655565b613ae5610c7e60265460ff1690565b613aef5750505050565b613b16613b1b92613b11613b2096602854151580613b4d575b613b2957602955565b602755565b602855565b602a55565b388080806139ed565b613b348386106139f3565b613b48670de0b6b3a7640000841115613a3a565b602955565b506027541515613b08565b15613b5f57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613b9a57565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610dde5781613c7891600494600091613e77575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b613c8e613c89610652600a546104ef565b612390565b85613c9d610652600a546104ef565b604051631192124760e11b815293849182905afa8015610dde57613d0092600091613e5a575b50818516151580613e4f575b80613e44575b613cde90613b58565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600484613d11610652600a546104ef565b6040516386c8e21d60e01b815292839182905afa928315610dde57613d4a613d7194613d6c93613d7698600092613e27575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b6123b2565b613d7e612da6565b5050613d8c62015f90601955565b613d966000601a55565b8015613e1a57601e555b8015613e0d57601f555b613db9601f54601e5410613b93565b8015613dfb576022555b613dcf62013880601b55565b613ddb62015f90601c55565b613de6612710601d55565b613df06032602055565b61071f612ee0602155565b50613dc3670de0b6b3a7640000602255565b50613daa6201388061245e565b50613da0620124f8612484565b613e3d9250803d10610dd757610dc881836114cc565b3880613d43565b508582161515613cd5565b508181161515613ccf565b613e719150873d891161372f5761372181836114cc565b38613cc3565b613e8e9150893d8b1161372f5761372181836114cc565b38613c55565b6001600160401b0381116114915760051b60200190565b90613eb582613e94565b613ec260405191826114cc565b8281528092613ed3601f1991613e94565b0190602036910137565b90613ee782613e94565b613ef460405191826114cc565b8281528092613f05601f1991613e94565b019060005b828110613f1657505050565b806060602080938501015201613f0a565b634e487b7160e01b600052603260045260246000fd5b9190811015613f7e5760051b81013590601e198136030182121561050c5701803591906001600160401b03831161050c57602001823603811361050c579190565b613f27565b908092918237016000815290565b3d15613fbc573d90613fa282611755565b91613fb060405193846114cc565b82523d6000602084013e565b606090565b8051821015613f7e5760209160051b010190565b6103e881511161408c5760448151106140595760048101518101906020816024840193031261050c576024810151906001600160401b03821161050c57018160438201121561050c57602481015161402c81611755565b9261403a60405194856114cc565b8184526044828401011161050c576105369160446020850191016114ef565b5060405161406681611476565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161409981611476565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b6001600160a01b03918216815291166020820152604081019190915260600190565b919082604091031261050c576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b9082818152602080910193818360051b82010194846000925b858410614143575050505050505090565b90919293949596601f198282030184528735601e198436030181121561050c5783018681019190356001600160401b03811161050c57803603831361050c57614191889283926001956140f8565b990194019401929594939190614132565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b9081602091031261050c5751610536816105cc565b156141f557565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b911561425c57565b611b1661426883613fd5565b60405162461bcd60e51b8152602060048201529182916024830190611512565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602b546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602d546001600160a01b0316801561428857816000929160208493519201905af490614254613f9156fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d61b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122073b4b624c9af05cb4e8a1e991716ab447e030ea18b7c11eaed49f1513332774364736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cb7940e1146103b9578063cce19f81146103b4578063cd0211eb146103af578063ce8849ed146103aa578063d505accf146103a5578063d8dfeb45146103a0578063dd62ed3e1461039b578063de40657714610396578063e0996cb614610391578063e30c39781461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e5761232c565b61230e565b6122e5565b6122c7565b6122a9565b612225565b6121fc565b6121de565b6121b5565b612185565b61215c565b6120c0565b612097565b612015565b611fda565b611eaa565b611e81565b611e66565b611e48565b611e2a565b611e07565b611dd4565b611d48565b611d2a565b611b21565b611a0e565b611921565b611877565b611839565b61180e565b6117f1565b611770565b61172c565b61170e565b6116d1565b61169f565b611675565b611638565b61160f565b611548565b6113e7565b61136c565b611343565b611325565b6112fc565b611259565b61123b565b61121d565b6111c3565b611119565b610f8b565b610f4e565b610f30565b610f12565b610ef4565b610ed0565b610eb2565b610e89565b610e6b565b610e48565b610e2a565b610e01565b610de3565b610beb565b610bc2565b610bac565b610b62565b610a8f565b610978565b6108eb565b6108cf565b6107d8565b61074e565b6106df565b6105d6565b6105a3565b61056a565b6001600160a01b031690565b6001600160a01b0381160361050c57565b600080fd5b604090600319011261050c57600435610529816104fb565b90602435610536816104fb565b90565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b3461050c57602061059a61057d36610511565b6001600160a01b0390911660009081526003845260409020610553565b54604051908152f35b3461050c57600036600319011261050c5760406105be612da6565b825191151582526020820152f35b8015150361050c57565b3461050c57606036600319011261050c576004356105f3816104fb565b60243590610600826105cc565b6044359161060d836105cc565b6005546001600160a01b0391906106279083163314612345565b156106c6578116918215908115916106be575b50156106815761066f916106576106526005546104ef565b6104ef565b600080516020614361833981519152600080a3612390565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861063a565b60068054919092166001600160a01b0319909116179055005b3461050c57604036600319011261050c576107096004356106ff816104fb565b6024359033613590565b602060405160018152f35b359061071f826104fb565b565b9181601f8401121561050c578235916001600160401b03831161050c576020838186019501011161050c57565b3461050c5761018036600319011261050c5760243561076c816104fb565b604435906001600160401b03821161050c5761078f610019923690600401610721565b906064359261079d846104fb565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123d4565b60043590600982101561050c57565b3461050c57604036600319011261050c576107f16107c9565b6024356107fd816105cc565b6008546001600160a01b03163303610893576108828261083161082c610825610019966113ce565b5460ff1690565b151590565b610840841515918214156128a4565b61084c610825836113ce565b610855836113bf565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46113ce565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050c57600036600319011261050c57602060405160008152f35b3461050c57602036600319011261050c57600435610908816104fb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050c57565b60e090600319011261050c5760043561094b816104fb565b90602435610958816104fb565b90604435906064359060843561096d81610928565b9060a4359060c43590565b3461050c5761098636610933565b9592809594959291924211610a4a5761001996610a4593610a3293610a25878a610a1d8b610a0f610a2a996109ba8661351b565b60405195869460208601988991959493909260c09360e084019760008051602061438183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f1981018352826114cc565b5190206134c6565b61344e565b919091613333565b6001600160a01b038381169116146132ce565b613543565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050c5760c036600319011261050c57600435610aac816104fb565b608435610ab8816104fb565b60a435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f610ae9610b4e963690600401610721565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916140f8565b61422a565b60208082518301019101612edb565b6040519081529081906020820190565b0390f35b3461050c57600036600319011261050c576020602a54604051908152f35b606090600319011261050c57600435610b98816104fb565b90602435610ba5816104fb565b9060443590565b3461050c57610bba36610b80565b5050506141a2565b3461050c57600036600319011261050c57602c546040516001600160a01b039091168152602090f35b3461050c57608036600319011261050c576004356024356044359060643592610c1f60018060a01b03600554163314612345565b6004600c546020610c34610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57610c6f92600092610dae575b501460ff8019602654169115151617602655565b610c82610c7e60265460ff1690565b1590565b610c8857005b610c90613861565b80610d69575b5080610d24575b5080610cec575b5080610cac57005b80610cbe620186a061001993106141ee565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d1e916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610ca4565b610d6390610d3560285482116141ee565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c9d565b610da890610d7a60275482106141ee565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c96565b610dd091925060203d8111610dd7575b610dc881836114cc565b810190612edb565b9038610c5b565b503d610dbe565b612d14565b3461050c57600036600319011261050c576020601354604051908152f35b3461050c57600036600319011261050c576014546040516001600160801b039091168152602090f35b3461050c57600036600319011261050c576020601954604051908152f35b3461050c57600036600319011261050c576020610e63613082565b604051908152f35b3461050c57600036600319011261050c576020601254604051908152f35b3461050c57600036600319011261050c57600d546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601154604051908152f35b3461050c57606036600319011261050c576020610e63604435602435600435612a35565b3461050c57600036600319011261050c576020601654604051908152f35b3461050c57600036600319011261050c576020600e54604051908152f35b3461050c57600036600319011261050c576020601554604051908152f35b3461050c57602036600319011261050c57600435610f6b816104fb565b60018060a01b031660005260176020526020604060002054604051908152f35b3461050c57602036600319011261050c576004356001600160401b03811161050c57610fbb903690600401610721565b60ff602354166110de57816101e0918101031261050c57806110a1610fe26110c093610714565b610fee60208401610714565b610ffa60408501610714565b9161108161100a60608701610714565b9361101760808801610714565b9361102460a08901610714565b9361103160e08a01610714565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613bf8565b6101808101359061016081013590610120610140820135910135613a84565b6110cc62015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461050c576000806003193601126111c0576006546001600160a01b03163381900361117c5780611169916111526106526005546104ef565b6000805160206143618339815191528580a3612390565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461050c576040611211611202610a0f6111fd6111df36610b80565b87516314890dcb60e21b6020820152948593909290602485016140c0565b6142c2565b602080825183010191016140e2565b82519182526020820152f35b3461050c57600036600319011261050c576020602154604051908152f35b3461050c57600036600319011261050c576020601c54604051908152f35b3461050c5760a036600319011261050c57600435611276816104fb565b606435611282816104fb565b608435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f6112b3610b4e963690600401610721565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916140f8565b3461050c57600036600319011261050c57602b546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602754604051908152f35b3461050c57600036600319011261050c57600a546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611389816104fb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156113c957565b6113a9565b60098110156113c9576000526007602052604060002090565b3461050c57602036600319011261050c576114006107c9565b60098110156113c9576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611456575b602083101461144057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611435565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761149157604052565b611460565b60c081019081106001600160401b0382111761149157604052565b60e081019081106001600160401b0382111761149157604052565b601f909101601f19168101906001600160401b0382119082101761149157604052565b60005b8381106115025750506000910152565b81810151838201526020016114f2565b9060209161152b815180928185528580860191016114ef565b601f01601f1916010190565b906020610536928181520190611512565b3461050c576000806003193601126111c0576040518160105461156a81611426565b808452906001908181169081156115e757506001146115a0575b610b5e84611594818803826114cc565b60405191829182611537565b60108352602094506000805160206143a18339815191525b8284106115d45750505081610b5e936115949282010193611584565b80548585018701529285019281016115b8565b610b5e96506115949450602092508593915060ff191682840152151560051b82010193611584565b3461050c57600036600319011261050c57600f546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611655816104fb565b60018060a01b031660005260046020526020604060002054604051908152f35b3461050c57604036600319011261050c57610709600435611695816104fb565b6024359033613543565b3461050c57600036600319011261050c57601454604080516001600160801b038316815260809290921c602083015290f35b3461050c57602036600319011261050c576004356116ee816104fb565b60018060a01b031660005260246020526020604060002054604051908152f35b3461050c57600036600319011261050c576020601b54604051908152f35b3461050c57600036600319011261050c576005546040516001600160a01b039091168152602090f35b6001600160401b03811161149157601f01601f191660200190565b3461050c57604036600319011261050c576004356001600160401b03811161050c573660238201121561050c5780600401356117ab81611755565b916117b960405193846114cc565b818352366024838301011161050c5781600092602460209301838601378301015260243561ffff8116810361050c576100199161319c565b3461050c57600036600319011261050c5760208054604051908152f35b3461050c57604036600319011261050c576020610e63600435611830816104fb565b60243590612fb2565b3461050c57604036600319011261050c57606061186460043561185b816104fb565b60243590612b19565b9060405192835260208301526040820152f35b3461050c57608036600319011261050c57600435611894816104fb565b6024356118a0816104fb565b604435906118ad826104fb565b606435926001600160401b03841161050c57610a0f61191c926118d7610019963690600401610721565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916140f8565b6142ec565b3461050c57604036600319011261050c5761193d6004356104fb565b6141a2565b9181601f8401121561050c578235916001600160401b03831161050c576020808501948460051b01011161050c57565b906040820191604081528151809352606081019260208093019060005b8181106119f857505050818184039101528251908183528083019281808460051b8301019501936000915b8483106119ca5750505050505090565b90919293949584806119e8600193601f198682030187528a51611512565b98019301930191949392906119ba565b825115158652948401949184019160010161198f565b3461050c5760408060031936011261050c57600480356001600160401b03811161050c57611a3f9036908301611942565b9290602435611a4d816105cc565b611a5685613eab565b93611a6086613edd565b95600090815b818110611a7b57865180610b5e8b8b83611972565b8280611a8883858a613f3d565b90611a978b5180938193613f83565b0390305af4611aa4613f91565b90801580611b1a575b611af3578291611ace611ad392611ac7611aee968e613fc1565b9015159052565b613fd5565b611add828c613fc1565b52611ae8818b613fc1565b5061350c565b611a66565b8886611b16611b0185613fd5565b925162461bcd60e51b81529283928301611537565b0390fd5b5086611aad565b3461050c576000806003193601126111c057611b4860018060a01b03600554163314612345565b611b56610652600d546104ef565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610dde57611bb7948392611d0b575b50611b986106526009546104ef565b8683600e5487519889928392638eb22cdd60e01b845260048401612eea565b0381845afa958615610dde578496611cec575b5085611bdb575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610dde57611c769584938693611cbe575b5050611c346106526009546104ef565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610dde57610b5e93611c92575b808080611bd1565b611cb190823d8411611cb7575b611ca981836114cc565b8101906140e2565b50611c8a565b503d611c9f565b81611cdd92903d10611ce5575b611cd581836114cc565b8101906141d9565b503880611c24565b503d611ccb565b611d04919650873d8911610dd757610dc881836114cc565b9438611bca565b611d23919250863d8811610dd757610dc881836114cc565b9038611b89565b3461050c57600036600319011261050c576020601a54604051908152f35b3461050c57604036600319011261050c57602435611d65816104fb565b611d7a60018060a01b03600554163314612345565b60008080808094600435905af1611d8f613f91565b5015611d985780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b3461050c57600036600319011261050c57602554604080516001600160401b03808416825292821c909216602083015290f35b3461050c57600036600319011261050c57602060ff602654166040519015158152f35b3461050c57600036600319011261050c576020601e54604051908152f35b3461050c57600036600319011261050c576020602954604051908152f35b3461050c57600036600319011261050c576020610e636135f7565b3461050c57600036600319011261050c57602d546040516001600160a01b039091168152602090f35b3461050c5760031960803682011261050c576001600160401b0360043581811161050c57611edc903690600401611942565b92909160243581811161050c57611ef7903690600401611942565b909160443590811161050c57611f11903690600401611942565b94909160643592611f21846104fb565b6040519660209863cb7940e160e01b8a8a01528060a48a01608060248c01525260c48901949060005b8b828210611fb257505050508784036023190160448901528284526001600160fb1b03831161050c576100199861191c978997610a0f96611fa09660051b80928583013701908882030160648901520191614119565b6001600160a01b039092166084840152565b808498600193949535611fc4816104fb565b848060a01b031681520197019101919091611f4a565b3461050c57610019610a0f612010611ff136610b80565b60405163cce19f8160e01b6020820152948593909290602485016140c0565b614316565b3461050c57608036600319011261050c57610b5e610b4e610b3f60043561203b816104fb565b60243590612048826104fb565b60443590612055826105cc565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526111fd81611496565b3461050c57600036600319011261050c576008546040516001600160a01b039091168152602090f35b3461050c576120ce36610933565b9592809594959291924211610a4a576100199661215793610a3293610a25878a610a1d8b610a0f610a2a996121028661351b565b60405195869460208601988991959493909260c09360e084019760008051602061434183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613590565b3461050c57600036600319011261050c57600b546040516001600160a01b039091168152602090f35b3461050c57602061059a61219836610511565b6001600160a01b0390911660009081526002845260409020610553565b3461050c57600036600319011261050c576009546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601d54604051908152f35b3461050c57600036600319011261050c576006546040516001600160a01b039091168152602090f35b3461050c5760a036600319011261050c57610019600435612245816104fb565b60243590612252826104fb565b6044359061225f826105cc565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152612010816114b1565b3461050c57600036600319011261050c576020601f54604051908152f35b3461050c57600036600319011261050c576020600c54604051908152f35b3461050c57600036600319011261050c57602e546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602854604051908152f35b3461050c57600036600319011261050c57610019613861565b1561234c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906123f09086163314612345565b8061263d575b50838116612609575b50806125d4575b505081169081612574575b505080612556575b5080612538575b508061251b575b50806124f1575b50806124c7575b508061248f575b5080612463575b508061244c5750565b61071f9061245e601e5482101561283d565b601f55565b80612476620186a0612489931115612684565b612484601f548211156127e3565b601e55565b38612443565b806124c1916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861243c565b806124d9620186a06124eb9310612684565b6124e6601b548211612684565b601c55565b38612435565b80612503620186a06125159310612684565b612510601c548210612684565b601b55565b3861242e565b8061252d620186a06125329310612684565b601d55565b38612427565b8061254b620186a0612550931115612684565b601a55565b38612420565b80612569620186a061256e931115612684565b601955565b38612419565b6125cd916125866106526008546104ef565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612411565b6125dd91612718565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612406565b612612906123b2565b7f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386123ff565b80612650620186a061267e931115612684565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b386123f6565b1561268b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126d0575050565b6000906010825260208220906020601f850160051c8301941061270e575b601f0160051c01915b82811061270357505050565b8181556001016126f7565b90925082906126ee565b91906001600160401b0381116114915761273c81612737601054611426565b6126c4565b6000601f82116001146127765781929360009261276b575b50508160011b916000199060031b1c191617601055565b013590503880612754565b6010600052601f198216936000805160206143a183398151915291805b8681106127cb57508360019596106127b1575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127a6565b90926020600181928686013581550194019101612793565b156127ea57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561284457565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128ab57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561291357565b6128e5565b90670de0b6b3a76400009182810292818404149015171561291357565b8181029291811591840414171561291357565b634e487b7160e01b600052601260045260246000fd5b8115612968570490565b612948565b604d811161291357600a0a90565b9190820391821161291357565b9190820180921161291357565b8181039291600013801582851316918412161761291357565b906509184e72a0009182810292818405149015171561291357565b90670de0b6b3a76400009182810292818405149015171561291357565b818102929160008212600160ff1b82141661291357818405149015171561291357565b811561296857600160ff1b8114600019831416612913570590565b600160ff1b81146129135760000390565b60145491929190612a50906001600160801b03831690612935565b9060801c90811561296857612a7d91612a6e910493601f5490612935565b612a778361296d565b9061295e565b90818310612b1157612ae2612adc612ad7612a9b612ae7958761297b565b93612ad2612acc612ac3601e54612abd612ab48661296d565b60215490612988565b90612935565b612a778461296d565b9161296d565b612995565b6129ae565b916129c9565b612a09565b6000811215612b0b57612af990612a24565b905b808211612b06575090565b905090565b90612afb565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c4f57612b9190612b496137cc565b93612b55841515612e8f565b6020612b656106526009546104ef565b600c5490612b728a610539565b5460405163442c159960e01b8152968793849283929160048401612eea565b03915afa928315610dde57612c2695612a77612bf46020612c00612be18a612bdc612bd3612c209c612c0f9a8c91612c32575b50602254620186a09004612abd565b601e5490612935565b61295e565b8551909890612abd906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c2a5750035b94610539565b54612f02565b9091565b915050612c1a565b612c499150873d8111610dd757610dc881836114cc565b38612bc4565b505080919250918190565b919082604091031261050c5760208251612c73816105cc565b92015190565b602080825260009160105491612c8e83611426565b9283828401526001908181169081600014612cf15750600114612cb3575b5050505090565b929350601060005280600020926000935b858510612cdd5750505060409250010138808080612cac565b805485850160400152938201938101612cc4565b925050506040935060ff929192191683830152151560051b010138808080612cac565b6040513d6000823e3d90fd5b15612d2757565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612d6a57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b612db4610652600f546104ef565b6040805163d6d7d52560e01b81529291839081600081612dd660048201612c79565b03925af18015610dde576000928391612e5b575b50908215612e3657612dfd821515612d63565b612e0682601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61071f42601355565b9050612e52612e4a60135460125490612988565b421115612d20565b60115490612e2d565b9050612e7f91925060403d8111612e88575b612e7781836114cc565b810190612c5a565b91909138612dea565b503d612e6d565b15612e9657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b9081602091031261050c575190565b60409060009294936060820195825260208201520152565b612f3e6020831592612f148415612e8f565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401612eea565b03915afa8015610dde57612f5e91600091612f78575b5060225490612935565b906129685704620186a0612f74601e5483612935565b0491565b612f90915060203d8111610dd757610dc881836114cc565b38612f54565b9190916000838201938412911290801582169115161761291357565b90612fc3612fe191612c2084610539565b6001600160a01b039093166000908152601760205260409020909291565b548015612b11578215612b1157828110612b115781811015613079578261303961303461303f9561302f612a77956130256014549160018060801b03831690612935565b9060801c9061295e565b61297b565b6128fb565b9261297b565b61306d601b549161306861305f601c549261305a8487612995565b6129e6565b620186a0900590565b612f96565b90808212612b06575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613173575b156130dd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261316d81611496565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b4565b61010090818180518101031261050c5760208101516131ba816105cc565b6040820151926131c9846104fb565b6060830151946131d8866104fb565b60808401519460a085015160c0860151936131f285610928565b60e08701519601516001600160a01b0392831698831696428310610a4a576132a2956132968a8c610a1d8199610a0f61329b998f8f6000146132b957600080516020614341833981519152965b6132488761351b565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61331a565b16146132ce565b156132b05761071f92613590565b61071f92613543565b6000805160206143818339815191529661323f565b156132d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105369391610a2a9361344e565b600511156113c957565b61333c81613329565b806133445750565b61334d81613329565b600181036133955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61339e81613329565b600281036133eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806133f7600392613329565b146133fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610dde5781516001600160a01b038116156134b4579190565b50600190565b50505050600090600390565b6134ce613082565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176114915760405251902090565b60001981146129135760010190565b6001600160a01b0316600090815260046020526040902080549061353e8261350c565b905590565b60018060a01b038091169182600052600360205283613566826040600020610553565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809116938460005260028352856135d6826040600020610553565b556040519586521693a3565b9081602091031261050c5751610536816104fb565b60265460ff1661373d576014546001600160801b0316801561373657613621610652600a546104ef565b6040518091631848f2bf60e31b825281600460209384935afa918215610dde576004928291600091613709575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610dde5761369b9261368d926000926136ec575b505060295490612935565b670de0b6b3a7640000900490565b808210156136e457612a776136bf926130396136ba602a54809361297b565b612918565b612af9602754916136df61368d602854926136da848761297b565b612935565b612988565b505060275490565b6137029250803d10610dd757610dc881836114cc565b3880613682565b6137299150823d841161372f575b61372181836114cc565b8101906135e2565b3861364e565b503d613717565b5060285490565b6004602061374f610652600a546104ef565b60405163e6abad4960e01b815292839182905afa908115610dde57600091613775575090565b610536915060203d8111610dd757610dc881836114cc565b6040519061379a82611476565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161291357565b600060206040516137dc81611476565b828152015260255460401c6001600160401b0390811642818103939291908411612913574214613856576138516136da91670de0b6b3a764000061384661382161378d565b9660018060801b03958694858a5116906301e1338061383e6135f7565b041690612935565b0416828551166137b3565b168252565b50905061053661378d565b60405161386d81611476565b6025546001600160401b03808216835260409190911c81166020830181815290613897904261297b565b9283156139ed576138e96139c4926138d96138cc6138c06138b66135f7565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b6001600160401b03428616169052565b61397c61392961368d6138fa61378d565b80519097906136da90613915906001600160801b0316612bf4565b8651612abd906001600160401b03166138c0565b855190959061395590613948906001600160801b03808a1691166137b3565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b8051602580546020840151600160401b600160801b0360409190911b166001600160401b039093166001600160801b031990911617919091179055516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b156139fa57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601b60248201527a10908e881b585e081919589d081c985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b9291906004600c546020613a9c610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57613ad692600092610dae57501460ff8019602654169115151617602655565b613ae5610c7e60265460ff1690565b613aef5750505050565b613b16613b1b92613b11613b2096602854151580613b4d575b613b2957602955565b602755565b602855565b602a55565b388080806139ed565b613b348386106139f3565b613b48670de0b6b3a7640000841115613a3a565b602955565b506027541515613b08565b15613b5f57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613b9a57565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610dde5781613c7891600494600091613e77575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b613c8e613c89610652600a546104ef565b612390565b85613c9d610652600a546104ef565b604051631192124760e11b815293849182905afa8015610dde57613d0092600091613e5a575b50818516151580613e4f575b80613e44575b613cde90613b58565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600484613d11610652600a546104ef565b6040516386c8e21d60e01b815292839182905afa928315610dde57613d4a613d7194613d6c93613d7698600092613e27575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b6123b2565b613d7e612da6565b5050613d8c62015f90601955565b613d966000601a55565b8015613e1a57601e555b8015613e0d57601f555b613db9601f54601e5410613b93565b8015613dfb576022555b613dcf62013880601b55565b613ddb62015f90601c55565b613de6612710601d55565b613df06032602055565b61071f612ee0602155565b50613dc3670de0b6b3a7640000602255565b50613daa6201388061245e565b50613da0620124f8612484565b613e3d9250803d10610dd757610dc881836114cc565b3880613d43565b508582161515613cd5565b508181161515613ccf565b613e719150873d891161372f5761372181836114cc565b38613cc3565b613e8e9150893d8b1161372f5761372181836114cc565b38613c55565b6001600160401b0381116114915760051b60200190565b90613eb582613e94565b613ec260405191826114cc565b8281528092613ed3601f1991613e94565b0190602036910137565b90613ee782613e94565b613ef460405191826114cc565b8281528092613f05601f1991613e94565b019060005b828110613f1657505050565b806060602080938501015201613f0a565b634e487b7160e01b600052603260045260246000fd5b9190811015613f7e5760051b81013590601e198136030182121561050c5701803591906001600160401b03831161050c57602001823603811361050c579190565b613f27565b908092918237016000815290565b3d15613fbc573d90613fa282611755565b91613fb060405193846114cc565b82523d6000602084013e565b606090565b8051821015613f7e5760209160051b010190565b6103e881511161408c5760448151106140595760048101518101906020816024840193031261050c576024810151906001600160401b03821161050c57018160438201121561050c57602481015161402c81611755565b9261403a60405194856114cc565b8184526044828401011161050c576105369160446020850191016114ef565b5060405161406681611476565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161409981611476565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b6001600160a01b03918216815291166020820152604081019190915260600190565b919082604091031261050c576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b9082818152602080910193818360051b82010194846000925b858410614143575050505050505090565b90919293949596601f198282030184528735601e198436030181121561050c5783018681019190356001600160401b03811161050c57803603831361050c57614191889283926001956140f8565b990194019401929594939190614132565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b9081602091031261050c5751610536816105cc565b156141f557565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b911561425c57565b611b1661426883613fd5565b60405162461bcd60e51b8152602060048201529182916024830190611512565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602b546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602d546001600160a01b0316801561428857816000929160208493519201905af490614254613f9156fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d61b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122073b4b624c9af05cb4e8a1e991716ab447e030ea18b7c11eaed49f1513332774364736f6c63430008120033", + "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556145619283620001ab843960805183613123015260a051836131de015260c051836130ed015260e05183613172015251826131980152518161314f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220fb29a2f0378ac34617491f225c4a2f783a294a870969c33fa8889c53ee7be1ca64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220fb29a2f0378ac34617491f225c4a2f783a294a870969c33fa8889c53ee7be1ca64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/MarketERC20.json b/src/artifacts/tapioca-bar/MarketERC20.json index 0ae1d2ff..cfc80cf8 100644 --- a/src/artifacts/tapioca-bar/MarketERC20.json +++ b/src/artifacts/tapioca-bar/MarketERC20.json @@ -407,8 +407,8 @@ "type": "function" } ], - "bytecode": "0x61014060409080825234610198576110a8803803809161001f828561019d565b83398101602080838303126101985782516001600160401b0393848211610198570182601f820112156101985780519084821161016e5785519361006c601f8401601f191685018661019d565b82855283838301011161019857829060005b8381106101845750506000918401015283518481018181108582111761016e57600191839187528281520192603160f81b84528281519101209220908260e052610100948286524660a0528051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f948585528284015260608301524660808301523060a083015260a0825260c08201948286109086111761016e578490525190206080523060c052610120908152610ee792836101c1843960805183610a54015260a05183610b1e015260c05183610a1e015260e05183610aa301525182610ac901525181610a800152f35b634e487b7160e01b600052604160045260246000fd5b81810183015186820184015284920161007e565b600080fd5b601f909101601f19168101906001600160401b0382119082101761016e5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461090257508063095ea7b3146108db57806318160ddd146108bf5780631da8bf101461081157806323b872dd146106745780633644e5151461065157806370a08231146106185780637ecebe00146105df5780637fa0b84e146105ad578063910dd7c814610372578063a9059cbb1461028f578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd61094e565b6100d5610969565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b3661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826101df9694928d9260016101d79896019055604051916020830193600080516020610e52833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b5190206101a6610a1b565b9060405190602082019261190160f01b845260228301526042820152604281526101cf81610a00565b519020610d27565b919091610c12565b16036101f1576101ee92610dfa565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102a961094e565b60243580928115801590610360575b6102f0575b50506040519182526001600160a01b0316903390600080516020610e9283398151915290602090a3602060405160018152f35b3381526001602052604081205461030983821015610b44565b6001600160a01b0384169033829003610324575b50506102bd565b60409361033b91610336841515610b89565b610bce565b338352600160205283832055815220610355838254610bf1565b90558138808061031d565b50336001600160a01b038416146102b8565b50346100f95760403660031901126100f9576001600160401b036004358181116105815736602382011215610581578060040135908282116105995760405192601f8301601f19908116603f01168401908111848210176105855790849160405282845260208401923660248284010111610581578060246020930185378401015260243561ffff8116810361057d57610100918284805181010312610579575180151581036105795761042860408501610bfe565b9161043560608601610bfe565b9460808101519460a08201519260c08301519160ff831683036105755760e08401519301519380421161024a57851561056057600080516020610e52833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461054c579161ffff610509989694926101d798969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526104fa816109ce565b602081519101206101a6610a1b565b6001600160a01b038381169116036101f15715610536576101ee926001600160a01b039081169116610dfa565b6101ee926001600160a01b039081169116610dac565b634e487b7160e01b8d52601160045260248dfd5b600080516020610e7283398151915291610479565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f9576105d46105ca61094e565b6024359033610dac565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361060761094e565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361064061094e565b168152600183522054604051908152f35b50346100f957806003193601126100f957602061066c610a1b565b604051908152f35b50346100f95760603660031901126100f95761068e61094e565b90610697610969565b60443591826106d5575b506040519182526001600160a01b03908116921690600080516020610e9283398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906106fe82861015610b44565b861693848403610713575b50505050506106a1565b83865260028352604080872033885284528620546001810161077d575b509260016020969361075b8794604097610336600080516020610e928339815191529c9a1515610b89565b9285525283832055815220610771858254610bf1565b90559138808581610709565b909181106107d1579260016020969361075b8a600080516020610e928339815191529a98956107ae8260409a610bce565b86895260028552898920338a528552898920559497509497995050939650610730565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f9576108203661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826108b09694928d9260016101d79896019055604051916020830193600080516020610e72833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b16036101f1576101ee92610dac565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f9576105d46108f861094e565b6024359033610dfa565b90503461094a57604036600319011261094a57604060209261092261094e565b61092a610969565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b038216820361096457565b600080fd5b602435906001600160a01b038216820361096457565b60e0906003190112610964576001600160a01b03906004358281168103610964579160243590811681036109645790604435906064359060843560ff81168103610964579060a4359060c43590565b61010081019081106001600160401b038211176109ea57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176109ea57604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b1b575b15610a76577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109ea5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a4d565b15610b4b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610b9057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610bdb57565b634e487b7160e01b600052601160045260246000fd5b91908201809211610bdb57565b51906001600160a01b038216820361096457565b6005811015610d115780610c235750565b60018103610c6b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610cb85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610cc157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610da05791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d935781516001600160a01b03811615610d8d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122071e76137c0b000026748d85278d3ade3bcde71fe0aaaa78b16352569a8724e6e64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461090257508063095ea7b3146108db57806318160ddd146108bf5780631da8bf101461081157806323b872dd146106745780633644e5151461065157806370a08231146106185780637ecebe00146105df5780637fa0b84e146105ad578063910dd7c814610372578063a9059cbb1461028f578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd61094e565b6100d5610969565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b3661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826101df9694928d9260016101d79896019055604051916020830193600080516020610e52833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b5190206101a6610a1b565b9060405190602082019261190160f01b845260228301526042820152604281526101cf81610a00565b519020610d27565b919091610c12565b16036101f1576101ee92610dfa565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102a961094e565b60243580928115801590610360575b6102f0575b50506040519182526001600160a01b0316903390600080516020610e9283398151915290602090a3602060405160018152f35b3381526001602052604081205461030983821015610b44565b6001600160a01b0384169033829003610324575b50506102bd565b60409361033b91610336841515610b89565b610bce565b338352600160205283832055815220610355838254610bf1565b90558138808061031d565b50336001600160a01b038416146102b8565b50346100f95760403660031901126100f9576001600160401b036004358181116105815736602382011215610581578060040135908282116105995760405192601f8301601f19908116603f01168401908111848210176105855790849160405282845260208401923660248284010111610581578060246020930185378401015260243561ffff8116810361057d57610100918284805181010312610579575180151581036105795761042860408501610bfe565b9161043560608601610bfe565b9460808101519460a08201519260c08301519160ff831683036105755760e08401519301519380421161024a57851561056057600080516020610e52833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461054c579161ffff610509989694926101d798969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526104fa816109ce565b602081519101206101a6610a1b565b6001600160a01b038381169116036101f15715610536576101ee926001600160a01b039081169116610dfa565b6101ee926001600160a01b039081169116610dac565b634e487b7160e01b8d52601160045260248dfd5b600080516020610e7283398151915291610479565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f9576105d46105ca61094e565b6024359033610dac565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361060761094e565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361064061094e565b168152600183522054604051908152f35b50346100f957806003193601126100f957602061066c610a1b565b604051908152f35b50346100f95760603660031901126100f95761068e61094e565b90610697610969565b60443591826106d5575b506040519182526001600160a01b03908116921690600080516020610e9283398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906106fe82861015610b44565b861693848403610713575b50505050506106a1565b83865260028352604080872033885284528620546001810161077d575b509260016020969361075b8794604097610336600080516020610e928339815191529c9a1515610b89565b9285525283832055815220610771858254610bf1565b90559138808581610709565b909181106107d1579260016020969361075b8a600080516020610e928339815191529a98956107ae8260409a610bce565b86895260028552898920338a528552898920559497509497995050939650610730565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f9576108203661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826108b09694928d9260016101d79896019055604051916020830193600080516020610e72833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b16036101f1576101ee92610dac565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f9576105d46108f861094e565b6024359033610dfa565b90503461094a57604036600319011261094a57604060209261092261094e565b61092a610969565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b038216820361096457565b600080fd5b602435906001600160a01b038216820361096457565b60e0906003190112610964576001600160a01b03906004358281168103610964579160243590811681036109645790604435906064359060843560ff81168103610964579060a4359060c43590565b61010081019081106001600160401b038211176109ea57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176109ea57604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b1b575b15610a76577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109ea5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a4d565b15610b4b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610b9057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610bdb57565b634e487b7160e01b600052601160045260246000fd5b91908201809211610bdb57565b51906001600160a01b038216820361096457565b6005811015610d115780610c235750565b60018103610c6b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610cb85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610cc157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610da05791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d935781516001600160a01b03811615610d8d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122071e76137c0b000026748d85278d3ade3bcde71fe0aaaa78b16352569a8724e6e64736f6c63430008120033", + "bytecode": "0x61014060409080825234610198576110b5803803809161001f828561019d565b83398101602080838303126101985782516001600160401b0393848211610198570182601f820112156101985780519084821161016e5785519361006c601f8401601f191685018661019d565b82855283838301011161019857829060005b8381106101845750506000918401015283518481018181108582111761016e57600191839187528281520192603160f81b84528281519101209220908260e052610100948286524660a0528051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f948585528284015260608301524660808301523060a083015260a0825260c08201948286109086111761016e578490525190206080523060c052610120908152610ef492836101c1843960805183610a9f015260a05183610b6b015260c05183610a69015260e05183610aee01525182610b1401525181610acb0152f35b634e487b7160e01b600052604160045260246000fd5b81810183015186820184015284920161007e565b600080fd5b601f909101601f19168101906001600160401b0382119082101761016e5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461094b57508063095ea7b31461092457806318160ddd146109085780631da8bf101461084857806323b872dd146106ab5780633644e5151461068857806370a082311461064f5780637ecebe00146106165780637fa0b84e146105e4578063910dd7c814610384578063a9059cbb146102a1578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd610997565b6100d56109b2565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826101f19694928d9260016101e998960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b5190206101b8610a66565b9060405190602082019261190160f01b845260228301526042820152604281526101e181610a4a565b519020610d74565b919091610c5f565b16036102035761020092610e47565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102bb610997565b60243580928115801590610372575b610302575b50506040519182526001600160a01b0316903390600080516020610e9f83398151915290602090a3602060405160018152f35b3381526001602052604081205461031b83821015610b91565b6001600160a01b0384169033829003610336575b50506102cf565b60409361034d91610348841515610bd6565b610c1b565b338352600160205283832055815220610367838254610c3e565b90558138808061032f565b50336001600160a01b038416146102ca565b50346100f95760403660031901126100f95767ffffffffffffffff6004358181116105b857366023820112156105b8578060040135908282116105d05760405192601f8301601f19908116603f01168401908111848210176105bc57908491604052828452602084019236602482840101116105b8578060246020930185378401015260243561ffff811681036105b4576101009182848051810103126105b0575180151581036105b05761043b60408501610c4b565b9161044860608601610c4b565b9460808101519460a08201519260c08301519160ff831683036105ac5760e08401519301519380421161025c578515610585577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610571579161ffff61052e989694926101e998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261051f81610a17565b602081519101206101b8610a66565b6001600160a01b03838116911603610203571561055b57610200926001600160a01b039081169116610e47565b610200926001600160a01b039081169116610df9565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161049e565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f95761060b610601610997565b6024359033610df9565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361063e610997565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b03610677610997565b168152600183522054604051908152f35b50346100f957806003193601126100f95760206106a3610a66565b604051908152f35b50346100f95760603660031901126100f9576106c5610997565b906106ce6109b2565b604435918261070c575b506040519182526001600160a01b03908116921690600080516020610e9f83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061073582861015610b91565b86169384840361074a575b50505050506106d8565b8386526002835260408087203388528452862054600181016107b4575b50926001602096936107928794604097610348600080516020610e9f8339815191529c9a1515610bd6565b92855252838320558152206107a8858254610c3e565b90559138808581610740565b9091811061080857926001602096936107928a600080516020610e9f8339815191529a98956107e58260409a610c1b565b86895260028552898920338a528552898920559497509497995050939650610767565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f957610857366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826108f99694928d9260016101e998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b16036102035761020092610df9565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f95761060b610941610997565b6024359033610e47565b90503461099357604036600319011261099357604060209261096b610997565b6109736109b2565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b03821682036109ad57565b600080fd5b602435906001600160a01b03821682036109ad57565b60e09060031901126109ad576001600160a01b039060043582811681036109ad579160243590811681036109ad5790604435906064359060843560ff811681036109ad579060a4359060c43590565b610100810190811067ffffffffffffffff821117610a3457604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117610a3457604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b68575b15610ac1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610a345760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a98565b15610b9857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610bdd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b51906001600160a01b03821682036109ad57565b6005811015610d5e5780610c705750565b60018103610cb85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610d055760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610d0e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610ded5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610de05781516001600160a01b03811615610dda579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122016cc024f749c768f11ee5e9fb75a7ea580fb627e06bedbcf0e3f1717802ff8fa64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461094b57508063095ea7b31461092457806318160ddd146109085780631da8bf101461084857806323b872dd146106ab5780633644e5151461068857806370a082311461064f5780637ecebe00146106165780637fa0b84e146105e4578063910dd7c814610384578063a9059cbb146102a1578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd610997565b6100d56109b2565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826101f19694928d9260016101e998960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b5190206101b8610a66565b9060405190602082019261190160f01b845260228301526042820152604281526101e181610a4a565b519020610d74565b919091610c5f565b16036102035761020092610e47565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102bb610997565b60243580928115801590610372575b610302575b50506040519182526001600160a01b0316903390600080516020610e9f83398151915290602090a3602060405160018152f35b3381526001602052604081205461031b83821015610b91565b6001600160a01b0384169033829003610336575b50506102cf565b60409361034d91610348841515610bd6565b610c1b565b338352600160205283832055815220610367838254610c3e565b90558138808061032f565b50336001600160a01b038416146102ca565b50346100f95760403660031901126100f95767ffffffffffffffff6004358181116105b857366023820112156105b8578060040135908282116105d05760405192601f8301601f19908116603f01168401908111848210176105bc57908491604052828452602084019236602482840101116105b8578060246020930185378401015260243561ffff811681036105b4576101009182848051810103126105b0575180151581036105b05761043b60408501610c4b565b9161044860608601610c4b565b9460808101519460a08201519260c08301519160ff831683036105ac5760e08401519301519380421161025c578515610585577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610571579161ffff61052e989694926101e998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261051f81610a17565b602081519101206101b8610a66565b6001600160a01b03838116911603610203571561055b57610200926001600160a01b039081169116610e47565b610200926001600160a01b039081169116610df9565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161049e565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f95761060b610601610997565b6024359033610df9565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361063e610997565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b03610677610997565b168152600183522054604051908152f35b50346100f957806003193601126100f95760206106a3610a66565b604051908152f35b50346100f95760603660031901126100f9576106c5610997565b906106ce6109b2565b604435918261070c575b506040519182526001600160a01b03908116921690600080516020610e9f83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061073582861015610b91565b86169384840361074a575b50505050506106d8565b8386526002835260408087203388528452862054600181016107b4575b50926001602096936107928794604097610348600080516020610e9f8339815191529c9a1515610bd6565b92855252838320558152206107a8858254610c3e565b90559138808581610740565b9091811061080857926001602096936107928a600080516020610e9f8339815191529a98956107e58260409a610c1b565b86895260028552898920338a528552898920559497509497995050939650610767565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f957610857366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826108f99694928d9260016101e998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b16036102035761020092610df9565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f95761060b610941610997565b6024359033610e47565b90503461099357604036600319011261099357604060209261096b610997565b6109736109b2565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b03821682036109ad57565b600080fd5b602435906001600160a01b03821682036109ad57565b60e09060031901126109ad576001600160a01b039060043582811681036109ad579160243590811681036109ad5790604435906064359060843560ff811681036109ad579060a4359060c43590565b610100810190811067ffffffffffffffff821117610a3457604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117610a3457604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b68575b15610ac1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610a345760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a98565b15610b9857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610bdd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b51906001600160a01b03821682036109ad57565b6005811015610d5e5780610c705750565b60018103610cb85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610d055760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610d0e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610ded5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610de05781516001600160a01b03811615610dda579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122016cc024f749c768f11ee5e9fb75a7ea580fb627e06bedbcf0e3f1717802ff8fa64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/MarketLiquidatorReceiver.json b/src/artifacts/tapioca-bar/MarketLiquidatorReceiver.json new file mode 100644 index 00000000..c2d1a050 --- /dev/null +++ b/src/artifacts/tapioca-bar/MarketLiquidatorReceiver.json @@ -0,0 +1,332 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MarketLiquidatorReceiver", + "sourceName": "contracts/markets/MarketLiquidatorReceiver.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oracle", + "type": "address" + } + ], + "name": "OracleAssigned", + "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": "tokenIn", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "swapper", + "type": "address" + } + ], + "name": "SwapperAssigned", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + } + ], + "name": "allowances", + "outputs": [ + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_precision", + "type": "uint256" + } + ], + "name": "assignOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "_swapper", + "type": "address" + } + ], + "name": "assignSwapper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claimOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onCollateralReceiver", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + } + ], + "name": "oracles", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "precision", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + } + ], + "name": "swappers", + "outputs": [ + { + "internalType": "address", + "name": "swapper", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + }, + { + "internalType": "bool", + "name": "direct", + "type": "bool" + }, + { + "internalType": "bool", + "name": "renounce", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080806040523461005757600080546001600160a01b0319919082169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a333913316171760005561131c908161005d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe714611060578063124c238314610e3d5780634e71e0c814610d8f57806355b6ed5c14610d3e5780635cd3dc15146103985780636c43a2ca146103315780638cad7fbe146102f65780638da5cb5b146102cd578063addd5099146101a5578063bbcd821e1461011f578063d73b1dc9146100ce5763e30c3978146100a057600080fd5b346100c95760003660031901126100c9576001546040516001600160a01b039091168152602090f35b600080fd5b346100c9576100dc366111eb565b9160018060a01b0380916100f58260005416331461125a565b1660005260046020526040600020911660005260205261011b60406000209182546112a5565b9055005b346100c95760403660031901126100c957610138611168565b61014061117e565b9060018060a01b0380916101598260005416331461125a565b16600081815260036020526040812080546001600160a01b03191694909316938417909255907fa02b5255ee60d1f9af74443960734d51468cf7ee586533c5b820a8cadd53cc6a9080a3005b346100c9576020806003193601126100c9576001600160a01b03806101c8611168565b166000526002825260406000206040519060009281546101e781611220565b8085526001918783821691826000146102ae575050600114610277575b5061021584600294959603866111ca565b8301541691015492604051938492606084528451928360608601526000955b84871061025e57506080955060008685870101528401526040830152601f80199101168101030190f35b8681018201518888016080015295810195879550610234565b94508260005285806000206000905b87821061029b57508501019450610215610204565b8054878301840152908201908301610286565b60ff19168188015291151560051b860190910195506102159050610204565b346100c95760003660031901126100c9576000546040516001600160a01b039091168152602090f35b346100c95760203660031901126100c95760206001600160a01b038061031a611168565b166000526003825260406000205416604051908152f35b346100c95761033f366111eb565b9160018060a01b0380916103588260005416331461125a565b16600052600460205260406000209116600052602052604060002080549182018092116103825755005b634e487b7160e01b600052601160045260246000fd5b346100c95760a03660031901126100c9576103b1611168565b6103b961117e565b90604435906001600160a01b03821682036100c9576001600160401b03608435116100c9573660236084350112156100c95760843560040135906001600160401b0382116100c957366024836084350101116100c957600554610ced5760016005556000546001600160a01b0390811690821603610c97576040516370a0823160e01b81523060048201526020816024816001600160a01b0389165afa90811561079757600091610c65575b5060643511610c14576001600160a01b038481166000908152600260205260409020600101541615610bba576001600160a01b038481166000908152600360205260409020541615610b5f576001600160a01b03163303610aa1575b602090608435906084350103126100c95760018060a01b0382166000526002602052604060002060018060a01b03600182015416604051809263d6d7d52560e01b82526020600483015260009080549061051a82611220565b91826024860152600181169081600014610a7b5750600114610a3e575b5050918160008160409503925af1908115610797576000906000926109fd575b50156109a157801561094b5761056f906064356112d3565b60018060a01b03831660005260026020526002604060002001548015610935576105ae91046127106105a760246084350135836112d3565b04906112a5565b9182156108d9576001600160a01b03818116600081815260036020526040808220549051631fd177af60e11b81526004810193909352948316602483015260648035604484015282018190526084820181905260a482015292610140918291859160c4918391165afa928315610797576000936107a3575b50506001600160a01b03908116600090815260036020908152604080832054815163efa84c6d60e01b815286518051871660048301528085015160248301528084015187166044830152606090810151606483015284880151805160848401528086015160a48401528085015160c4840152015160e48201529582015180511515610104880152909201511515610124860152610144850195909552336101648501526101a06101848501526101a4840182905292939284926101c49284929091165af190811561079757600091610762575b501561070f576000600555602060405160018152f35b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65744c697175696461746f7252656365697665723a20537761702066604482015264185a5b195960da1b6064820152608490fd5b90506040813d60401161078f575b8161077d604093836111ca565b810103126100c95760200151816106f9565b3d9150610770565b6040513d6000823e3d90fd5b81819294503d85116108d2575b6107ba81836111ca565b8101039283126100c957604051926107d184611194565b608081126100c9576040516107e5816111af565b6107ee836112b2565b815260208301516020820152610806604084016112b2565b60408201526060830151606082015284526080607f198201126100c9576040908151610831816111af565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602086015260ff1901126100c95760405191604083018381106001600160401b038211176108bc5760209560409586956108a96101206101c4976000968a526108a161010082016112c6565b8452016112c6565b8982015286820152955095505091610626565b634e487b7160e01b600052604160045260246000fd5b503d6107b0565b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206d696e20616d60448201526d1bdd5b9d081b9bdd081d985b1a5960921b6064820152608490fd5b634e487b7160e01b600052601260045260246000fd5b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a2072617465206e6044820152671bdd081d985b1a5960c21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206f7261636c6560448201526d0818d85b1b19590819985a5b195960921b6064820152608490fd5b9150506040813d604011610a36575b81610a19604093836111ca565b810103126100c9576020610a2c826112c6565b9101519084610557565b3d9150610a0c565b6000908152602081209092505b818310610a615750508101604401816000610537565b805460448488010152859350602090920191600101610a4b565b60ff191660448087019190915292151560051b8501909201925083915060009050610537565b336000526004602052604060002060018060a01b03841660005260205260643560406000205410610b05576020903360005260048252604060002060018060a01b03851660005282526040600020610afc60643582546112a5565b905590506104c1565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a2073656e64657260448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f2073776160448201526c1c1c195c88185cdcda59db9959609a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f206f726160448201526b18db1948185cdcda59db995960a21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a206e6f7420656e6044820152630deeaced60e31b6064820152608490fd5b90506020813d602011610c8f575b81610c80602093836111ca565b810103126100c9575185610465565b3d9150610c73565b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a207265656e7472604482015263616e637960e01b6064820152608490fd5b346100c95760403660031901126100c957610d57611168565b610d5f61117e565b9060018060a01b038091166000526004602052604060002091166000526020526020604060002054604051908152f35b346100c95760003660031901126100c9576001546001600160a01b039081811633819003610df957806000549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760005516600155005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346100c95760803660031901126100c957610e56611168565b610e5e61117e565b6001600160401b0391906044358381116100c957366023820112156100c9578060040135928484116108bc5760405192602094601f1993610ea68786601f85011601876111ca565b81865236602483830101116100c95781600092602489930183890137860101526000546001600160a01b0390610edf908216331461125a565b60405194610eec86611194565b8552808686019216968783528160408701946064358652169687600052600281526040600020965180519283116108bc57610f278854611220565b601f811161101a575b5081601f8411600114610fac5750600296506000919083610fa1575b50508160011b916000199060031b1c19161785555b6001850191511660018060a01b0319825416179055519101557fd35615cf633cdd04206b370029477f61d6ad0a5bac9f345812359d782d14e89c600080a3005b015190508980610f4c565b929394959684168860005283600020936000905b8282106110025750509160019391856002999897969410610fe9575b505050811b018555610f61565b015160001960f88460031b161c19169055898080610fdc565b80600186978294978701518155019601940190610fc0565b8860005282600020601f850160051c810191848610611056575b601f0160051c01905b81811061104a5750610f30565b6000815560010161103d565b9091508190611034565b346100c95760603660031901126100c957611079611168565b60243580151581036100c9576044359081151582036100c95760018060a01b039283916110ab8360005416331461125a565b1561114f571690811590811591611147575b501561110a57806000549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600055600180549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836110bd565b9150501660018060a01b03196001541617600155600080f35b600435906001600160a01b03821682036100c957565b602435906001600160a01b03821682036100c957565b606081019081106001600160401b038211176108bc57604052565b608081019081106001600160401b038211176108bc57604052565b90601f801991011681019081106001600160401b038211176108bc57604052565b60609060031901126100c9576001600160a01b039060043582811681036100c9579160243590811681036100c9579060443590565b90600182811c92168015611250575b602083101461123a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161122f565b1561126157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9190820391821161038257565b51906001600160a01b03821682036100c957565b519081151582036100c957565b818102929181159184041417156103825756fea2646970667358221220b075749cdc319c0c8cc6204f1e9b284325e6c11aa490e15527bfdac6612484ef64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8063078dfbe714611060578063124c238314610e3d5780634e71e0c814610d8f57806355b6ed5c14610d3e5780635cd3dc15146103985780636c43a2ca146103315780638cad7fbe146102f65780638da5cb5b146102cd578063addd5099146101a5578063bbcd821e1461011f578063d73b1dc9146100ce5763e30c3978146100a057600080fd5b346100c95760003660031901126100c9576001546040516001600160a01b039091168152602090f35b600080fd5b346100c9576100dc366111eb565b9160018060a01b0380916100f58260005416331461125a565b1660005260046020526040600020911660005260205261011b60406000209182546112a5565b9055005b346100c95760403660031901126100c957610138611168565b61014061117e565b9060018060a01b0380916101598260005416331461125a565b16600081815260036020526040812080546001600160a01b03191694909316938417909255907fa02b5255ee60d1f9af74443960734d51468cf7ee586533c5b820a8cadd53cc6a9080a3005b346100c9576020806003193601126100c9576001600160a01b03806101c8611168565b166000526002825260406000206040519060009281546101e781611220565b8085526001918783821691826000146102ae575050600114610277575b5061021584600294959603866111ca565b8301541691015492604051938492606084528451928360608601526000955b84871061025e57506080955060008685870101528401526040830152601f80199101168101030190f35b8681018201518888016080015295810195879550610234565b94508260005285806000206000905b87821061029b57508501019450610215610204565b8054878301840152908201908301610286565b60ff19168188015291151560051b860190910195506102159050610204565b346100c95760003660031901126100c9576000546040516001600160a01b039091168152602090f35b346100c95760203660031901126100c95760206001600160a01b038061031a611168565b166000526003825260406000205416604051908152f35b346100c95761033f366111eb565b9160018060a01b0380916103588260005416331461125a565b16600052600460205260406000209116600052602052604060002080549182018092116103825755005b634e487b7160e01b600052601160045260246000fd5b346100c95760a03660031901126100c9576103b1611168565b6103b961117e565b90604435906001600160a01b03821682036100c9576001600160401b03608435116100c9573660236084350112156100c95760843560040135906001600160401b0382116100c957366024836084350101116100c957600554610ced5760016005556000546001600160a01b0390811690821603610c97576040516370a0823160e01b81523060048201526020816024816001600160a01b0389165afa90811561079757600091610c65575b5060643511610c14576001600160a01b038481166000908152600260205260409020600101541615610bba576001600160a01b038481166000908152600360205260409020541615610b5f576001600160a01b03163303610aa1575b602090608435906084350103126100c95760018060a01b0382166000526002602052604060002060018060a01b03600182015416604051809263d6d7d52560e01b82526020600483015260009080549061051a82611220565b91826024860152600181169081600014610a7b5750600114610a3e575b5050918160008160409503925af1908115610797576000906000926109fd575b50156109a157801561094b5761056f906064356112d3565b60018060a01b03831660005260026020526002604060002001548015610935576105ae91046127106105a760246084350135836112d3565b04906112a5565b9182156108d9576001600160a01b03818116600081815260036020526040808220549051631fd177af60e11b81526004810193909352948316602483015260648035604484015282018190526084820181905260a482015292610140918291859160c4918391165afa928315610797576000936107a3575b50506001600160a01b03908116600090815260036020908152604080832054815163efa84c6d60e01b815286518051871660048301528085015160248301528084015187166044830152606090810151606483015284880151805160848401528086015160a48401528085015160c4840152015160e48201529582015180511515610104880152909201511515610124860152610144850195909552336101648501526101a06101848501526101a4840182905292939284926101c49284929091165af190811561079757600091610762575b501561070f576000600555602060405160018152f35b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65744c697175696461746f7252656365697665723a20537761702066604482015264185a5b195960da1b6064820152608490fd5b90506040813d60401161078f575b8161077d604093836111ca565b810103126100c95760200151816106f9565b3d9150610770565b6040513d6000823e3d90fd5b81819294503d85116108d2575b6107ba81836111ca565b8101039283126100c957604051926107d184611194565b608081126100c9576040516107e5816111af565b6107ee836112b2565b815260208301516020820152610806604084016112b2565b60408201526060830151606082015284526080607f198201126100c9576040908151610831816111af565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602086015260ff1901126100c95760405191604083018381106001600160401b038211176108bc5760209560409586956108a96101206101c4976000968a526108a161010082016112c6565b8452016112c6565b8982015286820152955095505091610626565b634e487b7160e01b600052604160045260246000fd5b503d6107b0565b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206d696e20616d60448201526d1bdd5b9d081b9bdd081d985b1a5960921b6064820152608490fd5b634e487b7160e01b600052601260045260246000fd5b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a2072617465206e6044820152671bdd081d985b1a5960c21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206f7261636c6560448201526d0818d85b1b19590819985a5b195960921b6064820152608490fd5b9150506040813d604011610a36575b81610a19604093836111ca565b810103126100c9576020610a2c826112c6565b9101519084610557565b3d9150610a0c565b6000908152602081209092505b818310610a615750508101604401816000610537565b805460448488010152859350602090920191600101610a4b565b60ff191660448087019190915292151560051b8501909201925083915060009050610537565b336000526004602052604060002060018060a01b03841660005260205260643560406000205410610b05576020903360005260048252604060002060018060a01b03851660005282526040600020610afc60643582546112a5565b905590506104c1565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a2073656e64657260448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f2073776160448201526c1c1c195c88185cdcda59db9959609a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f206f726160448201526b18db1948185cdcda59db995960a21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a206e6f7420656e6044820152630deeaced60e31b6064820152608490fd5b90506020813d602011610c8f575b81610c80602093836111ca565b810103126100c9575185610465565b3d9150610c73565b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a207265656e7472604482015263616e637960e01b6064820152608490fd5b346100c95760403660031901126100c957610d57611168565b610d5f61117e565b9060018060a01b038091166000526004602052604060002091166000526020526020604060002054604051908152f35b346100c95760003660031901126100c9576001546001600160a01b039081811633819003610df957806000549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760005516600155005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346100c95760803660031901126100c957610e56611168565b610e5e61117e565b6001600160401b0391906044358381116100c957366023820112156100c9578060040135928484116108bc5760405192602094601f1993610ea68786601f85011601876111ca565b81865236602483830101116100c95781600092602489930183890137860101526000546001600160a01b0390610edf908216331461125a565b60405194610eec86611194565b8552808686019216968783528160408701946064358652169687600052600281526040600020965180519283116108bc57610f278854611220565b601f811161101a575b5081601f8411600114610fac5750600296506000919083610fa1575b50508160011b916000199060031b1c19161785555b6001850191511660018060a01b0319825416179055519101557fd35615cf633cdd04206b370029477f61d6ad0a5bac9f345812359d782d14e89c600080a3005b015190508980610f4c565b929394959684168860005283600020936000905b8282106110025750509160019391856002999897969410610fe9575b505050811b018555610f61565b015160001960f88460031b161c19169055898080610fdc565b80600186978294978701518155019601940190610fc0565b8860005282600020601f850160051c810191848610611056575b601f0160051c01905b81811061104a5750610f30565b6000815560010161103d565b9091508190611034565b346100c95760603660031901126100c957611079611168565b60243580151581036100c9576044359081151582036100c95760018060a01b039283916110ab8360005416331461125a565b1561114f571690811590811591611147575b501561110a57806000549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600055600180549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836110bd565b9150501660018060a01b03196001541617600155600080f35b600435906001600160a01b03821682036100c957565b602435906001600160a01b03821682036100c957565b606081019081106001600160401b038211176108bc57604052565b608081019081106001600160401b038211176108bc57604052565b90601f801991011681019081106001600160401b038211176108bc57604052565b60609060031901126100c9576001600160a01b039060043582811681036100c9579160243590811681036100c9579060443590565b90600182811c92168015611250575b602083101461123a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161122f565b1561126157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9190820391821161038257565b51906001600160a01b03821682036100c957565b519081151582036100c957565b818102929181159184041417156103825756fea2646970667358221220b075749cdc319c0c8cc6204f1e9b284325e6c11aa490e15527bfdac6612484ef64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/Penrose.json b/src/artifacts/tapioca-bar/Penrose.json index 39ab5535..7fcc0d05 100644 --- a/src/artifacts/tapioca-bar/Penrose.json +++ b/src/artifacts/tapioca-bar/Penrose.json @@ -65,6 +65,25 @@ "name": "BigBangEthMarketSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "old", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_new", + "type": "address" + } + ], + "name": "ClusterSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -906,6 +925,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newCluster", + "type": "address" + } + ], + "name": "setCluster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1102,8 +1134,8 @@ "type": "function" } ], - "bytecode": "0x610120604090808252346200036c5760c081620040ac803803809162000026828562000371565b8339810103126200036c578051916001600160a01b03918284168085036200036c5760209384830151918183168093036200036c5762000068858501620003ab565b916200007760608601620003ab565b9260808601519561ffff87168097036200036c5760a00151918083168093036200036c576000805489519b91976001600160a01b0319959291861691338a7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080528560055416176005558360a05284331617178655610653998a81019060018060401b039181811083821117620003585790806200013a868f95948a9062003a59978886396001600160a01b0391821681529116602082015260400190565b039089f09b8c156200034e578b8480620001839c9d9e9f16961695868b52600f82528d8b2081898254161790558d51809c8192632c1876e560e21b998a845260048401620003c0565b03818c8b5af1998a156200034457899a6200030b575b506001600160601b03998a1660c05260e08890528b519281840192831184841017620002f757878493620001e5938b9386396001600160a01b0391821681529116602082015260400190565b039087f08015620002ed57958a94928282979593620002299916951692838352600f8752858c8420918254161790558a5197889586948593845260048401620003c0565b03925af1958615620002e1578196620002a5575b505050610100931683526611c37937e08000600e5561ffff19600d541617600d55516136709182620003e9833960805182818161108301528181611ae70152612af9015260a05182611829015260c0518261088e015260e05182610ea6015251816118720152f35b909180939650813d8311620002d9575b620002c1818362000371565b81010312620002d6575051923880806200023d565b80fd5b503d620002b5565b508451903d90823e3d90fd5b89513d88823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b9099508c81813d83116200033c575b62000326818362000371565b81010312620003385751983862000199565b8880fd5b503d6200031a565b8c513d8b823e3d90fd5b8a513d8a823e3d90fd5b634e487b7160e01b89526041600452602489fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200039557604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200036c57565b600181526001600160a01b03918216602082015291166040820152600060608201526080019056fe608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000365578063078dfbe7146200035f57806307bd3e201462000359578063099bfe4c14620003535780630e7ee227146200034d578063170f4e8d14620003475780631f54245b14620003415780632324248e146200033b5780632a68ecfa1462000335578063334f4f0f146200032f57806333a4eebe14620003295780633555d7a6146200032357806339e02851146200031d5780633fc15f151462000317578063433e762d14620003115780634cc707ab146200030b5780634e71e0c814620003055780635c975abb14620002ff5780636100ff1414620002f95780636e570c6314620002f357806372a54ab414620002ed578063761b3a5114620002e757806386c8e21d14620002e15780638da5cb5b14620002db5780638e7d8a2a14620002d55780638fd4365414620002cf5780639488c4dc14620002c9578063bafa44cc14620002c3578063bafe4f1414620002bd578063c24795f814620002b7578063c6d9ce3414620002b1578063c7cee53214620002ab578063c99fb76e14620002a5578063c9f5f54e146200029f578063cd9792e51462000299578063ce8849ed1462000293578063d5089cf6146200028d578063dbd01de11462000287578063de4065771462000281578063e30c3978146200027b578063e6abad491462000275578063f07794c5146200026f578063f189e10f1462000269578063f8974de01462000263578063fa74f0b5146200025d578063fba96be814620002575763fee63f17146200025157600080fd5b62001dbc565b62001d72565b62001c99565b62001bdd565b62001bbd565b62001b61565b62001b41565b62001b16565b62001acf565b62001aa4565b620019d4565b620019a9565b62001966565b62001895565b62001858565b62001811565b62001741565b620016f4565b620016b1565b6200153f565b62001494565b62001430565b620013ea565b620013bf565b6200139f565b620012f5565b620012a8565b62001262565b6200101f565b62000ff7565b62000f66565b62000ef9565b62000ed5565b62000e8e565b62000dd1565b62000d0d565b62000c8b565b62000b63565b62000b07565b62000a5c565b62000a2f565b620008f7565b62000874565b62000773565b62000552565b62000426565b62000382565b6001600160a01b038116036200037d57565b600080fd5b346200037d5760203660031901126200037d57600435620003a3816200036b565b6000546001600160a01b039190620003bf9083163314620020e0565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200037d57565b6044359062000424826200040a565b565b346200037d5760603660031901126200037d5760043562000447816200036b565b6024359062000456826200040a565b6044359062000465826200040a565b60018060a01b036000936200047f828654163314620020e0565b15620005305781169182159081159162000527575b5015620004ea578254620004d79290620004be906001600160a01b03165b6001600160a01b031690565b600080516020620035bb8339815191528580a362001e4e565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503862000494565b91501660018060a01b0319600154161760015580f35b60009103126200037d57565b346200037d5760003660031901126200037d576020600954604051908152f35b9181601f840112156200037d578235916001600160401b0383116200037d576020808501948460051b0101116200037d57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117620005d757604052565b620005a5565b6001600160401b038111620005d757604052565b601f909101601f19168101906001600160401b03821190821017620005d757604052565b6001600160401b038111620005d75760051b60200190565b6001600160401b038111620005d757601f01601f191660200190565b92919262000657826200062d565b91620006676040519384620005f1565b8294818452818301116200037d578281602093846000960137010152565b60005b838110620006995750506000910152565b818101518382015260200162000688565b90602091620006c58151809281855285808601910162000685565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200075c57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106200072b5750505050505090565b90919293949584806200074b600193601f198682030187528a51620006aa565b98019301930191949392906200071a565b8251151586529484019491840191600101620006ee565b346200037d5760603660031901126200037d576001600160401b036004358181116200037d57620007a990369060040162000572565b60249081358481116200037d57366023820112156200037d57806004013592620007d38462000615565b93620007e36040519586620005f1565b808552602096828887019260051b850101933685116200037d57838101925b8584106200083857620008228989896200081b62000415565b9262002665565b906200083460405192839283620006d1565b0390f35b83358381116200037d578201366043820112156200037d578a91620008688392369060448a820135910162000649565b81520193019262000802565b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b828110620008d9575050505090565b83516001600160a01b031685529381019392810192600101620008ca565b346200037d57600080600319360112620009ad57600954906200091a8262000615565b916040916200092c83519485620005f1565b818452600981526020600080516020620035fb8339815191528186015b8484106200096d576200083486620009618962002e33565b905191829182620008b1565b600183819288516200097f81620005bb565b6200099e60ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062000949565b80fd5b60606003198201126200037d57600435620009cb816200036b565b916001600160401b0391602435908382116200037d57806023830112156200037d5781600401359384116200037d57602484830101116200037d57602401919060443562000a19816200040a565b90565b6001600160a01b03909116815260200190565b602062000a4a62000a4036620009b0565b9291909162001f56565b6040516001600160a01b039091168152f35b346200037d5760003660031901126200037d576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000ab65760005260206000200190600090565b62000a87565b634e487b7160e01b600052602160045260246000fd5b6003111562000add57565b62000abc565b6001600160a01b03909116815260408101929190600382101562000add5760200152565b346200037d5760203660031901126200037d576004356008548110156200037d576008600052600080516020620035db8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760403660031901126200037d576004356001600160401b0381116200037d5762000b9890369060040162000572565b906024359162000ba8836200036b565b60018060a01b039260009362000bc3818654163314620020e0565b62000bd760ff60045460a01c161562002139565b81161562000c4b57835b82811062000c1f57505062000bf890429262002195565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c448362000c3e62000c38600195888a62002178565b62002189565b62002a1f565b0162000be1565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200037d5760203660031901126200037d5760043562000cb860018060a01b03600054163314620020e0565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200037d5760043562000cfe816200036b565b9060243562000a19816200036b565b346200037d5762000d1e3662000ce3565b60018060a01b039062000dbb60009362000d3d848654163314620020e0565b62000db584821694858752600b60205262000d64600160ff60408a20541615151462002386565b841693848752600c60205262000d8260ff604089205416156200245f565b848752600c60205260408720805460ff1916600117905562000daf8162000da985620011fa565b62001ee4565b62001214565b62001e70565b6000805160206200359b8339815191528380a380f35b6000805160206200359b83398151915262000e3f6200083462000df436620009b0565b6000805490966001600160a01b03959490939162000e169087163314620020e0565b85851694858952600b60205262000e39600160ff60408c20541615151462002386565b62001f56565b91821662000e4f811515620023d0565b62000e5d833b151562002415565b808552600c60205260408520805460ff1916600117905562000e7f8362001e8f565b60405195858796a38262000a1c565b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d57602061ffff600d5416604051908152f35b346200037d5762000f0a3662000ce3565b60018060a01b039062000f5060009362000f29848654163314620020e0565b62000db584821694858752600a60205262000d64600160ff60408a20541615151462002386565b6000805160206200357b8339815191528380a380f35b346200037d57600080600319360112620009ad576001546001600160a01b039081163381900362000fb35780620004d792845416600080516020620035bb8339815191528580a362001e4e565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200037d5760003660031901126200037d57602060ff60045460a01c166040519015158152f35b346200037d5760203660031901126200037d5760043562001040816200036b565b60018060a01b036000916200105a828454163314620020e0565b600680546001600160a01b0319166001600160a01b0383851690811691909117909155916040517f000000000000000000000000000000000000000000000000000000000000000082169290610653808201906001600160401b03821183831017620005d75786868493620010e99362002f2886396001600160a01b0391821681529116602082015260400190565b039086f0928315620011f4576200110d6020936200116d951662000db5846200122e565b620011296200111c836200122e565b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af18015620011f45762001194918491620011bf575b506001600160601b0316600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b620011e5915060203d8111620011ec575b620011dc8183620005f1565b81019062002252565b3862001185565b503d620011d0565b62001f4a565b6001600160a01b0316600090815260036020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b03166000908152600f6020526040902090565b6001600160a01b03166000908152600c6020526040902090565b346200037d5760203660031901126200037d5760043562001283816200036b565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200037d5760203660031901126200037d576004356010548110156200037d5760106000526000805160206200361b83398151915201546040516001600160a01b039091168152602090f35b346200037d57600080600319360112620009ad5760085490620013188262000615565b916040916200132a83519485620005f1565b818452600881526020600080516020620035db8339815191528186015b8484106200135f576200083486620009618962002e33565b600183819288516200137181620005bb565b6200139060ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062001347565b346200037d5760003660031901126200037d576020600754604051908152f35b346200037d5760003660031901126200037d576000546040516001600160a01b039091168152602090f35b346200037d5760203660031901126200037d576004356200140b816200036b565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200037d5760403660031901126200037d5760043562001451816200036b565b6024359060018060a01b038091166000526003602052604060002080548310156200037d57602092620014849162000a9d565b90549060031b1c16604051908152f35b6000805160206200357b833981519152620014fc62000834620014b736620009b0565b6000805490966001600160a01b039594909391620014d99087163314620020e0565b85851694858952600a60205262000e39600160ff60408c20541615151462002386565b9182166200150c811515620023d0565b6200151a833b151562002415565b808552600c6020526040808620805460ff191660011790555195869580a38262000a1c565b346200037d57600080600319360112620009ad5760046200156860ff825460a01c161562002139565b6200158d6001620015846200157d3362001248565b5460ff1690565b151514620021e1565b600d8054620015a89060101c6001600160a01b0316620004b2565b3314620015b3578280f35b60105490620015c16200283f565b84805b848110620015d457505050508280f35b620015f1620015e48285620025c2565b516001600160a01b031690565b84546200160a9060101c6001600160a01b0316620004b2565b6001600160a01b0382169190821415908162001699575b506200163d575b506200163591506200263f565b8590620015c4565b803b1562001695578290876040518095819363f8ba4cff60e01b83525af1918215620011f457620016359262001677575b87925062001628565b80620016876200168e92620005dd565b8062000546565b386200166e565b8280fd5b620016aa91506200157d9062001248565b3862001621565b346200037d5760203660031901126200037d576020600435620016d4816200036b565b60018060a01b038091166000526002825260406000205416604051908152f35b346200037d5760003660031901126200037d57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200037d57565b359060038210156200037d57565b346200037d5760403660031901126200037d5760043562001762816200036b565b6200176c62001723565b60018060a01b0360009262001786828554163314620020e0565b16808352600b602052620017a260ff6040852054161562002262565b620017c8620017b0620022a8565b828152620017c284602083016200212c565b620022c3565b808352600b60205260408320805460ff19166001179055620017ea8262000ad2565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200037d576020806003193601126200037d57600435906001600160401b0382116200037d57366023830112156200037d57816004013591620018d98362000615565b91604093620018eb85519485620005f1565b80845260248285019160061b840101923684116200037d57602401905b83821062001920576200083486620009618762002e33565b85823603126200037d5782869182516200193a81620005bb565b843562001947816200036b565b81526200195683860162001733565b8382015281520191019062001908565b346200037d5760203660031901126200037d57602060043562001989816200036b565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200037d5760003660031901126200037d576004546040516001600160a01b039091168152602090f35b346200037d5760403660031901126200037d57600435620019f5816200036b565b620019ff62001723565b60018060a01b0360009262001a19828554163314620020e0565b16808352600a60205262001a3560ff6040852054161562002262565b62001a5b62001a43620022a8565b82815262001a5584602083016200212c565b62002333565b808352600a60205260408320805460ff1916600117905562001a7d8262000ad2565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200037d5760003660031901126200037d576005546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d576001546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576020600e54604051908152f35b346200037d5760203660031901126200037d576004356009548110156200037d576009600052600080516020620035fb8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760003660031901126200037d576020600854604051908152f35b346200037d5760203660031901126200037d5760043562001bfe816200040a565b60045460ff9062001c1a336001600160a01b03831614620021e1565b60a01c1615159080151582811462001c5e5762001c5c927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a36200223d565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200037d5760203660031901126200037d5760043562001cba816200036b565b6000546001600160a01b03919062001cd69083163314620020e0565b818116801562001d305762001c5c92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881859191c995cdcc81b9bdd081d985b1a5960321b6044820152606490fd5b346200037d5760203660031901126200037d57602062001db460043562001d99816200036b565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200037d5760203660031901126200037d5760043562001ddd816200036b565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001e0a57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80546001600160a01b0319166001600160a01b03909216919091179055565b601054600160401b811015620005d757600181018060105581101562000ab65760106000526000805160206200361b8339815191520180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b811015620005d75762001f049160018201815562000a9d565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000da994936001600160a01b038083169392909162002003919062001f7e86151562001e02565b606082901b6001600160601b03191690156200209457603762001fa336898862000649565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b62001ffd8162000db58562001214565b620011fa565b851692833b156200037d57604051631377d1f560e21b815291600083806200203085856004840162001f22565b038134895af1928315620011f4577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b936200207d575b50620020786040519283928362001f22565b0390a3565b80620016876200208d92620005dd565b3862002066565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162001fed565b15620020e857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000add5752565b156200214157565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000ab65760051b0190565b3562000a19816200036b565b604051918291829160005b818110620021b15750505003902090565b919350916001908435620021c5816200036b565b828060a01b0316815260208091019401910191849392620021a0565b15620021e957565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b60ff60a01b191660a09190911b60ff60a01b161790565b6200224d90151560045462002226565b600455565b908160209103126200037d575190565b156200226a57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620022b782620005bb565b60006020838281520152565b600954600160401b811015620005d757600181018060095581101562000ab65760096000528151600080516020620035fb8339815191529091019160209162002316906001600160a01b03168462001e70565b0151600381101562000add576200232f90825462002226565b9055565b600854600160401b811015620005d757600181018060085581101562000ab65760086000528151600080516020620035db8339815191529091019160209162002316906001600160a01b03168462001e70565b156200238e57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881350c81b9bdd081c9959da5cdd195c995960321b6044820152606490fd5b15620023d857565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200241d57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e8819195c1b1bde5b595b9d0819985a5b195960321b6044820152606490fd5b156200246757565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b15620024b457565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b90620025008262000615565b6200250f6040519182620005f1565b828152809262002522601f199162000615565b0190602036910137565b90620025388262000615565b620025476040519182620005f1565b82815280926200255a601f199162000615565b019060005b8281106200256c57505050565b8060606020809385010152016200255f565b156200258657565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000ab65760209160051b010190565b3d1562002607573d90620025eb826200062d565b91620025fb6040519384620005f1565b82523d6000602084013e565b606090565b15620026155750565b60405162461bcd60e51b8152602060048201529081906200263b906024830190620006aa565b0390fd5b60001981146200264f5760010190565b634e487b7160e01b600052601160045260246000fd5b90939260006200268060018060a01b038254163314620020e0565b6200269460ff60045460a01c161562002139565b620026a284518714620024ac565b620026ad86620024f4565b93620026b9876200252c565b9687835b87838210620026d25750505050505050509190565b620027ae9282886200279f89806200275d62000c388f8c81620027266200157d6200270c6200111c62000daf62000c388f88819a62002178565b6001600160a01b03166000908152600a6020526040902090565b8015620027f7575b620027399062002386565b620027576200274e62000c3885858562002178565b3b15156200257e565b62002178565b62002769868d620025c2565b519082602083519301915af16200277f620025d7565b6200278b8587620025c2565b52620027988487620025c2565b9015159052565b620027b6575b5050506200263f565b8890620026bd565b620027e081620027d9620027d3620027e794620027ee97620025c2565b51151590565b93620025c2565b516200289c565b906200260c565b878a82620027a5565b5062002739620028376200157d6200281d6200111c62000daf62000c3889898962002178565b6001600160a01b03166000908152600b6020526040902090565b90506200272e565b604051906010548083528260209182820190601060005283600020936000905b82821062002878575050506200042492500383620005f1565b85546001600160a01b0316845260019586019588955093810193909101906200285f565b6103e88151116200295e5760448151106200292c576004810151810190602081602484019303126200037d576024810151906001600160401b0382116200037d5701816043820112156200037d576024810151620028fa816200062d565b926200290a6040519485620005f1565b818452604482840101116200037d5762000a1991604460208501910162000685565b506040516200293b81620005bb565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b506040516200296d81620005bb565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b156200299957565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200037d575162000a19816200036b565b91908260409103126200037d576020825192015190565b908160209103126200037d575162000a19816200040a565b6001600160a01b03908116919062002a4562002a3f6200157d8562001248565b62002991565b604092835192632bd016d360e21b84526020926004956000948087898189895af1968715620011f457869762002e0f575b50861562002e055781516338d52e0f60e01b81529281848a81895afa958615620011f4578994889762002dcd575b50829084519a8b809263226f120560e11b82525afa988915620011f457879962002da9575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af1918215620011f457839262002d76575b501695835163415be3b560e01b815283818062002b5b858a830162000a1c565b03818b5afa968715620011f45762002ba99b8b928b9962002d4c575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a15620011f457889a62002d28575b5016825163095ea7b360e01b9182825283828062002bf38b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af1908115620011f45762002c3a9385938d9362002d06575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af18015620011f45762002cd1575b5050833b1562002ccd57516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af1918215620011f4577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002cb6575b5080a3565b806200168762002cc692620005dd565b3862002cb1565b8480fd5b8162002cf592903d1062002cfe575b62002cec8183620005f1565b81019062002a07565b50388062002c4b565b503d62002ce0565b62002d2090853d871162002cfe5762002cec8183620005f1565b503862002c10565b62002d44919a50833d8511620011ec57620011dc8183620005f1565b983862002bbd565b86939291995062002d6c90843d8611620011ec57620011dc8183620005f1565b9890919262002b77565b62002d9a90863d881162002da1575b62002d918183620005f1565b810190620029f0565b5062002b3b565b503d62002d85565b62002dc5919950823d8411620011ec57620011dc8183620005f1565b973862002ac9565b8391975062002df590823d841162002dfd575b62002dec8183620005f1565b810190620029d8565b969062002aa4565b503d62002de0565b5050505050505050565b8162002e2b9298503d8911620011ec57620011dc8183620005f1565b953862002a76565b908151916000805b84821062002f065762002e4f9150620024f4565b92600091825b82811062002e635750505050565b62002e8162002e738284620025c2565b51516001600160a01b031690565b62002e8c81620011fa565b54906000915b80831062002ea65750505060010162002e55565b90919562002ef762002edc62002ec78962002ec187620011fa565b62000a9d565b905460039190911b1c6001600160a01b031690565b62002ee8838c620025c2565b6001600160a01b039091169052565b60018091019601919062002e92565b60019062002f1d62001d9962002e738587620025c2565b0191019062002e3b56fe60c0346100a157601f61065338819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059690816100bd823960805181818161010b0152818161025e01526102a5015260a05181818160ab01528181610175015261040c0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031357806317d70f7c146102f957806330fa738c146102de57806350188301146102455780637284e416146102d9578063afa91cc61461028d578063ce845d1d14610245578063de4065771461024a578063e3575f0514610245578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024157610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c5565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811060018060401b0382111761022d57845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af161019f610500565b816101f1575b50156101af575080f35b5162461bcd60e51b815260206004820152601c60248201527b109bdc9a5b99d15490cc8c0e88151c985b9cd9995c8819985a5b195960221b6044820152606490fd5b8051801592508215610206575b5050386101a5565b8192509060209181010312610229576020015180151581036102295738806101fe565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103b9565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d65760203660031901126102d6576102d3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c5565b80f35b80fd5b610313565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b4576000806003193601126102d657604080518082016001600160401b038111828210176103a0578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038a57505050828201840152601f01601f19168101030190f35b818101830151888201880152879550820161036c565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b4576000806003193601126102d6576040516370a0823160e01b602080830191825230602480850191909152835291606081016001600160401b038111828210176104b1576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa61043e610500565b90806104a6575b1561046157818180518101031261022957810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610445565b634e487b7160e01b85526041600452602485fd5b156104cc57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055b576001600160401b03903d8281116105455760405192601f8201601f19908116603f01168401908111848210176105455760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea264697066735822122026dba66daf41d2e5c6f8b51cccdba2a03356c140356515cc2d7ff469143af79864736f6c634300081200331105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd674e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212200d436affff2bfb000b263717f2f68a78a0e220cb27ceb5d069cf95bb0d04303664736f6c6343000812003360c0346100a157601f61065338819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059690816100bd823960805181818161010b0152818161025e01526102a5015260a05181818160ab01528181610175015261040c0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031357806317d70f7c146102f957806330fa738c146102de57806350188301146102455780637284e416146102d9578063afa91cc61461028d578063ce845d1d14610245578063de4065771461024a578063e3575f0514610245578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024157610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c5565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811060018060401b0382111761022d57845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af161019f610500565b816101f1575b50156101af575080f35b5162461bcd60e51b815260206004820152601c60248201527b109bdc9a5b99d15490cc8c0e88151c985b9cd9995c8819985a5b195960221b6044820152606490fd5b8051801592508215610206575b5050386101a5565b8192509060209181010312610229576020015180151581036102295738806101fe565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103b9565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d65760203660031901126102d6576102d3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c5565b80f35b80fd5b610313565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b4576000806003193601126102d657604080518082016001600160401b038111828210176103a0578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038a57505050828201840152601f01601f19168101030190f35b818101830151888201880152879550820161036c565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b4576000806003193601126102d6576040516370a0823160e01b602080830191825230602480850191909152835291606081016001600160401b038111828210176104b1576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa61043e610500565b90806104a6575b1561046157818180518101031261022957810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610445565b634e487b7160e01b85526041600452602485fd5b156104cc57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055b576001600160401b03903d8281116105455760405192601f8201601f19908116603f01168401908111848210176105455760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea264697066735822122026dba66daf41d2e5c6f8b51cccdba2a03356c140356515cc2d7ff469143af79864736f6c63430008120033", - "deployedBytecode": "0x608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000365578063078dfbe7146200035f57806307bd3e201462000359578063099bfe4c14620003535780630e7ee227146200034d578063170f4e8d14620003475780631f54245b14620003415780632324248e146200033b5780632a68ecfa1462000335578063334f4f0f146200032f57806333a4eebe14620003295780633555d7a6146200032357806339e02851146200031d5780633fc15f151462000317578063433e762d14620003115780634cc707ab146200030b5780634e71e0c814620003055780635c975abb14620002ff5780636100ff1414620002f95780636e570c6314620002f357806372a54ab414620002ed578063761b3a5114620002e757806386c8e21d14620002e15780638da5cb5b14620002db5780638e7d8a2a14620002d55780638fd4365414620002cf5780639488c4dc14620002c9578063bafa44cc14620002c3578063bafe4f1414620002bd578063c24795f814620002b7578063c6d9ce3414620002b1578063c7cee53214620002ab578063c99fb76e14620002a5578063c9f5f54e146200029f578063cd9792e51462000299578063ce8849ed1462000293578063d5089cf6146200028d578063dbd01de11462000287578063de4065771462000281578063e30c3978146200027b578063e6abad491462000275578063f07794c5146200026f578063f189e10f1462000269578063f8974de01462000263578063fa74f0b5146200025d578063fba96be814620002575763fee63f17146200025157600080fd5b62001dbc565b62001d72565b62001c99565b62001bdd565b62001bbd565b62001b61565b62001b41565b62001b16565b62001acf565b62001aa4565b620019d4565b620019a9565b62001966565b62001895565b62001858565b62001811565b62001741565b620016f4565b620016b1565b6200153f565b62001494565b62001430565b620013ea565b620013bf565b6200139f565b620012f5565b620012a8565b62001262565b6200101f565b62000ff7565b62000f66565b62000ef9565b62000ed5565b62000e8e565b62000dd1565b62000d0d565b62000c8b565b62000b63565b62000b07565b62000a5c565b62000a2f565b620008f7565b62000874565b62000773565b62000552565b62000426565b62000382565b6001600160a01b038116036200037d57565b600080fd5b346200037d5760203660031901126200037d57600435620003a3816200036b565b6000546001600160a01b039190620003bf9083163314620020e0565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200037d57565b6044359062000424826200040a565b565b346200037d5760603660031901126200037d5760043562000447816200036b565b6024359062000456826200040a565b6044359062000465826200040a565b60018060a01b036000936200047f828654163314620020e0565b15620005305781169182159081159162000527575b5015620004ea578254620004d79290620004be906001600160a01b03165b6001600160a01b031690565b600080516020620035bb8339815191528580a362001e4e565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503862000494565b91501660018060a01b0319600154161760015580f35b60009103126200037d57565b346200037d5760003660031901126200037d576020600954604051908152f35b9181601f840112156200037d578235916001600160401b0383116200037d576020808501948460051b0101116200037d57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117620005d757604052565b620005a5565b6001600160401b038111620005d757604052565b601f909101601f19168101906001600160401b03821190821017620005d757604052565b6001600160401b038111620005d75760051b60200190565b6001600160401b038111620005d757601f01601f191660200190565b92919262000657826200062d565b91620006676040519384620005f1565b8294818452818301116200037d578281602093846000960137010152565b60005b838110620006995750506000910152565b818101518382015260200162000688565b90602091620006c58151809281855285808601910162000685565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200075c57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106200072b5750505050505090565b90919293949584806200074b600193601f198682030187528a51620006aa565b98019301930191949392906200071a565b8251151586529484019491840191600101620006ee565b346200037d5760603660031901126200037d576001600160401b036004358181116200037d57620007a990369060040162000572565b60249081358481116200037d57366023820112156200037d57806004013592620007d38462000615565b93620007e36040519586620005f1565b808552602096828887019260051b850101933685116200037d57838101925b8584106200083857620008228989896200081b62000415565b9262002665565b906200083460405192839283620006d1565b0390f35b83358381116200037d578201366043820112156200037d578a91620008688392369060448a820135910162000649565b81520193019262000802565b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b828110620008d9575050505090565b83516001600160a01b031685529381019392810192600101620008ca565b346200037d57600080600319360112620009ad57600954906200091a8262000615565b916040916200092c83519485620005f1565b818452600981526020600080516020620035fb8339815191528186015b8484106200096d576200083486620009618962002e33565b905191829182620008b1565b600183819288516200097f81620005bb565b6200099e60ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062000949565b80fd5b60606003198201126200037d57600435620009cb816200036b565b916001600160401b0391602435908382116200037d57806023830112156200037d5781600401359384116200037d57602484830101116200037d57602401919060443562000a19816200040a565b90565b6001600160a01b03909116815260200190565b602062000a4a62000a4036620009b0565b9291909162001f56565b6040516001600160a01b039091168152f35b346200037d5760003660031901126200037d576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000ab65760005260206000200190600090565b62000a87565b634e487b7160e01b600052602160045260246000fd5b6003111562000add57565b62000abc565b6001600160a01b03909116815260408101929190600382101562000add5760200152565b346200037d5760203660031901126200037d576004356008548110156200037d576008600052600080516020620035db8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760403660031901126200037d576004356001600160401b0381116200037d5762000b9890369060040162000572565b906024359162000ba8836200036b565b60018060a01b039260009362000bc3818654163314620020e0565b62000bd760ff60045460a01c161562002139565b81161562000c4b57835b82811062000c1f57505062000bf890429262002195565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c448362000c3e62000c38600195888a62002178565b62002189565b62002a1f565b0162000be1565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200037d5760203660031901126200037d5760043562000cb860018060a01b03600054163314620020e0565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200037d5760043562000cfe816200036b565b9060243562000a19816200036b565b346200037d5762000d1e3662000ce3565b60018060a01b039062000dbb60009362000d3d848654163314620020e0565b62000db584821694858752600b60205262000d64600160ff60408a20541615151462002386565b841693848752600c60205262000d8260ff604089205416156200245f565b848752600c60205260408720805460ff1916600117905562000daf8162000da985620011fa565b62001ee4565b62001214565b62001e70565b6000805160206200359b8339815191528380a380f35b6000805160206200359b83398151915262000e3f6200083462000df436620009b0565b6000805490966001600160a01b03959490939162000e169087163314620020e0565b85851694858952600b60205262000e39600160ff60408c20541615151462002386565b62001f56565b91821662000e4f811515620023d0565b62000e5d833b151562002415565b808552600c60205260408520805460ff1916600117905562000e7f8362001e8f565b60405195858796a38262000a1c565b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d57602061ffff600d5416604051908152f35b346200037d5762000f0a3662000ce3565b60018060a01b039062000f5060009362000f29848654163314620020e0565b62000db584821694858752600a60205262000d64600160ff60408a20541615151462002386565b6000805160206200357b8339815191528380a380f35b346200037d57600080600319360112620009ad576001546001600160a01b039081163381900362000fb35780620004d792845416600080516020620035bb8339815191528580a362001e4e565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200037d5760003660031901126200037d57602060ff60045460a01c166040519015158152f35b346200037d5760203660031901126200037d5760043562001040816200036b565b60018060a01b036000916200105a828454163314620020e0565b600680546001600160a01b0319166001600160a01b0383851690811691909117909155916040517f000000000000000000000000000000000000000000000000000000000000000082169290610653808201906001600160401b03821183831017620005d75786868493620010e99362002f2886396001600160a01b0391821681529116602082015260400190565b039086f0928315620011f4576200110d6020936200116d951662000db5846200122e565b620011296200111c836200122e565b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af18015620011f45762001194918491620011bf575b506001600160601b0316600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b620011e5915060203d8111620011ec575b620011dc8183620005f1565b81019062002252565b3862001185565b503d620011d0565b62001f4a565b6001600160a01b0316600090815260036020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b03166000908152600f6020526040902090565b6001600160a01b03166000908152600c6020526040902090565b346200037d5760203660031901126200037d5760043562001283816200036b565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200037d5760203660031901126200037d576004356010548110156200037d5760106000526000805160206200361b83398151915201546040516001600160a01b039091168152602090f35b346200037d57600080600319360112620009ad5760085490620013188262000615565b916040916200132a83519485620005f1565b818452600881526020600080516020620035db8339815191528186015b8484106200135f576200083486620009618962002e33565b600183819288516200137181620005bb565b6200139060ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062001347565b346200037d5760003660031901126200037d576020600754604051908152f35b346200037d5760003660031901126200037d576000546040516001600160a01b039091168152602090f35b346200037d5760203660031901126200037d576004356200140b816200036b565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200037d5760403660031901126200037d5760043562001451816200036b565b6024359060018060a01b038091166000526003602052604060002080548310156200037d57602092620014849162000a9d565b90549060031b1c16604051908152f35b6000805160206200357b833981519152620014fc62000834620014b736620009b0565b6000805490966001600160a01b039594909391620014d99087163314620020e0565b85851694858952600a60205262000e39600160ff60408c20541615151462002386565b9182166200150c811515620023d0565b6200151a833b151562002415565b808552600c6020526040808620805460ff191660011790555195869580a38262000a1c565b346200037d57600080600319360112620009ad5760046200156860ff825460a01c161562002139565b6200158d6001620015846200157d3362001248565b5460ff1690565b151514620021e1565b600d8054620015a89060101c6001600160a01b0316620004b2565b3314620015b3578280f35b60105490620015c16200283f565b84805b848110620015d457505050508280f35b620015f1620015e48285620025c2565b516001600160a01b031690565b84546200160a9060101c6001600160a01b0316620004b2565b6001600160a01b0382169190821415908162001699575b506200163d575b506200163591506200263f565b8590620015c4565b803b1562001695578290876040518095819363f8ba4cff60e01b83525af1918215620011f457620016359262001677575b87925062001628565b80620016876200168e92620005dd565b8062000546565b386200166e565b8280fd5b620016aa91506200157d9062001248565b3862001621565b346200037d5760203660031901126200037d576020600435620016d4816200036b565b60018060a01b038091166000526002825260406000205416604051908152f35b346200037d5760003660031901126200037d57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200037d57565b359060038210156200037d57565b346200037d5760403660031901126200037d5760043562001762816200036b565b6200176c62001723565b60018060a01b0360009262001786828554163314620020e0565b16808352600b602052620017a260ff6040852054161562002262565b620017c8620017b0620022a8565b828152620017c284602083016200212c565b620022c3565b808352600b60205260408320805460ff19166001179055620017ea8262000ad2565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200037d576020806003193601126200037d57600435906001600160401b0382116200037d57366023830112156200037d57816004013591620018d98362000615565b91604093620018eb85519485620005f1565b80845260248285019160061b840101923684116200037d57602401905b83821062001920576200083486620009618762002e33565b85823603126200037d5782869182516200193a81620005bb565b843562001947816200036b565b81526200195683860162001733565b8382015281520191019062001908565b346200037d5760203660031901126200037d57602060043562001989816200036b565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200037d5760003660031901126200037d576004546040516001600160a01b039091168152602090f35b346200037d5760403660031901126200037d57600435620019f5816200036b565b620019ff62001723565b60018060a01b0360009262001a19828554163314620020e0565b16808352600a60205262001a3560ff6040852054161562002262565b62001a5b62001a43620022a8565b82815262001a5584602083016200212c565b62002333565b808352600a60205260408320805460ff1916600117905562001a7d8262000ad2565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200037d5760003660031901126200037d576005546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d576001546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576020600e54604051908152f35b346200037d5760203660031901126200037d576004356009548110156200037d576009600052600080516020620035fb8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760003660031901126200037d576020600854604051908152f35b346200037d5760203660031901126200037d5760043562001bfe816200040a565b60045460ff9062001c1a336001600160a01b03831614620021e1565b60a01c1615159080151582811462001c5e5762001c5c927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a36200223d565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200037d5760203660031901126200037d5760043562001cba816200036b565b6000546001600160a01b03919062001cd69083163314620020e0565b818116801562001d305762001c5c92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881859191c995cdcc81b9bdd081d985b1a5960321b6044820152606490fd5b346200037d5760203660031901126200037d57602062001db460043562001d99816200036b565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200037d5760203660031901126200037d5760043562001ddd816200036b565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001e0a57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80546001600160a01b0319166001600160a01b03909216919091179055565b601054600160401b811015620005d757600181018060105581101562000ab65760106000526000805160206200361b8339815191520180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b811015620005d75762001f049160018201815562000a9d565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000da994936001600160a01b038083169392909162002003919062001f7e86151562001e02565b606082901b6001600160601b03191690156200209457603762001fa336898862000649565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b62001ffd8162000db58562001214565b620011fa565b851692833b156200037d57604051631377d1f560e21b815291600083806200203085856004840162001f22565b038134895af1928315620011f4577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b936200207d575b50620020786040519283928362001f22565b0390a3565b80620016876200208d92620005dd565b3862002066565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162001fed565b15620020e857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000add5752565b156200214157565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000ab65760051b0190565b3562000a19816200036b565b604051918291829160005b818110620021b15750505003902090565b919350916001908435620021c5816200036b565b828060a01b0316815260208091019401910191849392620021a0565b15620021e957565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b60ff60a01b191660a09190911b60ff60a01b161790565b6200224d90151560045462002226565b600455565b908160209103126200037d575190565b156200226a57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620022b782620005bb565b60006020838281520152565b600954600160401b811015620005d757600181018060095581101562000ab65760096000528151600080516020620035fb8339815191529091019160209162002316906001600160a01b03168462001e70565b0151600381101562000add576200232f90825462002226565b9055565b600854600160401b811015620005d757600181018060085581101562000ab65760086000528151600080516020620035db8339815191529091019160209162002316906001600160a01b03168462001e70565b156200238e57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881350c81b9bdd081c9959da5cdd195c995960321b6044820152606490fd5b15620023d857565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200241d57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e8819195c1b1bde5b595b9d0819985a5b195960321b6044820152606490fd5b156200246757565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b15620024b457565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b90620025008262000615565b6200250f6040519182620005f1565b828152809262002522601f199162000615565b0190602036910137565b90620025388262000615565b620025476040519182620005f1565b82815280926200255a601f199162000615565b019060005b8281106200256c57505050565b8060606020809385010152016200255f565b156200258657565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000ab65760209160051b010190565b3d1562002607573d90620025eb826200062d565b91620025fb6040519384620005f1565b82523d6000602084013e565b606090565b15620026155750565b60405162461bcd60e51b8152602060048201529081906200263b906024830190620006aa565b0390fd5b60001981146200264f5760010190565b634e487b7160e01b600052601160045260246000fd5b90939260006200268060018060a01b038254163314620020e0565b6200269460ff60045460a01c161562002139565b620026a284518714620024ac565b620026ad86620024f4565b93620026b9876200252c565b9687835b87838210620026d25750505050505050509190565b620027ae9282886200279f89806200275d62000c388f8c81620027266200157d6200270c6200111c62000daf62000c388f88819a62002178565b6001600160a01b03166000908152600a6020526040902090565b8015620027f7575b620027399062002386565b620027576200274e62000c3885858562002178565b3b15156200257e565b62002178565b62002769868d620025c2565b519082602083519301915af16200277f620025d7565b6200278b8587620025c2565b52620027988487620025c2565b9015159052565b620027b6575b5050506200263f565b8890620026bd565b620027e081620027d9620027d3620027e794620027ee97620025c2565b51151590565b93620025c2565b516200289c565b906200260c565b878a82620027a5565b5062002739620028376200157d6200281d6200111c62000daf62000c3889898962002178565b6001600160a01b03166000908152600b6020526040902090565b90506200272e565b604051906010548083528260209182820190601060005283600020936000905b82821062002878575050506200042492500383620005f1565b85546001600160a01b0316845260019586019588955093810193909101906200285f565b6103e88151116200295e5760448151106200292c576004810151810190602081602484019303126200037d576024810151906001600160401b0382116200037d5701816043820112156200037d576024810151620028fa816200062d565b926200290a6040519485620005f1565b818452604482840101116200037d5762000a1991604460208501910162000685565b506040516200293b81620005bb565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b506040516200296d81620005bb565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b156200299957565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200037d575162000a19816200036b565b91908260409103126200037d576020825192015190565b908160209103126200037d575162000a19816200040a565b6001600160a01b03908116919062002a4562002a3f6200157d8562001248565b62002991565b604092835192632bd016d360e21b84526020926004956000948087898189895af1968715620011f457869762002e0f575b50861562002e055781516338d52e0f60e01b81529281848a81895afa958615620011f4578994889762002dcd575b50829084519a8b809263226f120560e11b82525afa988915620011f457879962002da9575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af1918215620011f457839262002d76575b501695835163415be3b560e01b815283818062002b5b858a830162000a1c565b03818b5afa968715620011f45762002ba99b8b928b9962002d4c575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a15620011f457889a62002d28575b5016825163095ea7b360e01b9182825283828062002bf38b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af1908115620011f45762002c3a9385938d9362002d06575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af18015620011f45762002cd1575b5050833b1562002ccd57516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af1918215620011f4577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002cb6575b5080a3565b806200168762002cc692620005dd565b3862002cb1565b8480fd5b8162002cf592903d1062002cfe575b62002cec8183620005f1565b81019062002a07565b50388062002c4b565b503d62002ce0565b62002d2090853d871162002cfe5762002cec8183620005f1565b503862002c10565b62002d44919a50833d8511620011ec57620011dc8183620005f1565b983862002bbd565b86939291995062002d6c90843d8611620011ec57620011dc8183620005f1565b9890919262002b77565b62002d9a90863d881162002da1575b62002d918183620005f1565b810190620029f0565b5062002b3b565b503d62002d85565b62002dc5919950823d8411620011ec57620011dc8183620005f1565b973862002ac9565b8391975062002df590823d841162002dfd575b62002dec8183620005f1565b810190620029d8565b969062002aa4565b503d62002de0565b5050505050505050565b8162002e2b9298503d8911620011ec57620011dc8183620005f1565b953862002a76565b908151916000805b84821062002f065762002e4f9150620024f4565b92600091825b82811062002e635750505050565b62002e8162002e738284620025c2565b51516001600160a01b031690565b62002e8c81620011fa565b54906000915b80831062002ea65750505060010162002e55565b90919562002ef762002edc62002ec78962002ec187620011fa565b62000a9d565b905460039190911b1c6001600160a01b031690565b62002ee8838c620025c2565b6001600160a01b039091169052565b60018091019601919062002e92565b60019062002f1d62001d9962002e738587620025c2565b0191019062002e3b56fe60c0346100a157601f61065338819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059690816100bd823960805181818161010b0152818161025e01526102a5015260a05181818160ab01528181610175015261040c0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031357806317d70f7c146102f957806330fa738c146102de57806350188301146102455780637284e416146102d9578063afa91cc61461028d578063ce845d1d14610245578063de4065771461024a578063e3575f0514610245578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024157610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c5565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811060018060401b0382111761022d57845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af161019f610500565b816101f1575b50156101af575080f35b5162461bcd60e51b815260206004820152601c60248201527b109bdc9a5b99d15490cc8c0e88151c985b9cd9995c8819985a5b195960221b6044820152606490fd5b8051801592508215610206575b5050386101a5565b8192509060209181010312610229576020015180151581036102295738806101fe565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103b9565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d65760203660031901126102d6576102d3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c5565b80f35b80fd5b610313565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b4576000806003193601126102d657604080518082016001600160401b038111828210176103a0578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038a57505050828201840152601f01601f19168101030190f35b818101830151888201880152879550820161036c565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b4576000806003193601126102d6576040516370a0823160e01b602080830191825230602480850191909152835291606081016001600160401b038111828210176104b1576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa61043e610500565b90806104a6575b1561046157818180518101031261022957810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610445565b634e487b7160e01b85526041600452602485fd5b156104cc57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055b576001600160401b03903d8281116105455760405192601f8201601f19908116603f01168401908111848210176105455760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea264697066735822122026dba66daf41d2e5c6f8b51cccdba2a03356c140356515cc2d7ff469143af79864736f6c634300081200331105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd674e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212200d436affff2bfb000b263717f2f68a78a0e220cb27ceb5d069cf95bb0d04303664736f6c63430008120033", + "bytecode": "0x61012060409080825234620003a05760c081620041e38038038091620000268285620003a5565b833981010312620003a0578051916001600160a01b0391828416808503620003a0576020938483015191818316809303620003a05762000068858501620003df565b916200007760608601620003df565b9260808601519561ffff8716809703620003a05760a0015191808316809303620003a0576000805489519b91976001600160a01b0319959291861691338a7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080528560055416176005558360a05284331617178655610657998a81019060018060401b0391818110838211176200038c5790806200013a868f95948a9062003b8c978886396001600160a01b0391821681529116602082015260400190565b039089f09b8c156200038257938316808952600f8c528a892080549d85169d87168e1790558a51632c1876e560e21b808252600160048301526001600160a01b03928316602483015291909d1660448e0152600060648e01529a9b999a989998938c8a6084818c8b5af1998a156200037857899a6200033f575b506001600160601b03998a1660c05260e08890528b5192818401928311848410176200032b5787849362000200938b9386396001600160a01b0391821681529116602082015260400190565b039087f080156200032157948116808752600f8b528987208054929096169390911683179094558751908152600160048201526001600160a01b039384166024820152921660448301526000606483015290919086908390608490829085905af195861562000315578196620002d9575b505050610100931683526611c37937e08000600e5561ffff19600d541617600d55516137979182620003f583396080518281816111d301528181611c3f0152612c71015260a05182611981015260c051826108cb015260e05182610f3e015251816119ca0152f35b909180939650813d83116200030d575b620002f58183620003a5565b810103126200030a5750519238808062000271565b80fd5b503d620002e9565b508451903d90823e3d90fd5b89513d88823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b9099508c81813d831162000370575b6200035a8183620003a5565b810103126200036c57519838620001b4565b8880fd5b503d6200034e565b8c513d8b823e3d90fd5b8a513d8a823e3d90fd5b634e487b7160e01b89526041600452602489fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620003c957604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620003a05756fe608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000377578063078dfbe7146200037157806307bd3e20146200036b578063099bfe4c14620003655780630e7ee227146200035f578063170f4e8d14620003595780631f54245b14620003535780632324248e146200034d5780632a68ecfa1462000347578063334f4f0f146200034157806333a4eebe146200033b5780633555d7a6146200033557806339e02851146200032f5780633fc15f151462000329578063433e762d1462000323578063437be622146200031d5780634cc707ab14620003175780634e71e0c814620003115780635c975abb146200030b5780636100ff1414620003055780636e570c6314620002ff57806372a54ab414620002f9578063761b3a5114620002f357806386c8e21d14620002ed5780638da5cb5b14620002e75780638e7d8a2a14620002e15780638fd4365414620002db5780639488c4dc14620002d5578063bafa44cc14620002cf578063bafe4f1414620002c9578063c24795f814620002c3578063c6d9ce3414620002bd578063c7cee53214620002b7578063c99fb76e14620002b1578063c9f5f54e14620002ab578063cd9792e514620002a5578063ce8849ed146200029f578063d5089cf61462000299578063dbd01de11462000293578063de406577146200028d578063e30c39781462000287578063e6abad491462000281578063f07794c5146200027b578063f189e10f1462000275578063f8974de0146200026f578063fa74f0b51462000269578063fba96be814620002635763fee63f17146200025d57600080fd5b62001f2d565b62001ee3565b62001e07565b62001d35565b62001d15565b62001cb9565b62001c99565b62001c6e565b62001c27565b62001bfc565b62001b2c565b62001b01565b62001abe565b620019ed565b620019b0565b62001969565b62001899565b6200184c565b62001809565b6200167d565b620015b6565b62001552565b6200150c565b620014e1565b620014c1565b62001417565b620013b9565b62001373565b62001171565b62001149565b6200108b565b6200100d565b62000f91565b62000f6d565b62000f26565b62000e4d565b62000d36565b62000cb4565b62000b8c565b62000b30565b62000a85565b62000a58565b62000934565b620008b1565b620007b0565b62000591565b62000438565b62000394565b6001600160a01b038116036200038f57565b600080fd5b346200038f5760203660031901126200038f57600435620003b5816200037d565b6000546001600160a01b039190620003d190831633146200224f565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200038f57565b6044359062000436826200041c565b565b346200038f5760603660031901126200038f5760043562000459816200037d565b6024359062000468826200041c565b6044359062000477826200041c565b60018060a01b03600093620004918286541633146200224f565b156200056f5781169182159081159162000566575b501562000529578254620005169290620004d0906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038620004a6565b91501660018060a01b0319600154161760015580f35b60009103126200038f57565b346200038f5760003660031901126200038f576020600954604051908152f35b9181601f840112156200038f578235916001600160401b0383116200038f576020808501948460051b0101116200038f57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200061657604052565b620005e4565b6001600160401b0381116200061657604052565b90601f801991011681019081106001600160401b038211176200061657604052565b6001600160401b038111620006165760051b60200190565b6001600160401b0381116200061657601f01601f191660200190565b92919262000694826200066a565b91620006a4604051938462000630565b8294818452818301116200038f578281602093846000960137010152565b60005b838110620006d65750506000910152565b8181015183820152602001620006c5565b906020916200070281518092818552858086019101620006c2565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200079957505050818184039101528251908183528083019281808460051b8301019501936000915b848310620007685750505050505090565b909192939495848062000788600193601f198682030187528a51620006e7565b980193019301919493929062000757565b82511515865294840194918401916001016200072b565b346200038f5760603660031901126200038f576001600160401b036004358181116200038f57620007e6903690600401620005b1565b60249081358481116200038f57366023820112156200038f57806004013592620008108462000652565b9362000820604051958662000630565b808552602096828887019260051b850101933685116200038f57838101925b85841062000875576200085f8989896200085862000427565b92620027d0565b9062000871604051928392836200070e565b0390f35b83358381116200038f578201366043820112156200038f578a91620008a58392369060448a820135910162000686565b8152019301926200083f565b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b82811062000916575050505090565b83516001600160a01b03168552938101939281019260010162000907565b346200038f57600080600319360112620009ea5760095490620009578262000652565b91604091620009698351948562000630565b818452600981526020600080516020620037428339815191528186015b848410620009aa5762000871866200099e8962002fb7565b905191829182620008ee565b60018381928851620009bc81620005fa565b620009db60ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062000986565b80fd5b60606003198201126200038f5760043562000a08816200037d565b916024356001600160401b03928382116200038f57806023830112156200038f5781600401359384116200038f57602484830101116200038f57602401919060443562000a55816200041c565b90565b602062000a7362000a6936620009ed565b9291909162002097565b6040516001600160a01b039091168152f35b346200038f5760003660031901126200038f576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000adf5760005260206000200190600090565b62000ab0565b634e487b7160e01b600052602160045260246000fd5b6003111562000b0657565b62000ae5565b6001600160a01b03909116815260408101929190600382101562000b065760200152565b346200038f5760203660031901126200038f576004356008548110156200038f576008600052600080516020620037228339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760403660031901126200038f576004356001600160401b0381116200038f5762000bc1903690600401620005b1565b906024359162000bd1836200037d565b60018060a01b039260009362000bec8186541633146200224f565b62000c0060ff60045460a01c1615620022a8565b81161562000c7457835b82811062000c4857505062000c2190429262002304565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c6d8362000c6762000c61600195888a620022e7565b620022f8565b62002b8a565b0162000c0a565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200038f5760203660031901126200038f5760043562000ce160018060a01b036000541633146200224f565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200038f5760043562000d27816200037d565b9060243562000a55816200037d565b346200038f5762000d473662000d0c565b60018060a01b039062000e2660009362000d668486541633146200224f565b62000e0784821694858752600b60205262000d8d600160ff60408a205416151514620024eb565b841693848752600c60205262000dab60ff60408920541615620025ca565b848752600c60205260408720805460ff191660011790556001600160a01b038316600090815260036020526040902062000ded90829062002025565b62002025565b6001600160a01b0316600090815260026020526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428380a380f35b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d094262000ecc6200087162000e8136620009ed565b6000805490966001600160a01b03959490939162000ea390871633146200224f565b85851694858952600b60205262000ec6600160ff60408c205416151514620024eb565b62002097565b91821662000edc81151562002538565b62000eea833b15156200257d565b808552600c60205260408520805460ff1916600117905562000f0c8362001fbf565b60405195858796a36001600160a01b031682526020820190565b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f57602061ffff600d5416604051908152f35b346200038f5760203660031901126200038f5760043562000fb2816200037d565b6000546001600160a01b03919062000fce90831633146200224f565b816005549116809282167f03bebf5becbadd9703358ffd62f5a65bddfcc9c20038edae65aebe5542598bf2600080a36001600160a01b03191617600555005b346200038f576200101e3662000d0c565b60018060a01b0390620010646000936200103d8486541633146200224f565b62000e0784821694858752600a60205262000d8d600160ff60408a205416151514620024eb565b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd678380a380f35b346200038f57600080600319360112620009ea576001546001600160a01b039081163381900362001105578062000516928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200038f5760003660031901126200038f57602060ff60045460a01c166040519015158152f35b346200038f5760203660031901126200038f5760043562001192816200037d565b60018060a01b03600091620011ac8284541633146200224f565b600680546001600160a01b0319166001600160a01b038385169081169190911790915591807f00000000000000000000000000000000000000000000000000000000000000001691604051610657808201908282106001600160401b038311176200061657868684936200123a93620030cb86396001600160a01b0391821681529116602082015260400190565b039086f09283156200136d5762001270602093620012df951662000e078460018060a01b0316600052600f602052604060002090565b6001600160a01b0382166000908152600f602052604090206200129b905b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af19081156200136d576200130d916bffffffffffffffffffffffff91859162001338575b5016600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b6200135e915060203d811162001365575b62001355818362000630565b81019062002395565b3862001306565b503d62001349565b6200208b565b346200038f5760203660031901126200038f5760043562001394816200037d565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200038f5760203660031901126200038f576004356010548110156200038f5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201546040516001600160a01b039091168152602090f35b346200038f57600080600319360112620009ea57600854906200143a8262000652565b916040916200144c8351948562000630565b818452600881526020600080516020620037228339815191528186015b848410620014815762000871866200099e8962002fb7565b600183819288516200149381620005fa565b620014b260ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062001469565b346200038f5760003660031901126200038f576020600754604051908152f35b346200038f5760003660031901126200038f576000546040516001600160a01b039091168152602090f35b346200038f5760203660031901126200038f576004356200152d816200037d565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200038f5760403660031901126200038f5760043562001573816200037d565b6024359060018060a01b038091166000526003602052604060002080548310156200038f57602092620015a69162000ac6565b90549060031b1c16604051908152f35b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd676200162f62000871620015ea36620009ed565b6000805490966001600160a01b0395949093916200160c90871633146200224f565b85851694858952600a60205262000ec6600160ff60408c205416151514620024eb565b9182166200163f81151562002538565b6200164d833b15156200257d565b808552600c6020526040808620805460ff191660011790555195869580a36001600160a01b031682526020820190565b346200038f57600080600319360112620009ea576004620016a660ff825460a01c1615620022a8565b336000908152600c60205260409020620016d390600190620016ca905b5460ff1690565b15151462002350565b600d8054620016ee9060101c6001600160a01b0316620004c4565b3314620016f9578280f35b6010549062001707620029aa565b84805b8481106200171a57505050508280f35b620017376200172a82856200272d565b516001600160a01b031690565b8454620017509060101c6001600160a01b0316620004c4565b6001600160a01b03821691908214159081620017df575b5062001783575b506200177b9150620027aa565b85906200170a565b803b15620017db578290876040518095819363f8ba4cff60e01b83525af19182156200136d576200177b92620017bd575b8792506200176e565b80620017cd620017d4926200061c565b8062000585565b38620017b4565b8280fd5b6001600160a01b03166000908152600c60205260409020620018029150620016c3565b3862001767565b346200038f5760203660031901126200038f5760206004356200182c816200037d565b60018060a01b038091166000526002825260406000205416604051908152f35b346200038f5760003660031901126200038f57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200038f57565b359060038210156200038f57565b346200038f5760403660031901126200038f57600435620018ba816200037d565b620018c46200187b565b60018060a01b03600092620018de8285541633146200224f565b16808352600b602052620018fa60ff60408520541615620023a5565b6200192062001908620023eb565b8281526200191a84602083016200229b565b62002406565b808352600b60205260408320805460ff19166001179055620019428262000afb565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200038f576020806003193601126200038f57600435906001600160401b0382116200038f57366023830112156200038f5781600401359162001a318362000652565b9160409362001a438551948562000630565b80845260248285019160061b840101923684116200038f57602401905b83821062001a785762000871866200099e8762002fb7565b85823603126200038f57828691825162001a9281620005fa565b843562001a9f816200037d565b815262001aae8386016200188b565b8382015281520191019062001a60565b346200038f5760203660031901126200038f57602060043562001ae1816200037d565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200038f5760003660031901126200038f576004546040516001600160a01b039091168152602090f35b346200038f5760403660031901126200038f5760043562001b4d816200037d565b62001b576200187b565b60018060a01b0360009262001b718285541633146200224f565b16808352600a60205262001b8d60ff60408520541615620023a5565b62001bb362001b9b620023eb565b82815262001bad84602083016200229b565b62002489565b808352600a60205260408320805460ff1916600117905562001bd58262000afb565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200038f5760003660031901126200038f576005546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f576001546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576020600e54604051908152f35b346200038f5760203660031901126200038f576004356009548110156200038f576009600052600080516020620037428339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760003660031901126200038f576020600854604051908152f35b346200038f5760203660031901126200038f5760043562001d56816200041c565b60045460ff9062001d72336001600160a01b0383161462002350565b60a01c1615159080151582811462001dcc5762001dca927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a360045460ff60a01b191690151560a01b60ff60a01b1617600455565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200038f5760203660031901126200038f5760043562001e28816200037d565b6000546001600160a01b03919062001e4490831633146200224f565b818116801562001e9e5762001dca92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a2061646472657373206e6f742076616c69640000000000006044820152606490fd5b346200038f5760203660031901126200038f57602062001f2560043562001f0a816200037d565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200038f5760203660031901126200038f5760043562001f4e816200037d565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001f7b57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b601054600160401b8110156200061657600181018060105581101562000adf5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b8110156200061657620020459160018201815562000ac6565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000de794936001600160a01b0380831693929091620021729190620020bf86151562001f73565b606082901b6bffffffffffffffffffffffff1916901562002203576037620020e936898862000686565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b6001600160a01b03831660009081526002602052604090206200215890829062000e07565b6001600160a01b0316600090815260036020526040902090565b851692833b156200038f57604051631377d1f560e21b815291600083806200219f85856004840162002063565b038134895af19283156200136d577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b93620021ec575b50620021e76040519283928362002063565b0390a3565b80620017cd620021fc926200061c565b38620021d5565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162002133565b156200225757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000b065752565b15620022b057565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000adf5760051b0190565b3562000a55816200037d565b604051918291829160005b818110620023205750505003902090565b91935091600190843562002334816200037d565b828060a01b03168152602080910194019101918493926200230f565b156200235857565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b908160209103126200038f575190565b15620023ad57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620023fa82620005fa565b60006020838281520152565b600954600160401b8110156200061657600181018060095581101562000adf57600960005281516000805160206200374283398151915290910180546001600160a01b0319166001600160a01b0392909216919091178155906020905b0151600381101562000b0657815460ff60a01b191660a09190911b60ff60a01b16179055565b600854600160401b8110156200061657600181018060085581101562000adf57600860005281516000805160206200372283398151915290910180546001600160a01b0319166001600160a01b03929092169190911781559060209062002463565b15620024f357565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a204d43206e6f7420726567697374657265640000000000006044820152606490fd5b156200254057565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200258557565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a206465706c6f796d656e74206661696c65640000000000006044820152606490fd5b15620025d257565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b156200261f57565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b906200266b8262000652565b6200267a604051918262000630565b82815280926200268d601f199162000652565b0190602036910137565b90620026a38262000652565b620026b2604051918262000630565b8281528092620026c5601f199162000652565b019060005b828110620026d757505050565b806060602080938501015201620026ca565b15620026f157565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000adf5760209160051b010190565b3d1562002772573d9062002756826200066a565b9162002766604051938462000630565b82523d6000602084013e565b606090565b15620027805750565b60405162461bcd60e51b815260206004820152908190620027a6906024830190620006e7565b0390fd5b6000198114620027ba5760010190565b634e487b7160e01b600052601160045260246000fd5b9093926000620027eb60018060a01b0382541633146200224f565b620027ff60ff60045460a01c1615620022a8565b6200280d8451871462002617565b62002818866200265f565b93620028248762002697565b9687835b878382106200283d5750505050505050509190565b620029199282886200290a8980620028c862000c618f8c8162002891620016c3620028776200128e62000ded62000c618f88819a620022e7565b6001600160a01b03166000908152600a6020526040902090565b801562002962575b620028a490620024eb565b620028c2620028b962000c61858585620022e7565b3b1515620026e9565b620022e7565b620028d4868d6200272d565b519082602083519301915af1620028ea62002742565b620028f685876200272d565b526200290384876200272d565b9015159052565b62002921575b505050620027aa565b889062002828565b6200294b81620029446200293e620029529462002959976200272d565b51151590565b936200272d565b5162002a07565b9062002777565b878a8262002910565b50620028a4620029a2620016c3620029886200128e62000ded62000c61898989620022e7565b6001600160a01b03166000908152600b6020526040902090565b905062002899565b604051906010548083528260209182820190601060005283600020936000905b828210620029e357505050620004369250038362000630565b85546001600160a01b031684526001958601958895509381019390910190620029ca565b6103e881511162002ac957604481511062002a97576004810151810190602081602484019303126200038f576024810151906001600160401b0382116200038f5701816043820112156200038f57602481015162002a65816200066a565b9262002a75604051948562000630565b818452604482840101116200038f5762000a55916044602085019101620006c2565b5060405162002aa681620005fa565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b5060405162002ad881620005fa565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b1562002b0457565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200038f575162000a55816200037d565b91908260409103126200038f576020825192015190565b908160209103126200038f575162000a55816200041c565b6001600160a01b039081166000818152600c602052604090209092919062002bbd9062002bb790620016c3565b62002afc565b604092835192632bd016d360e21b84526020926004956000948087898189895af19687156200136d57869762002f93575b50861562002f895781516338d52e0f60e01b81529281848a81895afa9586156200136d578994889762002f51575b50829084519a8b809263226f120560e11b82525afa9889156200136d57879962002f2d575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af19182156200136d57839262002efa575b50845163415be3b560e01b81526001600160a01b03891687820190815292909116979184908290819060200103818b5afa9687156200136d5762002d2d9b8b928b9962002ed0575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a156200136d57889a62002eac575b5016825163095ea7b360e01b9182825283828062002d778b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af19081156200136d5762002dbe9385938d9362002e8a575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af180156200136d5762002e55575b5050833b1562002e5157516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af19182156200136d577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002e3a575b5080a3565b80620017cd62002e4a926200061c565b3862002e35565b8480fd5b8162002e7992903d1062002e82575b62002e70818362000630565b81019062002b72565b50388062002dcf565b503d62002e64565b62002ea490853d871162002e825762002e70818362000630565b503862002d94565b62002ec8919a50833d8511620013655762001355818362000630565b983862002d41565b86939291995062002ef090843d8611620013655762001355818362000630565b9890919262002cfb565b62002f1e90863d881162002f25575b62002f15818362000630565b81019062002b5b565b5062002cb3565b503d62002f09565b62002f49919950823d8411620013655762001355818362000630565b973862002c41565b8391975062002f7990823d841162002f81575b62002f70818362000630565b81019062002b43565b969062002c1c565b503d62002f64565b5050505050505050565b8162002faf9298503d8911620013655762001355818362000630565b953862002bee565b908151916000805b848210620030a95762002fd391506200265f565b92600091825b82811062002fe75750505050565b6200300562002ff782846200272d565b51516001600160a01b031690565b6001600160a01b038116600090815260036020526040902054906000915b808310620030375750505060010162002fd9565b9091956200309a6200307f6200306a89620030648760018060a01b03166000526003602052604060002090565b62000ac6565b905460039190911b1c6001600160a01b031690565b6200308b838c6200272d565b6001600160a01b039091169052565b60018091019601919062003023565b600190620030c062001f0a62002ff785876200272d565b0191019062002fbf56fe60c0346100a157601f61065738819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059a90816100bd823960805181818161010b0152818161026101526102a8015260a05181818160ab01528181610177015261040f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031657806317d70f7c146102fc57806330fa738c146102e157806350188301146102485780637284e416146102dc578063afa91cc614610290578063ce845d1d14610248578063de4065771461024d578063e3575f0514610248578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024457610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c8565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811067ffffffffffffffff82111761023057845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af16101a1610503565b816101f4575b50156101b1575080f35b5162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b8051801592508215610209575b5050386101a7565b819250906020918101031261022c5760200151801515810361022c573880610201565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103bd565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d95760203660031901126102d9576102d6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c8565b80f35b80fd5b610316565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b8576000806003193601126102d9576040805181810181811067ffffffffffffffff8211176103a4578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038e57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610370565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b8576000806003193601126102d957604051602090818101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104b4576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa610441610503565b90806104a9575b1561046457818180518101031261022c57810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610448565b634e487b7160e01b85526041600452602485fd5b156104cf57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055f5767ffffffffffffffff903d8281116105495760405192601f8201601f19908116603f01168401908111848210176105495760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea2646970667358221220e997ae9a99753f92acf0efcb0233b285aef4f9877c4a3dcf0622d106373c0c2064736f6c63430008120033f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212201a5209daf3cfe8d7f397946636efef40742c0e3ba62648cbc371c73f014d77aa64736f6c6343000812003360c0346100a157601f61065738819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059a90816100bd823960805181818161010b0152818161026101526102a8015260a05181818160ab01528181610177015261040f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031657806317d70f7c146102fc57806330fa738c146102e157806350188301146102485780637284e416146102dc578063afa91cc614610290578063ce845d1d14610248578063de4065771461024d578063e3575f0514610248578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024457610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c8565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811067ffffffffffffffff82111761023057845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af16101a1610503565b816101f4575b50156101b1575080f35b5162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b8051801592508215610209575b5050386101a7565b819250906020918101031261022c5760200151801515810361022c573880610201565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103bd565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d95760203660031901126102d9576102d6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c8565b80f35b80fd5b610316565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b8576000806003193601126102d9576040805181810181811067ffffffffffffffff8211176103a4578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038e57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610370565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b8576000806003193601126102d957604051602090818101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104b4576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa610441610503565b90806104a9575b1561046457818180518101031261022c57810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610448565b634e487b7160e01b85526041600452602485fd5b156104cf57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055f5767ffffffffffffffff903d8281116105495760405192601f8201601f19908116603f01168401908111848210176105495760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea2646970667358221220e997ae9a99753f92acf0efcb0233b285aef4f9877c4a3dcf0622d106373c0c2064736f6c63430008120033", + "deployedBytecode": "0x608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000377578063078dfbe7146200037157806307bd3e20146200036b578063099bfe4c14620003655780630e7ee227146200035f578063170f4e8d14620003595780631f54245b14620003535780632324248e146200034d5780632a68ecfa1462000347578063334f4f0f146200034157806333a4eebe146200033b5780633555d7a6146200033557806339e02851146200032f5780633fc15f151462000329578063433e762d1462000323578063437be622146200031d5780634cc707ab14620003175780634e71e0c814620003115780635c975abb146200030b5780636100ff1414620003055780636e570c6314620002ff57806372a54ab414620002f9578063761b3a5114620002f357806386c8e21d14620002ed5780638da5cb5b14620002e75780638e7d8a2a14620002e15780638fd4365414620002db5780639488c4dc14620002d5578063bafa44cc14620002cf578063bafe4f1414620002c9578063c24795f814620002c3578063c6d9ce3414620002bd578063c7cee53214620002b7578063c99fb76e14620002b1578063c9f5f54e14620002ab578063cd9792e514620002a5578063ce8849ed146200029f578063d5089cf61462000299578063dbd01de11462000293578063de406577146200028d578063e30c39781462000287578063e6abad491462000281578063f07794c5146200027b578063f189e10f1462000275578063f8974de0146200026f578063fa74f0b51462000269578063fba96be814620002635763fee63f17146200025d57600080fd5b62001f2d565b62001ee3565b62001e07565b62001d35565b62001d15565b62001cb9565b62001c99565b62001c6e565b62001c27565b62001bfc565b62001b2c565b62001b01565b62001abe565b620019ed565b620019b0565b62001969565b62001899565b6200184c565b62001809565b6200167d565b620015b6565b62001552565b6200150c565b620014e1565b620014c1565b62001417565b620013b9565b62001373565b62001171565b62001149565b6200108b565b6200100d565b62000f91565b62000f6d565b62000f26565b62000e4d565b62000d36565b62000cb4565b62000b8c565b62000b30565b62000a85565b62000a58565b62000934565b620008b1565b620007b0565b62000591565b62000438565b62000394565b6001600160a01b038116036200038f57565b600080fd5b346200038f5760203660031901126200038f57600435620003b5816200037d565b6000546001600160a01b039190620003d190831633146200224f565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200038f57565b6044359062000436826200041c565b565b346200038f5760603660031901126200038f5760043562000459816200037d565b6024359062000468826200041c565b6044359062000477826200041c565b60018060a01b03600093620004918286541633146200224f565b156200056f5781169182159081159162000566575b501562000529578254620005169290620004d0906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038620004a6565b91501660018060a01b0319600154161760015580f35b60009103126200038f57565b346200038f5760003660031901126200038f576020600954604051908152f35b9181601f840112156200038f578235916001600160401b0383116200038f576020808501948460051b0101116200038f57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200061657604052565b620005e4565b6001600160401b0381116200061657604052565b90601f801991011681019081106001600160401b038211176200061657604052565b6001600160401b038111620006165760051b60200190565b6001600160401b0381116200061657601f01601f191660200190565b92919262000694826200066a565b91620006a4604051938462000630565b8294818452818301116200038f578281602093846000960137010152565b60005b838110620006d65750506000910152565b8181015183820152602001620006c5565b906020916200070281518092818552858086019101620006c2565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200079957505050818184039101528251908183528083019281808460051b8301019501936000915b848310620007685750505050505090565b909192939495848062000788600193601f198682030187528a51620006e7565b980193019301919493929062000757565b82511515865294840194918401916001016200072b565b346200038f5760603660031901126200038f576001600160401b036004358181116200038f57620007e6903690600401620005b1565b60249081358481116200038f57366023820112156200038f57806004013592620008108462000652565b9362000820604051958662000630565b808552602096828887019260051b850101933685116200038f57838101925b85841062000875576200085f8989896200085862000427565b92620027d0565b9062000871604051928392836200070e565b0390f35b83358381116200038f578201366043820112156200038f578a91620008a58392369060448a820135910162000686565b8152019301926200083f565b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b82811062000916575050505090565b83516001600160a01b03168552938101939281019260010162000907565b346200038f57600080600319360112620009ea5760095490620009578262000652565b91604091620009698351948562000630565b818452600981526020600080516020620037428339815191528186015b848410620009aa5762000871866200099e8962002fb7565b905191829182620008ee565b60018381928851620009bc81620005fa565b620009db60ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062000986565b80fd5b60606003198201126200038f5760043562000a08816200037d565b916024356001600160401b03928382116200038f57806023830112156200038f5781600401359384116200038f57602484830101116200038f57602401919060443562000a55816200041c565b90565b602062000a7362000a6936620009ed565b9291909162002097565b6040516001600160a01b039091168152f35b346200038f5760003660031901126200038f576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000adf5760005260206000200190600090565b62000ab0565b634e487b7160e01b600052602160045260246000fd5b6003111562000b0657565b62000ae5565b6001600160a01b03909116815260408101929190600382101562000b065760200152565b346200038f5760203660031901126200038f576004356008548110156200038f576008600052600080516020620037228339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760403660031901126200038f576004356001600160401b0381116200038f5762000bc1903690600401620005b1565b906024359162000bd1836200037d565b60018060a01b039260009362000bec8186541633146200224f565b62000c0060ff60045460a01c1615620022a8565b81161562000c7457835b82811062000c4857505062000c2190429262002304565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c6d8362000c6762000c61600195888a620022e7565b620022f8565b62002b8a565b0162000c0a565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200038f5760203660031901126200038f5760043562000ce160018060a01b036000541633146200224f565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200038f5760043562000d27816200037d565b9060243562000a55816200037d565b346200038f5762000d473662000d0c565b60018060a01b039062000e2660009362000d668486541633146200224f565b62000e0784821694858752600b60205262000d8d600160ff60408a205416151514620024eb565b841693848752600c60205262000dab60ff60408920541615620025ca565b848752600c60205260408720805460ff191660011790556001600160a01b038316600090815260036020526040902062000ded90829062002025565b62002025565b6001600160a01b0316600090815260026020526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428380a380f35b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d094262000ecc6200087162000e8136620009ed565b6000805490966001600160a01b03959490939162000ea390871633146200224f565b85851694858952600b60205262000ec6600160ff60408c205416151514620024eb565b62002097565b91821662000edc81151562002538565b62000eea833b15156200257d565b808552600c60205260408520805460ff1916600117905562000f0c8362001fbf565b60405195858796a36001600160a01b031682526020820190565b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f57602061ffff600d5416604051908152f35b346200038f5760203660031901126200038f5760043562000fb2816200037d565b6000546001600160a01b03919062000fce90831633146200224f565b816005549116809282167f03bebf5becbadd9703358ffd62f5a65bddfcc9c20038edae65aebe5542598bf2600080a36001600160a01b03191617600555005b346200038f576200101e3662000d0c565b60018060a01b0390620010646000936200103d8486541633146200224f565b62000e0784821694858752600a60205262000d8d600160ff60408a205416151514620024eb565b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd678380a380f35b346200038f57600080600319360112620009ea576001546001600160a01b039081163381900362001105578062000516928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200038f5760003660031901126200038f57602060ff60045460a01c166040519015158152f35b346200038f5760203660031901126200038f5760043562001192816200037d565b60018060a01b03600091620011ac8284541633146200224f565b600680546001600160a01b0319166001600160a01b038385169081169190911790915591807f00000000000000000000000000000000000000000000000000000000000000001691604051610657808201908282106001600160401b038311176200061657868684936200123a93620030cb86396001600160a01b0391821681529116602082015260400190565b039086f09283156200136d5762001270602093620012df951662000e078460018060a01b0316600052600f602052604060002090565b6001600160a01b0382166000908152600f602052604090206200129b905b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af19081156200136d576200130d916bffffffffffffffffffffffff91859162001338575b5016600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b6200135e915060203d811162001365575b62001355818362000630565b81019062002395565b3862001306565b503d62001349565b6200208b565b346200038f5760203660031901126200038f5760043562001394816200037d565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200038f5760203660031901126200038f576004356010548110156200038f5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201546040516001600160a01b039091168152602090f35b346200038f57600080600319360112620009ea57600854906200143a8262000652565b916040916200144c8351948562000630565b818452600881526020600080516020620037228339815191528186015b848410620014815762000871866200099e8962002fb7565b600183819288516200149381620005fa565b620014b260ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062001469565b346200038f5760003660031901126200038f576020600754604051908152f35b346200038f5760003660031901126200038f576000546040516001600160a01b039091168152602090f35b346200038f5760203660031901126200038f576004356200152d816200037d565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200038f5760403660031901126200038f5760043562001573816200037d565b6024359060018060a01b038091166000526003602052604060002080548310156200038f57602092620015a69162000ac6565b90549060031b1c16604051908152f35b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd676200162f62000871620015ea36620009ed565b6000805490966001600160a01b0395949093916200160c90871633146200224f565b85851694858952600a60205262000ec6600160ff60408c205416151514620024eb565b9182166200163f81151562002538565b6200164d833b15156200257d565b808552600c6020526040808620805460ff191660011790555195869580a36001600160a01b031682526020820190565b346200038f57600080600319360112620009ea576004620016a660ff825460a01c1615620022a8565b336000908152600c60205260409020620016d390600190620016ca905b5460ff1690565b15151462002350565b600d8054620016ee9060101c6001600160a01b0316620004c4565b3314620016f9578280f35b6010549062001707620029aa565b84805b8481106200171a57505050508280f35b620017376200172a82856200272d565b516001600160a01b031690565b8454620017509060101c6001600160a01b0316620004c4565b6001600160a01b03821691908214159081620017df575b5062001783575b506200177b9150620027aa565b85906200170a565b803b15620017db578290876040518095819363f8ba4cff60e01b83525af19182156200136d576200177b92620017bd575b8792506200176e565b80620017cd620017d4926200061c565b8062000585565b38620017b4565b8280fd5b6001600160a01b03166000908152600c60205260409020620018029150620016c3565b3862001767565b346200038f5760203660031901126200038f5760206004356200182c816200037d565b60018060a01b038091166000526002825260406000205416604051908152f35b346200038f5760003660031901126200038f57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200038f57565b359060038210156200038f57565b346200038f5760403660031901126200038f57600435620018ba816200037d565b620018c46200187b565b60018060a01b03600092620018de8285541633146200224f565b16808352600b602052620018fa60ff60408520541615620023a5565b6200192062001908620023eb565b8281526200191a84602083016200229b565b62002406565b808352600b60205260408320805460ff19166001179055620019428262000afb565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200038f576020806003193601126200038f57600435906001600160401b0382116200038f57366023830112156200038f5781600401359162001a318362000652565b9160409362001a438551948562000630565b80845260248285019160061b840101923684116200038f57602401905b83821062001a785762000871866200099e8762002fb7565b85823603126200038f57828691825162001a9281620005fa565b843562001a9f816200037d565b815262001aae8386016200188b565b8382015281520191019062001a60565b346200038f5760203660031901126200038f57602060043562001ae1816200037d565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200038f5760003660031901126200038f576004546040516001600160a01b039091168152602090f35b346200038f5760403660031901126200038f5760043562001b4d816200037d565b62001b576200187b565b60018060a01b0360009262001b718285541633146200224f565b16808352600a60205262001b8d60ff60408520541615620023a5565b62001bb362001b9b620023eb565b82815262001bad84602083016200229b565b62002489565b808352600a60205260408320805460ff1916600117905562001bd58262000afb565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200038f5760003660031901126200038f576005546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f576001546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576020600e54604051908152f35b346200038f5760203660031901126200038f576004356009548110156200038f576009600052600080516020620037428339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760003660031901126200038f576020600854604051908152f35b346200038f5760203660031901126200038f5760043562001d56816200041c565b60045460ff9062001d72336001600160a01b0383161462002350565b60a01c1615159080151582811462001dcc5762001dca927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a360045460ff60a01b191690151560a01b60ff60a01b1617600455565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200038f5760203660031901126200038f5760043562001e28816200037d565b6000546001600160a01b03919062001e4490831633146200224f565b818116801562001e9e5762001dca92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a2061646472657373206e6f742076616c69640000000000006044820152606490fd5b346200038f5760203660031901126200038f57602062001f2560043562001f0a816200037d565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200038f5760203660031901126200038f5760043562001f4e816200037d565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001f7b57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b601054600160401b8110156200061657600181018060105581101562000adf5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b8110156200061657620020459160018201815562000ac6565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000de794936001600160a01b0380831693929091620021729190620020bf86151562001f73565b606082901b6bffffffffffffffffffffffff1916901562002203576037620020e936898862000686565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b6001600160a01b03831660009081526002602052604090206200215890829062000e07565b6001600160a01b0316600090815260036020526040902090565b851692833b156200038f57604051631377d1f560e21b815291600083806200219f85856004840162002063565b038134895af19283156200136d577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b93620021ec575b50620021e76040519283928362002063565b0390a3565b80620017cd620021fc926200061c565b38620021d5565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162002133565b156200225757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000b065752565b15620022b057565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000adf5760051b0190565b3562000a55816200037d565b604051918291829160005b818110620023205750505003902090565b91935091600190843562002334816200037d565b828060a01b03168152602080910194019101918493926200230f565b156200235857565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b908160209103126200038f575190565b15620023ad57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620023fa82620005fa565b60006020838281520152565b600954600160401b8110156200061657600181018060095581101562000adf57600960005281516000805160206200374283398151915290910180546001600160a01b0319166001600160a01b0392909216919091178155906020905b0151600381101562000b0657815460ff60a01b191660a09190911b60ff60a01b16179055565b600854600160401b8110156200061657600181018060085581101562000adf57600860005281516000805160206200372283398151915290910180546001600160a01b0319166001600160a01b03929092169190911781559060209062002463565b15620024f357565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a204d43206e6f7420726567697374657265640000000000006044820152606490fd5b156200254057565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200258557565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a206465706c6f796d656e74206661696c65640000000000006044820152606490fd5b15620025d257565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b156200261f57565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b906200266b8262000652565b6200267a604051918262000630565b82815280926200268d601f199162000652565b0190602036910137565b90620026a38262000652565b620026b2604051918262000630565b8281528092620026c5601f199162000652565b019060005b828110620026d757505050565b806060602080938501015201620026ca565b15620026f157565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000adf5760209160051b010190565b3d1562002772573d9062002756826200066a565b9162002766604051938462000630565b82523d6000602084013e565b606090565b15620027805750565b60405162461bcd60e51b815260206004820152908190620027a6906024830190620006e7565b0390fd5b6000198114620027ba5760010190565b634e487b7160e01b600052601160045260246000fd5b9093926000620027eb60018060a01b0382541633146200224f565b620027ff60ff60045460a01c1615620022a8565b6200280d8451871462002617565b62002818866200265f565b93620028248762002697565b9687835b878382106200283d5750505050505050509190565b620029199282886200290a8980620028c862000c618f8c8162002891620016c3620028776200128e62000ded62000c618f88819a620022e7565b6001600160a01b03166000908152600a6020526040902090565b801562002962575b620028a490620024eb565b620028c2620028b962000c61858585620022e7565b3b1515620026e9565b620022e7565b620028d4868d6200272d565b519082602083519301915af1620028ea62002742565b620028f685876200272d565b526200290384876200272d565b9015159052565b62002921575b505050620027aa565b889062002828565b6200294b81620029446200293e620029529462002959976200272d565b51151590565b936200272d565b5162002a07565b9062002777565b878a8262002910565b50620028a4620029a2620016c3620029886200128e62000ded62000c61898989620022e7565b6001600160a01b03166000908152600b6020526040902090565b905062002899565b604051906010548083528260209182820190601060005283600020936000905b828210620029e357505050620004369250038362000630565b85546001600160a01b031684526001958601958895509381019390910190620029ca565b6103e881511162002ac957604481511062002a97576004810151810190602081602484019303126200038f576024810151906001600160401b0382116200038f5701816043820112156200038f57602481015162002a65816200066a565b9262002a75604051948562000630565b818452604482840101116200038f5762000a55916044602085019101620006c2565b5060405162002aa681620005fa565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b5060405162002ad881620005fa565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b1562002b0457565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200038f575162000a55816200037d565b91908260409103126200038f576020825192015190565b908160209103126200038f575162000a55816200041c565b6001600160a01b039081166000818152600c602052604090209092919062002bbd9062002bb790620016c3565b62002afc565b604092835192632bd016d360e21b84526020926004956000948087898189895af19687156200136d57869762002f93575b50861562002f895781516338d52e0f60e01b81529281848a81895afa9586156200136d578994889762002f51575b50829084519a8b809263226f120560e11b82525afa9889156200136d57879962002f2d575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af19182156200136d57839262002efa575b50845163415be3b560e01b81526001600160a01b03891687820190815292909116979184908290819060200103818b5afa9687156200136d5762002d2d9b8b928b9962002ed0575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a156200136d57889a62002eac575b5016825163095ea7b360e01b9182825283828062002d778b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af19081156200136d5762002dbe9385938d9362002e8a575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af180156200136d5762002e55575b5050833b1562002e5157516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af19182156200136d577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002e3a575b5080a3565b80620017cd62002e4a926200061c565b3862002e35565b8480fd5b8162002e7992903d1062002e82575b62002e70818362000630565b81019062002b72565b50388062002dcf565b503d62002e64565b62002ea490853d871162002e825762002e70818362000630565b503862002d94565b62002ec8919a50833d8511620013655762001355818362000630565b983862002d41565b86939291995062002ef090843d8611620013655762001355818362000630565b9890919262002cfb565b62002f1e90863d881162002f25575b62002f15818362000630565b81019062002b5b565b5062002cb3565b503d62002f09565b62002f49919950823d8411620013655762001355818362000630565b973862002c41565b8391975062002f7990823d841162002f81575b62002f70818362000630565b81019062002b43565b969062002c1c565b503d62002f64565b5050505050505050565b8162002faf9298503d8911620013655762001355818362000630565b953862002bee565b908151916000805b848210620030a95762002fd391506200265f565b92600091825b82811062002fe75750505050565b6200300562002ff782846200272d565b51516001600160a01b031690565b6001600160a01b038116600090815260036020526040902054906000915b808310620030375750505060010162002fd9565b9091956200309a6200307f6200306a89620030648760018060a01b03166000526003602052604060002090565b62000ac6565b905460039190911b1c6001600160a01b031690565b6200308b838c6200272d565b6001600160a01b039091169052565b60018091019601919062003023565b600190620030c062001f0a62002ff785876200272d565b0191019062002fbf56fe60c0346100a157601f61065738819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059a90816100bd823960805181818161010b0152818161026101526102a8015260a05181818160ab01528181610177015261040f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031657806317d70f7c146102fc57806330fa738c146102e157806350188301146102485780637284e416146102dc578063afa91cc614610290578063ce845d1d14610248578063de4065771461024d578063e3575f0514610248578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024457610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c8565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811067ffffffffffffffff82111761023057845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af16101a1610503565b816101f4575b50156101b1575080f35b5162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b8051801592508215610209575b5050386101a7565b819250906020918101031261022c5760200151801515810361022c573880610201565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103bd565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d95760203660031901126102d9576102d6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c8565b80f35b80fd5b610316565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b8576000806003193601126102d9576040805181810181811067ffffffffffffffff8211176103a4578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038e57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610370565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b8576000806003193601126102d957604051602090818101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104b4576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa610441610503565b90806104a9575b1561046457818180518101031261022c57810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610448565b634e487b7160e01b85526041600452602485fd5b156104cf57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055f5767ffffffffffffffff903d8281116105495760405192601f8201601f19908116603f01168401908111848210176105495760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea2646970667358221220e997ae9a99753f92acf0efcb0233b285aef4f9877c4a3dcf0622d106373c0c2064736f6c63430008120033f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212201a5209daf3cfe8d7f397946636efef40742c0e3ba62648cbc371c73f014d77aa64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLBorrow.json b/src/artifacts/tapioca-bar/SGLBorrow.json index 64d7d959..7dcb6a82 100644 --- a/src/artifacts/tapioca-bar/SGLBorrow.json +++ b/src/artifacts/tapioca-bar/SGLBorrow.json @@ -1209,19 +1209,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1939,8 +1926,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556140ee928362000207843960805183612afa015260a05183612bc4015260c05183612ac4015260e05183612b4901525182612b6f01525181612b260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a201461202b5750826302ce728f1461200257826306fdde0314611f4a578263078dfbe714611e57578263095ea7b314611e2c5782630996efb71461197a5782630c4e84f01461186357826318160ddd146118405782631c9e379b146118075782631da8bf101461175f57826323b872dd146115d7578263313ce567146115a0578263331960ff1461158057826334d441d0146115605782633644e5151461154257826337b6b7b91461152257826338d52e0f146114f85782633ba0b9a9146114d85782633f741adb146114af57826340626d8b1461148f57826344de240a1461146f578263473e3ce71461144f57826348e4163e146114165782634d7f2a34146113f65782634e71e0c8146113535782635224372c1461129c578263529898f21461127c57826352f353eb14611252578263551402321461122857826355c2ab94146111fe57826357935462146111de5782635dfe04e81461117e5782636c3d8b8f1461115457826370a082311461111b57826372778547146110e357826374645ff3146110b65782637dc0d1d01461108c5782637ecebe00146110555782637fa0b84e14611023578263821226e8146110035782638285ef4014610fcf5782638c5d0ed314610faf5782638da5cb5b14610f85578263910dd7c814610d4c578263959916dc14610d2d57826395d89b4114610c7457826399a9702814610c435782639c5d719214610c235782639e15e89f14610be7578263a9059cbb14610b0b578263b0e21e8a14610aeb578263b27c0e7414610ab0578263bb4cfe3b14610a90578263c23ea21f14610a66578263cd0211eb14610640578263ce8849ed14610616578263d505accf146104c55750508063d8dfeb451461049d578063dd62ed3e14610450578063de40657714610428578063e0996cb61461040a578063e30c3978146103e2578063ea64dd56146103c4578063eec0f42e146103a6578063f42760b714610388578063f8ba4cff14610369578063f9557ccb146103335763ffe04c661461031257600080fd5b3461032f578160031936011261032f57602090602b549051908152f35b5080fd5b503461032f578160031936011261032f57602554905190819061036590608081901c906001600160801b03168361232e565b0390f35b8234610385578060031936011261038557610382613ccb565b80f35b80fd5b503461032f578160031936011261032f57602090602c549051908152f35b503461032f578160031936011261032f57602090600c549051908152f35b503461032f578160031936011261032f57602090601f549051908152f35b503461032f578160031936011261032f5760065490516001600160a01b039091168152602090f35b503461032f578160031936011261032f57602090601d549051908152f35b503461032f578160031936011261032f5760095490516001600160a01b039091168152602090f35b503461032f578060031936011261032f5760209161046c612071565b82610475612087565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b503461032f578160031936011261032f57600b5490516001600160a01b039091168152602090f35b84925034610612576104d636612103565b9183949895979342116105e157916105969161059e938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161051683612e1a565b90558c8751956020870197600080516020613fd9833981519152895260008a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b519020610567612ac1565b915190602082019261190160f01b8452602283015260428201526042815261058e816122f0565b519020612d95565b919091612c96565b16036105b05750610382939450612e77565b606490602087519162461bcd60e51b8352820152601e6024820152600080516020613fb98339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d6024820152600080516020613f998339815191526044820152606490fd5b8280fd5b5050503461032f578160031936011261032f5760085490516001600160a01b039091168152602090f35b5083833461032f57608036600319011261032f5761065c612071565b610664612087565b9061066d6120f4565b9360643591600182526020956007875261068d60ff878520541615612ece565b6001600160a01b03858116959093906106ea906106ac30891415612f0b565b6106b4612652565b50506106be613ccb565b6106cf876106ca6133d3565b61366f565b905060115460ff6106e389600d5416613365565b169261351c565b8015610a23576106fa908461359f565b8581526017885286812054808611610a1b575b5084156109e057879861074a98610726876106ca6133d3565b8151909b6001600160801b039390928492610742908416613c87565b015116613c3d565b87835260178b5288832061075f888254612445565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610915578c918f9188976109aa575b50602554861694891561091f575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561091557839087906108df575b6107ec9250612445565b84116108ac575092600080516020613ff983398151915295928c959261081a8d9b9a99965b82841690613742565b1660018060801b0319602554161760255584841690818352602787528b83206028549081855288528c842054821160001461088757505081526027855289812060285482528552808a8120555b5015610882575080600954165b87519485521692a451908152f35b610874565b90918352602787528b832090835286526108a58b8320918254612445565b9055610867565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d831161090e575b6108f6818361230b565b8101031261090957826107ec91516107e2565b600080fd5b503d6108ec565b8c513d88823e3d90fd5b9250929050813b156109a6579186918693838f6109528d915197889687958694630208d92960e11b865230918601613da6565b03925af1801561099c57928c9a99989592600080516020613ff98339815191529895928f9895610987575b5061081a90610811565b9361099561081a9295612275565b939061097d565b8b513d87823e3d90fd5b8680fd5b9250955081813d83116109d9575b6109c2818361230b565b810103126109d5578d8c915195386107a3565b8580fd5b503d6109b8565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b94508961070d565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461032f578160031936011261032f5760265490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601e549051908152f35b5050503461032f578160031936011261032f576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b5050503461032f578160031936011261032f57602090601a549051908152f35b5050503461032f578060031936011261032f57602091610b29612071565b82602435928315801590610bd5575b610b68575b50519182526001600160a01b0316903390600080516020614059833981519152908590a35160018152f35b3381526001865281812054610b7f85821015612bea565b6001600160a01b038416908533839003610b9c575b505050610b3d565b610bb091610bab841515612c2f565b612445565b3383526001885283832055815220610bc9838254612452565b90558238808085610b94565b50336001600160a01b03841614610b38565b5050503461032f578060031936011261032f57606090610c11610c08612071565b60243590612591565b91929081519384526020840152820152f35b5050503461032f578160031936011261032f57602090602d549051908152f35b5050503461032f578060031936011261032f57602090610c6d610c64612071565b6024359061298f565b9051908152f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cb68161229e565b51915afa610cc2613335565b915015610d1e57610cd290613e27565b905b610d0c60238251809462746d2d60e81b6020830152610cfc815180926020868601910161209d565b810103600381018552018361230b565b519182916020835260208301906120c0565b50610d27613dd0565b90610cd4565b5050503461032f578160031936011261032f5760209081549051908152f35b84918434610f815780600319360112610f81578135926001600160401b038411610f7d5736602385011215610f7d578383013592610d8984612348565b94610d968451968761230b565b84865286602091828801963660248284010111610612578060248593018937880101526024359361ffff8516809503610f7957610100958688805181010312610f7557610de290612645565b93610dee828901612c74565b90610dfb60608a01612c74565b9860808101519860a082015192610e1460c08401612c88565b91818401519301519360018060a01b03808097169d169a814211610f4457928d8f819897948f948f8f968f918f959a8f8c8195610ede9f9c6105969f50600014610f2f57600080516020613fd98339815191529a5b825289522093845494610e7b86612e1a565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610eac816122d4565b519020610eb7612ac1565b908951908b82019261190160f01b8452602283015260428201526042815261058e816122f0565b1603610f0057505050600014610ef75761038292612e77565b61038292612e29565b5162461bcd60e51b815291820152601e6024820152600080516020613fb9833981519152604482015260649150fd5b6000805160206140398339815191529a610e69565b875162461bcd60e51b8152808b018a9052601d6024820152600080516020613f998339815191526044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032f578160031936011261032f5760055490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601b549051908152f35b5050503461032f578160031936011261032f57601454905190819061036590608081901c906001600160801b03168361232e565b5050503461032f578160031936011261032f57602090602f549051908152f35b5050503461032f578060031936011261032f5760209061104e611044612071565b6024359033612e29565b5160018152f35b509050346106125760203660031901126106125760209282916001600160a01b0361107e612071565b168252845220549051908152f35b5050503461032f578160031936011261032f57600f5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57805161036591610d0c826110dc816121f0565b038361230b565b509050346106125760203660031901126106125735916009831015610385575060ff611110602093612187565b541690519015158152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b03611144612071565b1681526001845220549051908152f35b5050503461032f578160031936011261032f57600a5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f5760809061119c613723565b506111a561375b565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461032f578160031936011261032f57602090601c549051908152f35b5050503461032f578160031936011261032f57602e548151911c6001600160401b03168152602090f35b5050503461032f578160031936011261032f57602e5490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f5760305490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f576020906021549051908152f35b509050346106125761130a906112fe60ff84956112d16112bb36612152565b9491989093808052600760205220541615612ece565b6112d9612652565b50506112e3613ccb565b6112f86001600160a01b038216301415612f0b565b85612f56565b9290936011549061341f565b1561131c575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346106125782600319360112610612576006546001600160a01b039290918383169190338390036113b3575050806005549384166000805160206140198339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461032f578160031936011261032f57602090602a549051908152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b0361143f612071565b1681526017845220549051908152f35b5050503461032f578160031936011261032f576020906015549051908152f35b5050503461032f578160031936011261032f57602090600e549051908152f35b5050503461032f578160031936011261032f576020906016549051908152f35b508284346103855760603660031901126103855750610c6d602092604435906024359035612478565b5050503461032f578160031936011261032f576020906011549051908152f35b5050503461032f578160031936011261032f57600d5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f576020906012549051908152f35b5050503461032f578160031936011261032f57602090610c6d612ac1565b5050503461032f578160031936011261032f576020906019549051908152f35b5050503461032f578160031936011261032f576020906013549051908152f35b5050503461032f578160031936011261032f57600d546020919060ff906115cf906001600160a01b0316613365565b915191168152f35b50828434610385576115e836612152565b919282611622575b508351918252602094506001600160a01b03908116921690600080516020614059833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061164d87831015612bea565b851692838a03611661575b505050506115f0565b8985526002835288852033865283528885205490600182016116cb575b5050928260209960018a946116aa8a8e99610bab6000805160206140598339815191529c9a1515612c2f565b92855252838320558152206116c0858254612452565b905591878080611658565b87821061172157509260209960018a946116aa8a8e99966116fc826000805160206140598339815191529d9b612445565b86895260028552898920338a528552898920559699505050945050998194965061167e565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b849250346106125761177036612103565b9397949690928042116105e1579386936117f5938c8c89610596968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117b285612e1a565b905588519660208801986000805160206140398339815191528a528a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b16036105b05750610382939450612e29565b5050503461032f57602036600319011261032f5760209181906001600160a01b03611830612071565b1681526018845220549051908152f35b5050503461032f578160031936011261032f5760209060255460801c9051908152f35b509050346106125781600319360112610612578035906009821015610f815761188a6120e5565b6008549093906001600160a01b031633036119405760ff6118aa84612187565b54161515931515938414611908575050808260ff6118ca6118f894612187565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612187565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b509050346106125761018036600319011261061257602480356001600160a01b03818116918290036109d5576001600160401b03604435818111610f795736602382011215610f795780860135918211610f795736858383010111610f795760643593838516809503610f75576119f684600554163314612363565b863580611dec575b5080611dae575b508482611c54575b50505081611c14575b505060843580611bfc575b5060a43580611be4575b5060c43580611bcd575b5060e43580611ba9575b506101043580611b85575b506101243580611b54575b506101443580611ae3575b50610164359283611a6f578480f35b601e548410611a8657505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611af2620186a08211156123ae565b601f548111611b0457601e5538611a60565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611a55565b611b93620186a082106123ae565b611ba0601b5482116123ae565b601c5538611a4a565b611bb7620186a082106123ae565b611bc4601c5482106123ae565b601b5538611a3f565b611bdb620186a082106123ae565b601d5538611a35565b611bf3620186a08211156123ae565b601a5538611a2b565b611c0b620186a08211156123ae565b60195538611a21565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611a16565b8291611c616010546121b6565b601f8111611d4f575b508990601f8411600114611ccf578a93611cc2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084611a0d565b0101359050843880611c7f565b60108b52601f198416945060008051602061409983398151915292509087908b60205b878210611d305750508460019610611d14575b50505050811b01601055611c96565b60001960f88660031b161c199201013516905538808681611d05565b8285019093013585556001949094019389929182019190810190611cf2565b60108b529092509050600080516020614099833981519152601f840160051c810160208510611da7575b91849391601f8994920160051c01905b818110611d965750611c6a565b8b8155859450889350600101611d89565b5080611d79565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a05565b611dfb620186a08211156123ae565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3602055386119fe565b5050503461032f578060031936011261032f5760209061104e611e4d612071565b6024359033612e77565b8482853461061257606036600319011261061257611e73612071565b91611e7c6120e5565b91611e856120f4565b9260018060a01b03948591611e9f83600554163314612363565b15611f31571692831590811591611f29575b5015611eee575050806005549283166000805160206140198339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611eb1565b93505050501660018060a01b0319600654161760065580f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916306fdde0360e01b83528152611f8c8161229e565b51915afa611f98613335565b915015611ff357611fa890613e27565b905b610d0c60348251809473546170696f63612053696e67756c61726974792d60601b6020830152611fe3815180926020868601910161209d565b810103601481018552018361230b565b50611ffc613dd0565b90611faa565b8385346103855780600319360112610385575061201d612652565b825191151582526020820152f35b85908534610612578060031936011261061257602092612049612071565b612051612087565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361090957565b602435906001600160a01b038216820361090957565b60005b8381106120b05750506000910152565b81810151838201526020016120a0565b906020916120d98151809281855285808601910161209d565b601f01601f1916010190565b60243590811515820361090957565b60443590811515820361090957565b60e0906003190112610909576001600160a01b03906004358281168103610909579160243590811681036109095790604435906064359060843560ff81168103610909579060a4359060c43590565b6060906003190112610909576001600160a01b0390600435828116810361090957916024359081168103610909579060443590565b60098110156121a0576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156121e6575b60208310146121d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916121c5565b60105460009291612200826121b6565b90818152600192838116908160001461225a575060011461222057505050565b9092935060106000526020928360002092846000945b8386106122465750505050010190565b805485870183015294019385908201612236565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161228857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761228857604052565b606081019081106001600160401b0382111761228857604052565b61010081019081106001600160401b0382111761228857604052565b608081019081106001600160401b0382111761228857604052565b601f909101601f19168101906001600160401b0382119082101761228857604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161228857601f01601f191660200190565b1561236a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156123b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561240157565b634e487b7160e01b600052601160045260246000fd5b8115612421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161240157600a0a90565b9190820391821161240157565b9190820180921161240157565b8181039291600013801582851316918412161761240157565b6014549192916124c1916124b2916124a89161249e906001600160801b038316906123ee565b9060801c90612417565b93601f54906123ee565b6124bb83612437565b90612417565b808310612589576124d56125119184612445565b9161250c6125066124fd601e546124f76124ee86612437565b60215490612452565b906123ee565b6124bb84612437565b91612437565b61245f565b6509184e72a0009081810291818305149015171561240157670de0b6b3a76400009182810292818405149015171561240157801561242157600160ff1b91808314600019831416612401570590600082121561258257811461240157600003905b80821161257d575090565b905090565b5090612572565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612639579160409161261561262d959483602086516125d18161229e565b82815201526125ef866125e261375b565b5050505050939050612806565b815190936001600160801b039160209161260b918416906123ee565b9201511690612417565b81811061263157035b958152601860205220546128d8565b9091565b50508061261e565b50509192505080918190565b5190811515820361090957565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b0316828480612685602482016121f0565b0381600080955af180156127ae5781948291612772575b509284156127155783156126db57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061272860135460125490612452565b42116127385750601154906126d5565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116127a7575b61278b818361230b565b8101031261038557602061279e85612645565b9401513861269c565b503d612781565b508251903d90823e3d90fd5b156127c157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6128118215156127ba565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156128cc578092612894575b50509061288c61288361289193620186a060225404906123ee565b601e54906123ee565b612417565b90565b9091506020823d82116128c4575b816128af6020938361230b565b8101031261038557505161288c612883612868565b3d91506128a2565b604051903d90823e3d90fd5b6128e38215156127ba565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561298357600091612950575b509061288c61293c92602254906123ee565b620186a061294c601e54836123ee565b0491565b906020823d821161297b575b816129696020938361230b565b8101031261038557505161288c61292a565b3d915061295c565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129b2916128d8565b918352601760205260408320548015612abb578115612abb57818110612abb5782811015612ab1576014546129fb918391610bab9161249e906001600160801b038316906123ee565b90620186a09283830292808404851490151715612a9d57612a2092916124bb91612445565b91601b5491601c5493612a33858561245f565b80820291848212600160ff1b821416612a9d578183051490151715612a895705818482019485129112908015821691151617612a75575080821261257d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bc1575b15612b1c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122885760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612af3565b15612bf157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c3657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361090957565b519060ff8216820361090957565b60058110156121a05780612ca75750565b60018103612cef5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d3c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d4557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e0e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e015781516001600160a01b03811615612dfb579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ed557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f1257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561332a57620186a09260209084612f738354866123ee565b0494612fa9612f856011549787612452565b600d546001600160a01b0398919060ff90612fa1908b16613365565b16918761351c565b80156132db57612fb9908561359f565b612fc48354866123ee565b0494612fce6133d3565b9583612fda8288612452565b916040968751612fe98161229e565b6000808252970187905289516001600160801b039490851661326c5799613049908b906130449087908161302381865b1682845116613742565b16815281613039818a8401961682875116613742565b168094525116613c87565b613c3d565b601654801590811561325d575b501561321f5784899116808852601784528888206130758c8254612452565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806131fe575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156131f45785976131c5575b506130f66133f9565b818101916103e88484511610613191575090613129839283613120613130968c1682845116613656565b16809152613ca9565b5116613c62565b6009541690600e5490823b15610f81578392839286958893613168985198899586948593630208d92960e11b85523060048601613da6565b03925af191821561318757505061317e57509091565b61262d90612275565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116131ed575b6131dd818361230b565b81010312610f7d575195386130ed565b503d6131d3565b86513d87823e3d90fd5b83600a5416865260018252613217878720918254612452565b9055386130af565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508460145416111538613056565b998a859b8583018781511661328190836123ee565b8885511661328e91612417565b9d8e8186511661329d916123ee565b9151166132a991612417565b106132c4575b6130448661304993818f948161302391613019565b85806132d181949e612e1a565b9d935050506132af565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613360573d9061334682612348565b91613354604051938461230b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526133888161229e565b51916001600160a01b03165afa61339d613335565b90806133c8575b156133c2576020818051810103126109095760206128919101612c88565b50601290565b5060208151146133a4565b604051906133e08261229e565b6014546001600160801b038116835260801c6020830152565b604051906134068261229e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561351257601881526040862054801561350b57816134596133d3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156128cc5780976134d5575b505061260b6134b56128836134d0969798620186a060225404906123ee565b956134cb60018060801b039485875116906123ee565b6123ee565b111590565b9096508187813d8311613504575b6134ed818361230b565b81010312610385575094519461260b6134b5613496565b503d6134e3565b5050505050565b5060019450505050565b6125069061353c8561289196956135366124bb9685612806565b9061355c565b6001600160a01b03909116600090815260186020526040902054906123ee565b9182158015613597575b612589576001810180911161240157613585926124f761288c92612437565b6005810180911161240157600a900490565b508115613566565b6001600160a01b03163381036135b3575050565b600081815260209060038252604091828220338352815284838320541061361c57838252600381528282203383528152828220546001016135f5575050505050565b61361093825260038152828220903383525220918254612445565b9055388080808061350b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161240157565b919091600060206040516136828161229e565b82815201526020810180516001600160801b039081166136c6576136bf81865b816136b2818a1682895116613656565b1686521682845116613656565b1690529190565b6136e06136d682855116876123ee565b8284511690612417565b94806136fc6136f284865116896123ee565b8487511690612417565b1061370c575b816136bf916136a2565b948161371a6136bf92612e1a565b96915050613702565b60405190613730826122b9565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161240157565b613763613723565b50600060206040516137748161229e565b8281520152600060206040516137898161229e565b828152015260405161379a816122b9565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906137cc6133d3565b916137d56133f9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561298357600090613c09575b885161384092506001600160801b031690612452565b9485613bd45760005b60208501518190613863906001600160401b031642612445565b958615613ba9575050426001600160401b031660208b8101919091528901516001600160801b031615613b5f57508751895160209161391291670de0b6b3a7640000916138c89189916134cb916001600160401b0316906001600160801b03166123ee565b8b5191900498906001600160801b03906138e790828c16908316613742565b168b5261288c620186a06138fd601a548c6123ee565b858e01516001600160801b03169190046123ee565b60408b0180519197916001600160801b03808a1692916139359084908316613742565b169052898301805190916001600160801b039161395491908316613742565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561298357600090613b2b575b88516139b192506001600160801b031690612452565b80613af557506000925b602b548481811015613a55576139d19082612445565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561240157613a37916139ff91612417565b9161288c613a24613a1e602f54936134cb60018060401b0397806123ee565b83612452565b8c519092906001600160401b03166123ee565b16808952602e546001600160401b0316908111613a515750565b8852565b9050602c54808211613a6657505050565b613a6f91612445565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156124015761288c613ab8613a1e613aaa613ac895602d5490612417565b936134cb602f5495806123ee565b8b516001600160401b03166123ee565b602e5460401c6001600160401b0316808211613aed575b506001600160401b03168852565b905038613adf565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561240157613b2591612417565b926139bb565b506020813d602011613b57575b81613b456020938361230b565b81010312610909576139b1905161399b565b3d9150613b38565b8951603054999a91999498509296509450506001600160401b03918216925016819003613b9d575b509392613b926133f9565b926000926000929190565b81526001925038613b87565b98509950505095505050505091613bbe6133d3565b91613bc76133f9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156124015786613c0491612417565b613849565b506020813d602011613c35575b81613c236020938361230b565b8101031261090957613840905161382a565b3d9150613c16565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b613d7a602080613d66613cdc61375b565b9396959390929015613d7c5750505060018060401b036030541660008060008051602061407983398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091610742908416613c87565b613d7283825116613ca9565b015116613c62565b565b83516040519384526001600160401b031692600080516020614079833981519152908990a4613d11565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b60405190613ddd8261229e565b60038252623f3f3f60e81b6020830152565b908151811015613e00570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124015760010190565b805160408110613e9f57508051810190602081818401930312610909576020810151906001600160401b038211610909570181603f82011215610909576020810151613e7281612348565b92613e80604051948561230b565b818452604082840101116109095761289191604060208501910161209d565b602092908303613f8d576000805b60ff81168581109081613f6e575b5015613ecf57613eca90613e16565b613ead565b9260ff80941692613edf84612348565b93613eed604051958661230b565b808552613efc601f1991612348565b013687860137825b85811687811080613f51575b15613f4657613f419190613f3b6001600160f81b0319613f308388613def565b5116871a9188613def565b53613e16565b613f04565b505094505050905090565b506001600160f81b0319613f658286613def565b51161515613f10565b6001600160f81b03199150613f839086613def565b5116151538613ebb565b915050612891613dd056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207c79cc4e572498c1a2ddb00aaaac7fb8ab838bba0a64908d1a7a60a07581900564736f6c63430008120033", - "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a201461202b5750826302ce728f1461200257826306fdde0314611f4a578263078dfbe714611e57578263095ea7b314611e2c5782630996efb71461197a5782630c4e84f01461186357826318160ddd146118405782631c9e379b146118075782631da8bf101461175f57826323b872dd146115d7578263313ce567146115a0578263331960ff1461158057826334d441d0146115605782633644e5151461154257826337b6b7b91461152257826338d52e0f146114f85782633ba0b9a9146114d85782633f741adb146114af57826340626d8b1461148f57826344de240a1461146f578263473e3ce71461144f57826348e4163e146114165782634d7f2a34146113f65782634e71e0c8146113535782635224372c1461129c578263529898f21461127c57826352f353eb14611252578263551402321461122857826355c2ab94146111fe57826357935462146111de5782635dfe04e81461117e5782636c3d8b8f1461115457826370a082311461111b57826372778547146110e357826374645ff3146110b65782637dc0d1d01461108c5782637ecebe00146110555782637fa0b84e14611023578263821226e8146110035782638285ef4014610fcf5782638c5d0ed314610faf5782638da5cb5b14610f85578263910dd7c814610d4c578263959916dc14610d2d57826395d89b4114610c7457826399a9702814610c435782639c5d719214610c235782639e15e89f14610be7578263a9059cbb14610b0b578263b0e21e8a14610aeb578263b27c0e7414610ab0578263bb4cfe3b14610a90578263c23ea21f14610a66578263cd0211eb14610640578263ce8849ed14610616578263d505accf146104c55750508063d8dfeb451461049d578063dd62ed3e14610450578063de40657714610428578063e0996cb61461040a578063e30c3978146103e2578063ea64dd56146103c4578063eec0f42e146103a6578063f42760b714610388578063f8ba4cff14610369578063f9557ccb146103335763ffe04c661461031257600080fd5b3461032f578160031936011261032f57602090602b549051908152f35b5080fd5b503461032f578160031936011261032f57602554905190819061036590608081901c906001600160801b03168361232e565b0390f35b8234610385578060031936011261038557610382613ccb565b80f35b80fd5b503461032f578160031936011261032f57602090602c549051908152f35b503461032f578160031936011261032f57602090600c549051908152f35b503461032f578160031936011261032f57602090601f549051908152f35b503461032f578160031936011261032f5760065490516001600160a01b039091168152602090f35b503461032f578160031936011261032f57602090601d549051908152f35b503461032f578160031936011261032f5760095490516001600160a01b039091168152602090f35b503461032f578060031936011261032f5760209161046c612071565b82610475612087565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b503461032f578160031936011261032f57600b5490516001600160a01b039091168152602090f35b84925034610612576104d636612103565b9183949895979342116105e157916105969161059e938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161051683612e1a565b90558c8751956020870197600080516020613fd9833981519152895260008a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b519020610567612ac1565b915190602082019261190160f01b8452602283015260428201526042815261058e816122f0565b519020612d95565b919091612c96565b16036105b05750610382939450612e77565b606490602087519162461bcd60e51b8352820152601e6024820152600080516020613fb98339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d6024820152600080516020613f998339815191526044820152606490fd5b8280fd5b5050503461032f578160031936011261032f5760085490516001600160a01b039091168152602090f35b5083833461032f57608036600319011261032f5761065c612071565b610664612087565b9061066d6120f4565b9360643591600182526020956007875261068d60ff878520541615612ece565b6001600160a01b03858116959093906106ea906106ac30891415612f0b565b6106b4612652565b50506106be613ccb565b6106cf876106ca6133d3565b61366f565b905060115460ff6106e389600d5416613365565b169261351c565b8015610a23576106fa908461359f565b8581526017885286812054808611610a1b575b5084156109e057879861074a98610726876106ca6133d3565b8151909b6001600160801b039390928492610742908416613c87565b015116613c3d565b87835260178b5288832061075f888254612445565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610915578c918f9188976109aa575b50602554861694891561091f575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561091557839087906108df575b6107ec9250612445565b84116108ac575092600080516020613ff983398151915295928c959261081a8d9b9a99965b82841690613742565b1660018060801b0319602554161760255584841690818352602787528b83206028549081855288528c842054821160001461088757505081526027855289812060285482528552808a8120555b5015610882575080600954165b87519485521692a451908152f35b610874565b90918352602787528b832090835286526108a58b8320918254612445565b9055610867565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d831161090e575b6108f6818361230b565b8101031261090957826107ec91516107e2565b600080fd5b503d6108ec565b8c513d88823e3d90fd5b9250929050813b156109a6579186918693838f6109528d915197889687958694630208d92960e11b865230918601613da6565b03925af1801561099c57928c9a99989592600080516020613ff98339815191529895928f9895610987575b5061081a90610811565b9361099561081a9295612275565b939061097d565b8b513d87823e3d90fd5b8680fd5b9250955081813d83116109d9575b6109c2818361230b565b810103126109d5578d8c915195386107a3565b8580fd5b503d6109b8565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b94508961070d565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461032f578160031936011261032f5760265490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601e549051908152f35b5050503461032f578160031936011261032f576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b5050503461032f578160031936011261032f57602090601a549051908152f35b5050503461032f578060031936011261032f57602091610b29612071565b82602435928315801590610bd5575b610b68575b50519182526001600160a01b0316903390600080516020614059833981519152908590a35160018152f35b3381526001865281812054610b7f85821015612bea565b6001600160a01b038416908533839003610b9c575b505050610b3d565b610bb091610bab841515612c2f565b612445565b3383526001885283832055815220610bc9838254612452565b90558238808085610b94565b50336001600160a01b03841614610b38565b5050503461032f578060031936011261032f57606090610c11610c08612071565b60243590612591565b91929081519384526020840152820152f35b5050503461032f578160031936011261032f57602090602d549051908152f35b5050503461032f578060031936011261032f57602090610c6d610c64612071565b6024359061298f565b9051908152f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cb68161229e565b51915afa610cc2613335565b915015610d1e57610cd290613e27565b905b610d0c60238251809462746d2d60e81b6020830152610cfc815180926020868601910161209d565b810103600381018552018361230b565b519182916020835260208301906120c0565b50610d27613dd0565b90610cd4565b5050503461032f578160031936011261032f5760209081549051908152f35b84918434610f815780600319360112610f81578135926001600160401b038411610f7d5736602385011215610f7d578383013592610d8984612348565b94610d968451968761230b565b84865286602091828801963660248284010111610612578060248593018937880101526024359361ffff8516809503610f7957610100958688805181010312610f7557610de290612645565b93610dee828901612c74565b90610dfb60608a01612c74565b9860808101519860a082015192610e1460c08401612c88565b91818401519301519360018060a01b03808097169d169a814211610f4457928d8f819897948f948f8f968f918f959a8f8c8195610ede9f9c6105969f50600014610f2f57600080516020613fd98339815191529a5b825289522093845494610e7b86612e1a565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610eac816122d4565b519020610eb7612ac1565b908951908b82019261190160f01b8452602283015260428201526042815261058e816122f0565b1603610f0057505050600014610ef75761038292612e77565b61038292612e29565b5162461bcd60e51b815291820152601e6024820152600080516020613fb9833981519152604482015260649150fd5b6000805160206140398339815191529a610e69565b875162461bcd60e51b8152808b018a9052601d6024820152600080516020613f998339815191526044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032f578160031936011261032f5760055490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601b549051908152f35b5050503461032f578160031936011261032f57601454905190819061036590608081901c906001600160801b03168361232e565b5050503461032f578160031936011261032f57602090602f549051908152f35b5050503461032f578060031936011261032f5760209061104e611044612071565b6024359033612e29565b5160018152f35b509050346106125760203660031901126106125760209282916001600160a01b0361107e612071565b168252845220549051908152f35b5050503461032f578160031936011261032f57600f5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57805161036591610d0c826110dc816121f0565b038361230b565b509050346106125760203660031901126106125735916009831015610385575060ff611110602093612187565b541690519015158152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b03611144612071565b1681526001845220549051908152f35b5050503461032f578160031936011261032f57600a5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f5760809061119c613723565b506111a561375b565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461032f578160031936011261032f57602090601c549051908152f35b5050503461032f578160031936011261032f57602e548151911c6001600160401b03168152602090f35b5050503461032f578160031936011261032f57602e5490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f5760305490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f576020906021549051908152f35b509050346106125761130a906112fe60ff84956112d16112bb36612152565b9491989093808052600760205220541615612ece565b6112d9612652565b50506112e3613ccb565b6112f86001600160a01b038216301415612f0b565b85612f56565b9290936011549061341f565b1561131c575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346106125782600319360112610612576006546001600160a01b039290918383169190338390036113b3575050806005549384166000805160206140198339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461032f578160031936011261032f57602090602a549051908152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b0361143f612071565b1681526017845220549051908152f35b5050503461032f578160031936011261032f576020906015549051908152f35b5050503461032f578160031936011261032f57602090600e549051908152f35b5050503461032f578160031936011261032f576020906016549051908152f35b508284346103855760603660031901126103855750610c6d602092604435906024359035612478565b5050503461032f578160031936011261032f576020906011549051908152f35b5050503461032f578160031936011261032f57600d5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f576020906012549051908152f35b5050503461032f578160031936011261032f57602090610c6d612ac1565b5050503461032f578160031936011261032f576020906019549051908152f35b5050503461032f578160031936011261032f576020906013549051908152f35b5050503461032f578160031936011261032f57600d546020919060ff906115cf906001600160a01b0316613365565b915191168152f35b50828434610385576115e836612152565b919282611622575b508351918252602094506001600160a01b03908116921690600080516020614059833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061164d87831015612bea565b851692838a03611661575b505050506115f0565b8985526002835288852033865283528885205490600182016116cb575b5050928260209960018a946116aa8a8e99610bab6000805160206140598339815191529c9a1515612c2f565b92855252838320558152206116c0858254612452565b905591878080611658565b87821061172157509260209960018a946116aa8a8e99966116fc826000805160206140598339815191529d9b612445565b86895260028552898920338a528552898920559699505050945050998194965061167e565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b849250346106125761177036612103565b9397949690928042116105e1579386936117f5938c8c89610596968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117b285612e1a565b905588519660208801986000805160206140398339815191528a528a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b16036105b05750610382939450612e29565b5050503461032f57602036600319011261032f5760209181906001600160a01b03611830612071565b1681526018845220549051908152f35b5050503461032f578160031936011261032f5760209060255460801c9051908152f35b509050346106125781600319360112610612578035906009821015610f815761188a6120e5565b6008549093906001600160a01b031633036119405760ff6118aa84612187565b54161515931515938414611908575050808260ff6118ca6118f894612187565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612187565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b509050346106125761018036600319011261061257602480356001600160a01b03818116918290036109d5576001600160401b03604435818111610f795736602382011215610f795780860135918211610f795736858383010111610f795760643593838516809503610f75576119f684600554163314612363565b863580611dec575b5080611dae575b508482611c54575b50505081611c14575b505060843580611bfc575b5060a43580611be4575b5060c43580611bcd575b5060e43580611ba9575b506101043580611b85575b506101243580611b54575b506101443580611ae3575b50610164359283611a6f578480f35b601e548410611a8657505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611af2620186a08211156123ae565b601f548111611b0457601e5538611a60565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611a55565b611b93620186a082106123ae565b611ba0601b5482116123ae565b601c5538611a4a565b611bb7620186a082106123ae565b611bc4601c5482106123ae565b601b5538611a3f565b611bdb620186a082106123ae565b601d5538611a35565b611bf3620186a08211156123ae565b601a5538611a2b565b611c0b620186a08211156123ae565b60195538611a21565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611a16565b8291611c616010546121b6565b601f8111611d4f575b508990601f8411600114611ccf578a93611cc2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084611a0d565b0101359050843880611c7f565b60108b52601f198416945060008051602061409983398151915292509087908b60205b878210611d305750508460019610611d14575b50505050811b01601055611c96565b60001960f88660031b161c199201013516905538808681611d05565b8285019093013585556001949094019389929182019190810190611cf2565b60108b529092509050600080516020614099833981519152601f840160051c810160208510611da7575b91849391601f8994920160051c01905b818110611d965750611c6a565b8b8155859450889350600101611d89565b5080611d79565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a05565b611dfb620186a08211156123ae565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3602055386119fe565b5050503461032f578060031936011261032f5760209061104e611e4d612071565b6024359033612e77565b8482853461061257606036600319011261061257611e73612071565b91611e7c6120e5565b91611e856120f4565b9260018060a01b03948591611e9f83600554163314612363565b15611f31571692831590811591611f29575b5015611eee575050806005549283166000805160206140198339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611eb1565b93505050501660018060a01b0319600654161760065580f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916306fdde0360e01b83528152611f8c8161229e565b51915afa611f98613335565b915015611ff357611fa890613e27565b905b610d0c60348251809473546170696f63612053696e67756c61726974792d60601b6020830152611fe3815180926020868601910161209d565b810103601481018552018361230b565b50611ffc613dd0565b90611faa565b8385346103855780600319360112610385575061201d612652565b825191151582526020820152f35b85908534610612578060031936011261061257602092612049612071565b612051612087565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361090957565b602435906001600160a01b038216820361090957565b60005b8381106120b05750506000910152565b81810151838201526020016120a0565b906020916120d98151809281855285808601910161209d565b601f01601f1916010190565b60243590811515820361090957565b60443590811515820361090957565b60e0906003190112610909576001600160a01b03906004358281168103610909579160243590811681036109095790604435906064359060843560ff81168103610909579060a4359060c43590565b6060906003190112610909576001600160a01b0390600435828116810361090957916024359081168103610909579060443590565b60098110156121a0576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156121e6575b60208310146121d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916121c5565b60105460009291612200826121b6565b90818152600192838116908160001461225a575060011461222057505050565b9092935060106000526020928360002092846000945b8386106122465750505050010190565b805485870183015294019385908201612236565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161228857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761228857604052565b606081019081106001600160401b0382111761228857604052565b61010081019081106001600160401b0382111761228857604052565b608081019081106001600160401b0382111761228857604052565b601f909101601f19168101906001600160401b0382119082101761228857604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161228857601f01601f191660200190565b1561236a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156123b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561240157565b634e487b7160e01b600052601160045260246000fd5b8115612421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161240157600a0a90565b9190820391821161240157565b9190820180921161240157565b8181039291600013801582851316918412161761240157565b6014549192916124c1916124b2916124a89161249e906001600160801b038316906123ee565b9060801c90612417565b93601f54906123ee565b6124bb83612437565b90612417565b808310612589576124d56125119184612445565b9161250c6125066124fd601e546124f76124ee86612437565b60215490612452565b906123ee565b6124bb84612437565b91612437565b61245f565b6509184e72a0009081810291818305149015171561240157670de0b6b3a76400009182810292818405149015171561240157801561242157600160ff1b91808314600019831416612401570590600082121561258257811461240157600003905b80821161257d575090565b905090565b5090612572565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612639579160409161261561262d959483602086516125d18161229e565b82815201526125ef866125e261375b565b5050505050939050612806565b815190936001600160801b039160209161260b918416906123ee565b9201511690612417565b81811061263157035b958152601860205220546128d8565b9091565b50508061261e565b50509192505080918190565b5190811515820361090957565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b0316828480612685602482016121f0565b0381600080955af180156127ae5781948291612772575b509284156127155783156126db57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061272860135460125490612452565b42116127385750601154906126d5565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116127a7575b61278b818361230b565b8101031261038557602061279e85612645565b9401513861269c565b503d612781565b508251903d90823e3d90fd5b156127c157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6128118215156127ba565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156128cc578092612894575b50509061288c61288361289193620186a060225404906123ee565b601e54906123ee565b612417565b90565b9091506020823d82116128c4575b816128af6020938361230b565b8101031261038557505161288c612883612868565b3d91506128a2565b604051903d90823e3d90fd5b6128e38215156127ba565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561298357600091612950575b509061288c61293c92602254906123ee565b620186a061294c601e54836123ee565b0491565b906020823d821161297b575b816129696020938361230b565b8101031261038557505161288c61292a565b3d915061295c565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129b2916128d8565b918352601760205260408320548015612abb578115612abb57818110612abb5782811015612ab1576014546129fb918391610bab9161249e906001600160801b038316906123ee565b90620186a09283830292808404851490151715612a9d57612a2092916124bb91612445565b91601b5491601c5493612a33858561245f565b80820291848212600160ff1b821416612a9d578183051490151715612a895705818482019485129112908015821691151617612a75575080821261257d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bc1575b15612b1c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122885760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612af3565b15612bf157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c3657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361090957565b519060ff8216820361090957565b60058110156121a05780612ca75750565b60018103612cef5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d3c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d4557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e0e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e015781516001600160a01b03811615612dfb579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ed557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f1257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561332a57620186a09260209084612f738354866123ee565b0494612fa9612f856011549787612452565b600d546001600160a01b0398919060ff90612fa1908b16613365565b16918761351c565b80156132db57612fb9908561359f565b612fc48354866123ee565b0494612fce6133d3565b9583612fda8288612452565b916040968751612fe98161229e565b6000808252970187905289516001600160801b039490851661326c5799613049908b906130449087908161302381865b1682845116613742565b16815281613039818a8401961682875116613742565b168094525116613c87565b613c3d565b601654801590811561325d575b501561321f5784899116808852601784528888206130758c8254612452565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806131fe575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156131f45785976131c5575b506130f66133f9565b818101916103e88484511610613191575090613129839283613120613130968c1682845116613656565b16809152613ca9565b5116613c62565b6009541690600e5490823b15610f81578392839286958893613168985198899586948593630208d92960e11b85523060048601613da6565b03925af191821561318757505061317e57509091565b61262d90612275565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116131ed575b6131dd818361230b565b81010312610f7d575195386130ed565b503d6131d3565b86513d87823e3d90fd5b83600a5416865260018252613217878720918254612452565b9055386130af565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508460145416111538613056565b998a859b8583018781511661328190836123ee565b8885511661328e91612417565b9d8e8186511661329d916123ee565b9151166132a991612417565b106132c4575b6130448661304993818f948161302391613019565b85806132d181949e612e1a565b9d935050506132af565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613360573d9061334682612348565b91613354604051938461230b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526133888161229e565b51916001600160a01b03165afa61339d613335565b90806133c8575b156133c2576020818051810103126109095760206128919101612c88565b50601290565b5060208151146133a4565b604051906133e08261229e565b6014546001600160801b038116835260801c6020830152565b604051906134068261229e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561351257601881526040862054801561350b57816134596133d3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156128cc5780976134d5575b505061260b6134b56128836134d0969798620186a060225404906123ee565b956134cb60018060801b039485875116906123ee565b6123ee565b111590565b9096508187813d8311613504575b6134ed818361230b565b81010312610385575094519461260b6134b5613496565b503d6134e3565b5050505050565b5060019450505050565b6125069061353c8561289196956135366124bb9685612806565b9061355c565b6001600160a01b03909116600090815260186020526040902054906123ee565b9182158015613597575b612589576001810180911161240157613585926124f761288c92612437565b6005810180911161240157600a900490565b508115613566565b6001600160a01b03163381036135b3575050565b600081815260209060038252604091828220338352815284838320541061361c57838252600381528282203383528152828220546001016135f5575050505050565b61361093825260038152828220903383525220918254612445565b9055388080808061350b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161240157565b919091600060206040516136828161229e565b82815201526020810180516001600160801b039081166136c6576136bf81865b816136b2818a1682895116613656565b1686521682845116613656565b1690529190565b6136e06136d682855116876123ee565b8284511690612417565b94806136fc6136f284865116896123ee565b8487511690612417565b1061370c575b816136bf916136a2565b948161371a6136bf92612e1a565b96915050613702565b60405190613730826122b9565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161240157565b613763613723565b50600060206040516137748161229e565b8281520152600060206040516137898161229e565b828152015260405161379a816122b9565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906137cc6133d3565b916137d56133f9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561298357600090613c09575b885161384092506001600160801b031690612452565b9485613bd45760005b60208501518190613863906001600160401b031642612445565b958615613ba9575050426001600160401b031660208b8101919091528901516001600160801b031615613b5f57508751895160209161391291670de0b6b3a7640000916138c89189916134cb916001600160401b0316906001600160801b03166123ee565b8b5191900498906001600160801b03906138e790828c16908316613742565b168b5261288c620186a06138fd601a548c6123ee565b858e01516001600160801b03169190046123ee565b60408b0180519197916001600160801b03808a1692916139359084908316613742565b169052898301805190916001600160801b039161395491908316613742565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561298357600090613b2b575b88516139b192506001600160801b031690612452565b80613af557506000925b602b548481811015613a55576139d19082612445565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561240157613a37916139ff91612417565b9161288c613a24613a1e602f54936134cb60018060401b0397806123ee565b83612452565b8c519092906001600160401b03166123ee565b16808952602e546001600160401b0316908111613a515750565b8852565b9050602c54808211613a6657505050565b613a6f91612445565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156124015761288c613ab8613a1e613aaa613ac895602d5490612417565b936134cb602f5495806123ee565b8b516001600160401b03166123ee565b602e5460401c6001600160401b0316808211613aed575b506001600160401b03168852565b905038613adf565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561240157613b2591612417565b926139bb565b506020813d602011613b57575b81613b456020938361230b565b81010312610909576139b1905161399b565b3d9150613b38565b8951603054999a91999498509296509450506001600160401b03918216925016819003613b9d575b509392613b926133f9565b926000926000929190565b81526001925038613b87565b98509950505095505050505091613bbe6133d3565b91613bc76133f9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156124015786613c0491612417565b613849565b506020813d602011613c35575b81613c236020938361230b565b8101031261090957613840905161382a565b3d9150613c16565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b613d7a602080613d66613cdc61375b565b9396959390929015613d7c5750505060018060401b036030541660008060008051602061407983398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091610742908416613c87565b613d7283825116613ca9565b015116613c62565b565b83516040519384526001600160401b031692600080516020614079833981519152908990a4613d11565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b60405190613ddd8261229e565b60038252623f3f3f60e81b6020830152565b908151811015613e00570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124015760010190565b805160408110613e9f57508051810190602081818401930312610909576020810151906001600160401b038211610909570181603f82011215610909576020810151613e7281612348565b92613e80604051948561230b565b818452604082840101116109095761289191604060208501910161209d565b602092908303613f8d576000805b60ff81168581109081613f6e575b5015613ecf57613eca90613e16565b613ead565b9260ff80941692613edf84612348565b93613eed604051958661230b565b808552613efc601f1991612348565b013687860137825b85811687811080613f51575b15613f4657613f419190613f3b6001600160f81b0319613f308388613def565b5116871a9188613def565b53613e16565b613f04565b505094505050905090565b506001600160f81b0319613f658286613def565b51161515613f10565b6001600160f81b03199150613f839086613def565b5116151538613ebb565b915050612891613dd056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207c79cc4e572498c1a2ddb00aaaac7fb8ab838bba0a64908d1a7a60a07581900564736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295561405f928362000207843960805183612b6e015260a05183612c39015260c05183612b38015260e05183612bbd01525182612be301525181612b9a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b40d81eabd36dc9676daea5d696f5967b4eb7a176aaafa6c71a020e3e508ea6364736f6c63430008120033", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b40d81eabd36dc9676daea5d696f5967b4eb7a176aaafa6c71a020e3e508ea6364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCollateral.json b/src/artifacts/tapioca-bar/SGLCollateral.json index b5c3b5c5..27e389ca 100644 --- a/src/artifacts/tapioca-bar/SGLCollateral.json +++ b/src/artifacts/tapioca-bar/SGLCollateral.json @@ -1208,19 +1208,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1927,8 +1914,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a55613a6f928362000207843960805183612b25015260a05183612bef015260c05183612aef015260e05183612b7401525182612b9a01525181612b510152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120915750806302ce728f1461206857806306fdde0314611fb1578063078dfbe714611ec4578063095ea7b314611e9d5780630996efb7146119e75780630c4e84f0146118cf57806318160ddd146118ae5780631c9e379b146118755780631da8bf10146117b357806323b872dd1461162c578063313ce5671461159a578063331960ff1461157c57806334d441d01461155e5780633644e5151461154357806337b6b7b91461152557806338d52e0f146114fc5780633ba0b9a9146114de5780633f741adb146114b957806340626d8b1461149b57806344de240a1461147d578063473e3ce71461145f57806348e4163e146114265780634d7f2a34146114085780634e71e0c81461136c578063529898f21461134e57806352f353eb1461132557806355140232146112fc57806355c2ab94146112d157806357935462146112b35780635dfe04e8146112525780636c3d8b8f1461122957806370a08231146111f057806372778547146111b857806374645ff31461118d5780637dc0d1d0146111645780637ecebe001461112b5780637fa0b84e146110f9578063821226e8146110db5780638285ef40146110a85780638c5d0ed31461108a5780638da5cb5b14611061578063910dd7c814610e6c578063959916dc14610e4f57806395d89b4114610d9557806399a9702814610d655780639c5d719214610d475780639e15e89f14610d0c578063a9059cbb14610c29578063b0e21e8a14610c0b578063b27c0e7414610bd1578063bb4cfe3b14610bb3578063c23ea21f14610b8a578063cce19f81146109b4578063ce8849ed1461098b578063d505accf146107fc578063d8dfeb45146107d3578063dd62ed3e14610784578063de4065771461075b578063e0996cb61461073d578063e30c397814610714578063e9a49252146103d9578063ea64dd56146103bb578063eec0f42e1461039d578063f42760b71461037f578063f8ba4cff14610363578063f9557ccb1461032c5763ffe04c661461030c57600080fd5b346103295780600319360112610329576020602b54604051908152f35b80fd5b503461032957806003193601126103295760255460405190819061035f90608081901c906001600160801b031683612396565b0390f35b503461032957806003193601126103295761037c613692565b80f35b50346103295780600319360112610329576020602c54604051908152f35b50346103295780600319360112610329576020600c54604051908152f35b50346103295780600319360112610329576020601f54604051908152f35b50346103295760a0366003190112610329576103f36120d9565b6103fb6120ef565b9061040461215c565b916064359160843593600260005260206007815261042a60ff6040600020541615612eea565b6001600160a01b039384169461044230871415612f27565b8615610696575b6104538785612f72565b8615610615575b5084875260188152604087206104718782546124a4565b905560155461048087826124a4565b601555600c54908884156105a2575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa8015610597578990610563575b6104cc9250612497565b861161052f575b848752602781526040872090602954885252604086206104f48682546124a4565b90551561052a575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610502565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610590575b6105798183612373565b8101031261058b576104cc91516104c2565b600080fd5b503d61056f565b6040513d8b823e3d90fd5b9190508560095416803b15610611578883916105d89383604051809681958294630208d92960e11b84528d309060048601613754565b03925af18015610606576105ee575b50506104d3565b6105f7906122dd565b6106025786386105e7565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561068b57879161065e575b50943861045a565b90508581813d8311610684575b6106758183612373565b8101031261058b575138610656565b503d61066b565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107095788916106dc575b5095610449565b90508181813d8311610702575b6106f38183612373565b8101031261058b5751386106d5565b503d6106e9565b6040513d8a823e3d90fd5b50346103295780600319360112610329576006546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601d54604051908152f35b50346103295780600319360112610329576009546040516001600160a01b039091168152602090f35b50346103295760403660031901126103295761079e6120d9565b60406107a86120ef565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610329578060031936011261032957600b546040516001600160a01b039091168152602090f35b50346103295761080b3661216b565b9183919395949542116109465760018060a01b03928388169485600052600460205260406000209283546000198114610930576108dc956108d49560018301905560405190602082019260008051602061397a8339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b5190206108a3612aec565b9060405190602082019261190160f01b845260228301526042820152604281526108cc81612358565b519020612dc0565b919091612cc1565b16036108eb5761037c92612e93565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103295780600319360112610329576008546040516001600160a01b039091168152602090f35b5034610329576109c3366121ba565b90929160038352602091600783526109e260ff60408620541615612eea565b6109ea61274f565b50506109f4613692565b6109fe8183612f72565b6001600160a01b0385811695909190610a1930881415612f27565b828416928387526018865260408720610a33848254612497565b9055610a4183601554612497565b6015556009541690600c5490823b15610b8657610a7b92889283869360405196879586948593630208d92960e11b85523060048601613754565b03925af18015610b7b57610b64575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610afc9899a4818652602785526040862060295490818852865260408720548211600014610b3d57505084526027835260408420602954855283528360408120555b60115490613076565b15610b05575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260278552604086209086528452610b5d60408620918254612497565b9055610af3565b610afc9495610b7383926122dd565b959450610a8a565b6040513d88823e3d90fd5b8780fd5b50346103295780600319360112610329576026546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601e54604051908152f35b503461032957806003193601126103295760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103295780600319360112610329576020601a54604051908152f35b503461032957604036600319011261032957610c436120d9565b60243580928115801590610cfa575b610c8a575b50506040519182526001600160a01b03169033906000805160206139da83398151915290602090a3602060405160018152f35b33815260016020526040812054610ca383821015612c15565b6001600160a01b0384169033829003610cbe575b5050610c57565b604093610cd591610cd0841515612c5a565b612497565b338352600160205283832055815220610cef8382546124a4565b905581388080610cb7565b50336001600160a01b03841614610c52565b5034610329576040366003190112610329576060610d34610d2b6120d9565b602435906125e3565b9060405192835260208301526040820152f35b50346103295780600319360112610329576020602d54604051908152f35b5034610329576040366003190112610329576020610d8d610d846120d9565b602435906129ba565b604051908152f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd281612306565b51915afa610dde61377e565b915015610e3e57610df161035f91613805565b610e2a6023604051809362746d2d60e81b6020830152610e1a8151809260208686019101612105565b8101036003810184520182612373565b604051918291602083526020830190612128565b5061035f610e4a6137ae565b610df1565b503461032957806003193601126103295760208054604051908152f35b5034610329576040366003190112610329576004356001600160401b03811161105d573660238201121561105d57806004013582610ea9826123b0565b92610eb76040519485612373565b82845260208401923660248284010111610611578060246020930185378401015260243561ffff811681036110595761010091828480518101031261105557610eff90612742565b610f0b60408501612c9f565b91610f1860608601612c9f565b9460808101519460a082015192610f3160c08401612cb3565b9160e0840151930151938042116109465785156110405760008051602061397a833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461102c579161ffff610fe9989694926108d498969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fda8161233c565b602081519101206108a3612aec565b6001600160a01b038381169116036108eb57156110165761037c926001600160a01b039081169116612e93565b61037c926001600160a01b039081169116612e45565b634e487b7160e01b8d52601160045260248dfd5b6000805160206139ba83398151915291610f59565b8480fd5b8380fd5b5080fd5b50346103295780600319360112610329576005546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601b54604051908152f35b503461032957806003193601126103295760145460405190819061035f90608081901c906001600160801b031683612396565b50346103295780600319360112610329576020602f54604051908152f35b5034610329576040366003190112610329576111206111166120d9565b6024359033612e45565b602060405160018152f35b5034610329576020366003190112610329576020906040906001600160a01b036111536120d9565b168152600483522054604051908152f35b5034610329578060031936011261032957600f546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761035f604051610e2a816111b181612258565b0382612373565b50346103295760203660031901126103295760043590600982101561032957602060ff6111e4846121ef565b54166040519015158152f35b5034610329576020366003190112610329576020906040906001600160a01b036112186120d9565b168152600183522054604051908152f35b5034610329578060031936011261032957600a546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761126b613178565b5060806112766131b0565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103295780600319360112610329576020601c54604051908152f35b5034610329578060031936011261032957602e546040805191901c6001600160401b03168152602090f35b5034610329578060031936011261032957602e546040516001600160401b039091168152602090f35b50346103295780600319360112610329576030546040516001600160401b039091168152602090f35b50346103295780600319360112610329576020602154604051908152f35b50346103295780600319360112610329576006546001600160a01b0390818116338190036113c4578060055493841660008051602061399a8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103295780600319360112610329576020602a54604051908152f35b5034610329576020366003190112610329576020906040906001600160a01b0361144e6120d9565b168152601783522054604051908152f35b50346103295780600319360112610329576020601554604051908152f35b50346103295780600319360112610329576020600e54604051908152f35b50346103295780600319360112610329576020601654604051908152f35b5034610329576060366003190112610329576020610d8d6044356024356004356124ca565b50346103295780600319360112610329576020601154604051908152f35b5034610329578060031936011261032957600d546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601254604051908152f35b50346103295780600319360112610329576020610d8d612aec565b50346103295780600319360112610329576020601954604051908152f35b50346103295780600319360112610329576020601354604051908152f35b5034610329578060031936011261032957808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526115d781612306565b51915afa906115e461377e565b9180611621575b1561161657602082805181010312610329575061160b6020809201612cb3565b60ff60405191168152f35b50506020601261160b565b5060208251146115eb565b50346103295761163b366121ba565b919282611677575b506040519182526001600160a01b039081169216906000805160206139da83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116a082861015612c15565b8616938484036116b5575b5050505050611643565b83865260028352604080872033885284528620546001810161171f575b50926001602096936116fd8794604097610cd06000805160206139da8339815191529c9a1515612c5a565b92855252838320558152206117138582546124a4565b905591388085816116ab565b9091811061177357926001602096936116fd8a6000805160206139da8339815191529a98956117508260409a612497565b86895260028552898920338a5285528989205594975094979950509396506116d2565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b5034610329576117c23661216b565b90839594954211610946576001600160a01b03878116808a52600460205260408a208054919692959290600019831461186157826118529694928d9260016108d498960190556040519160208301936000805160206139ba833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b16036108eb5761037c92612e45565b634e487b7160e01b8c52601160045260248cfd5b5034610329576020366003190112610329576020906040906001600160a01b0361189d6120d9565b168152601883522054604051908152f35b5034610329578060031936011261032957602060255460801c604051908152f35b503461032957604036600319011261032957600435600981101561105d576118f561214d565b6008549091906001600160a01b031633036119ab5760ff611915826121ef565b5416151591151591821461197157808260ff611933611961946121ef565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46121ef565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103295761018036600319011261032957602480356001600160a01b0381811691829003611059576001600160401b03604435818111611e995736602382011215611e99578060040135918211611e995736858383010111611e99576064359383851680950361060257611a62846005541633146123cb565b60043580611e59575b5080611e1b575b508482611cc1575b50505081611c81575b505060843580611c69575b5060a43580611c51575b5060c43580611c3a575b5060e43580611c16575b506101043580611bf2575b506101243580611bc1575b506101443580611b4e575b50610164359081611adc578280f35b601e548210611aef5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b5d620186a0821115612416565b601f548111611b6f57601e5538611acd565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611ac2565b611c00620186a08210612416565b611c0d601b548211612416565b601c5538611ab7565b611c24620186a08210612416565b611c31601c548210612416565b601b5538611aac565b611c48620186a08210612416565b601d5538611aa2565b611c60620186a0821115612416565b601a5538611a98565b611c78620186a0821115612416565b60195538611a8e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611a83565b8291611cce60105461221e565b601f8111611dbc575b508790601f8411600114611d3c578893611d2f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084611a7a565b0101359050843880611cec565b60108952601f1984169450600080516020613a1a83398151915292509087908960205b878210611d9d5750508460019610611d81575b50505050811b01601055611d03565b60001960f88660031b161c199201013516905538808681611d72565b8285019093013585556001949094019389929182019190810190611d5f565b601089529092509050600080516020613a1a833981519152601f840160051c810160208510611e14575b91849391601f8994920160051c01905b818110611e035750611cd7565b898155859450889350600101611df6565b5080611de6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611a72565b611e68620186a0821115612416565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a360205538611a6b565b8580fd5b503461032957604036600319011261032957611120611eba6120d9565b6024359033612e93565b503461032957606036600319011261032957611ede6120d9565b611ee661214d565b611eee61215c565b9060018060a01b03928391611f08836005541633146123cb565b15611f9a571690811590811591611f92575b5015611f55578060055492831660008051602061399a8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f1a565b9150501660018060a01b0319600654161760065580f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611fee81612306565b51915afa611ffa61377e565b9150156120575761200d61035f91613805565b610e2a6034604051809373546170696f63612053696e67756c61726974792d60601b60208301526120478151809260208686019101612105565b8101036014810184520182612373565b5061035f6120636137ae565b61200d565b5034610329578060031936011261032957604061208361274f565b825191151582526020820152f35b90503461105d57604036600319011261105d5760406020926120b16120d9565b6120b96120ef565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361058b57565b602435906001600160a01b038216820361058b57565b60005b8381106121185750506000910152565b8181015183820152602001612108565b9060209161214181518092818552858086019101612105565b601f01601f1916010190565b60243590811515820361058b57565b60443590811515820361058b57565b60e090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b5790604435906064359060843560ff8116810361058b579060a4359060c43590565b606090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b579060443590565b6009811015612208576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561224e575b602083101461223857565b634e487b7160e01b600052602260045260246000fd5b91607f169161222d565b601054600092916122688261221e565b9081815260019283811690816000146122c2575060011461228857505050565b9092935060106000526020928360002092846000945b8386106122ae5750505050010190565b80548587018301529401938590820161229e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116122f057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176122f057604052565b606081019081106001600160401b038211176122f057604052565b61010081019081106001600160401b038211176122f057604052565b608081019081106001600160401b038211176122f057604052565b601f909101601f19168101906001600160401b038211908210176122f057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116122f057601f01601f191660200190565b156123d257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561241d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561093057565b8115612473570490565b634e487b7160e01b600052601260045260246000fd5b604d811161093057600a0a90565b9190820391821161093057565b9190820180921161093057565b8181039291600013801582851316918412161761093057565b60145491929161251391612504916124fa916124f0906001600160801b03831690612456565b9060801c90612469565b93601f5490612456565b61250d83612489565b90612469565b8083106125db576125276125639184612497565b9161255e61255861254f601e5461254961254086612489565b602154906124a4565b90612456565b61250d84612489565b91612489565b6124b1565b6509184e72a0009081810291818305149015171561093057670de0b6b3a76400009182810292818405149015171561093057801561247357600160ff1b9180831460001983141661093057059060008212156125d457811461093057600003905b8082116125cf575090565b905090565b50906125c4565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115612735578783855161261681612306565b82815201526126236131b0565b50505050509190506126368615156128b7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561272b5789916126f8575b50916126d86126ec97989994926126b3886126ae6126a5601898620186a06022540490612456565b601e5490612456565b612469565b815190936001600160801b039186916126ce91841690612456565b9201511690612469565b8181106126f057035b978352522054612903565b9091565b5050826126e1565b90508381813d8311612724575b61270f8183612373565b8101031261272057516126d861267d565b8880fd5b503d612705565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361058b57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278260248201612258565b0381600080955af180156128ab578194829161286f575b509284156128125783156127d857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612825601354601254906124a4565b42116128355750601154906127d2565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128a4575b6128888183612373565b8101031261032957602061289b85612742565b94015138612799565b503d61287e565b508251903d90823e3d90fd5b156128be57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61290e8215156128b7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129ae5760009161297b575b50906126ae6129679260225490612456565b620186a0612977601e5483612456565b0491565b906020823d82116129a6575b8161299460209383612373565b810103126103295750516126ae612955565b3d9150612987565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129dd91612903565b918352601760205260408320548015612ae6578115612ae657818110612ae65782811015612adc57601454612a26918391610cd0916124f0906001600160801b03831690612456565b90620186a09283830292808404851490151715612ac857612a4b929161250d91612497565b91601b5491601c5493612a5e85856124b1565b80820291848212600160ff1b821416612ac8578183051490151715612ab45705818482019485129112908015821691151617612aa057508082126125cf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bec575b15612b47577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b1e565b15612c1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361058b57565b519060ff8216820361058b57565b60058110156122085780612cd25750565b60018103612d1a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e395791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e2c5781516001600160a01b03811615612e26579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ef157565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f2e57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f86575050565b6000818152602090600382526040918282203383528152848383205410612ff05783825260038152828220338352815282822054600101612fc9575b5050505050565b612fe493825260038152828220903383525220918254612497565b90553880808080612fc2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061303782612306565b6014546001600160801b038116835260801c6020830152565b6040519061305d82612306565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561316e576018815260408620548015612fc257816130b061302a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316257809761312c575b50506126ce61310c6126a5613127969798620186a06022540490612456565b9561312260018060801b03948587511690612456565b612456565b111590565b9096508187813d831161315b575b6131448183612373565b8101031261032957509451946126ce61310c6130ed565b503d61313a565b604051903d90823e3d90fd5b5060019450505050565b6040519061318582612321565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161093057565b6131b8613178565b50600060206040516131c981612306565b8281520152600060206040516131de81612306565b82815201526040516131ef81612321565b6024546001600160401b038082168352604082811c909116602084015260809190911c9082015290819061322161302a565b9161322a613050565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa80156129ae5760009061365e575b885161329592506001600160801b0316906124a4565b94856136295760005b602085015181906132b8906001600160401b031642612497565b9586156135fe575050426001600160401b031660208b8101919091528901516001600160801b0316156135b457508751895160209161336791670de0b6b3a76400009161331d918991613122916001600160401b0316906001600160801b0316612456565b8b5191900498906001600160801b039061333c90828c16908316613197565b168b526126ae620186a0613352601a548c612456565b858e01516001600160801b0316919004612456565b60408b0180519197916001600160801b03808a16929161338a9084908316613197565b169052898301805190916001600160801b03916133a991908316613197565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129ae57600090613580575b885161340692506001600160801b0316906124a4565b8061354a57506000925b602b5484818110156134aa576134269082612497565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109305761348c9161345491612469565b916126ae613479613473602f549361312260018060401b039780612456565b836124a4565b8c519092906001600160401b0316612456565b16808952602e546001600160401b03169081116134a65750565b8852565b9050602c548082116134bb57505050565b6134c491612497565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610930576126ae61350d6134736134ff61351d95602d5490612469565b93613122602f549580612456565b8b516001600160401b0316612456565b602e5460401c6001600160401b0316808211613542575b506001600160401b03168852565b905038613534565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109305761357a91612469565b92613410565b506020813d6020116135ac575b8161359a60209383612373565b8101031261058b5761340690516133f0565b3d915061358d565b8951603054999a91999498509296509450506001600160401b039182169250168190036135f2575b5093926135e7613050565b926000926000929190565b815260019250386135dc565b9850995050509550505050509161361361302a565b9161361c613050565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029180830490911490151715610930578661365991612469565b61329e565b506020813d60201161368a575b8161367860209383612373565b8101031261058b57613295905161327f565b3d915061366b565b6020604061369e6131b0565b939795939092901561372f57505050600180851b03603054166000806000805160206139fa833981519152868851838152a45b600180851b03815116838201519160018060801b0319958691015160801b1691600160401b600160801b039060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b6000805160206139fa833981519152866001808a1b03865116948951908152a46136d1565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b3d156137a9573d9061378f826123b0565b9161379d6040519384612373565b82523d6000602084013e565b606090565b604051906137bb82612306565b60038252623f3f3f60e81b6020830152565b9081518110156137de570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109305760010190565b8051604081106138805750805181019060208181840193031261058b576020810151906001600160401b03821161058b570181603f8201121561058b576020810151613850816123b0565b9261385e6040519485612373565b8184526040828401011161058b5761387d916040602085019101612105565b90565b60209290830361396e576000805b60ff8116858110908161394f575b50156138b0576138ab906137f4565b61388e565b9260ff809416926138c0846123b0565b936138ce6040519586612373565b8085526138dd601f19916123b0565b013687860137825b85811687811080613932575b1561392757613922919061391c6001600160f81b031961391183886137cd565b5116871a91886137cd565b536137f4565b6138e5565b505094505050905090565b506001600160f81b031961394682866137cd565b511615156138f1565b6001600160f81b0319915061396490866137cd565b511615153861389c565b91505061387d6137ae56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207acd4251851f5cf1eb79a9ed055756a40c008a6ab5a53b9d246ac85d9f3452fd64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120915750806302ce728f1461206857806306fdde0314611fb1578063078dfbe714611ec4578063095ea7b314611e9d5780630996efb7146119e75780630c4e84f0146118cf57806318160ddd146118ae5780631c9e379b146118755780631da8bf10146117b357806323b872dd1461162c578063313ce5671461159a578063331960ff1461157c57806334d441d01461155e5780633644e5151461154357806337b6b7b91461152557806338d52e0f146114fc5780633ba0b9a9146114de5780633f741adb146114b957806340626d8b1461149b57806344de240a1461147d578063473e3ce71461145f57806348e4163e146114265780634d7f2a34146114085780634e71e0c81461136c578063529898f21461134e57806352f353eb1461132557806355140232146112fc57806355c2ab94146112d157806357935462146112b35780635dfe04e8146112525780636c3d8b8f1461122957806370a08231146111f057806372778547146111b857806374645ff31461118d5780637dc0d1d0146111645780637ecebe001461112b5780637fa0b84e146110f9578063821226e8146110db5780638285ef40146110a85780638c5d0ed31461108a5780638da5cb5b14611061578063910dd7c814610e6c578063959916dc14610e4f57806395d89b4114610d9557806399a9702814610d655780639c5d719214610d475780639e15e89f14610d0c578063a9059cbb14610c29578063b0e21e8a14610c0b578063b27c0e7414610bd1578063bb4cfe3b14610bb3578063c23ea21f14610b8a578063cce19f81146109b4578063ce8849ed1461098b578063d505accf146107fc578063d8dfeb45146107d3578063dd62ed3e14610784578063de4065771461075b578063e0996cb61461073d578063e30c397814610714578063e9a49252146103d9578063ea64dd56146103bb578063eec0f42e1461039d578063f42760b71461037f578063f8ba4cff14610363578063f9557ccb1461032c5763ffe04c661461030c57600080fd5b346103295780600319360112610329576020602b54604051908152f35b80fd5b503461032957806003193601126103295760255460405190819061035f90608081901c906001600160801b031683612396565b0390f35b503461032957806003193601126103295761037c613692565b80f35b50346103295780600319360112610329576020602c54604051908152f35b50346103295780600319360112610329576020600c54604051908152f35b50346103295780600319360112610329576020601f54604051908152f35b50346103295760a0366003190112610329576103f36120d9565b6103fb6120ef565b9061040461215c565b916064359160843593600260005260206007815261042a60ff6040600020541615612eea565b6001600160a01b039384169461044230871415612f27565b8615610696575b6104538785612f72565b8615610615575b5084875260188152604087206104718782546124a4565b905560155461048087826124a4565b601555600c54908884156105a2575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa8015610597578990610563575b6104cc9250612497565b861161052f575b848752602781526040872090602954885252604086206104f48682546124a4565b90551561052a575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610502565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610590575b6105798183612373565b8101031261058b576104cc91516104c2565b600080fd5b503d61056f565b6040513d8b823e3d90fd5b9190508560095416803b15610611578883916105d89383604051809681958294630208d92960e11b84528d309060048601613754565b03925af18015610606576105ee575b50506104d3565b6105f7906122dd565b6106025786386105e7565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561068b57879161065e575b50943861045a565b90508581813d8311610684575b6106758183612373565b8101031261058b575138610656565b503d61066b565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107095788916106dc575b5095610449565b90508181813d8311610702575b6106f38183612373565b8101031261058b5751386106d5565b503d6106e9565b6040513d8a823e3d90fd5b50346103295780600319360112610329576006546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601d54604051908152f35b50346103295780600319360112610329576009546040516001600160a01b039091168152602090f35b50346103295760403660031901126103295761079e6120d9565b60406107a86120ef565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610329578060031936011261032957600b546040516001600160a01b039091168152602090f35b50346103295761080b3661216b565b9183919395949542116109465760018060a01b03928388169485600052600460205260406000209283546000198114610930576108dc956108d49560018301905560405190602082019260008051602061397a8339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b5190206108a3612aec565b9060405190602082019261190160f01b845260228301526042820152604281526108cc81612358565b519020612dc0565b919091612cc1565b16036108eb5761037c92612e93565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103295780600319360112610329576008546040516001600160a01b039091168152602090f35b5034610329576109c3366121ba565b90929160038352602091600783526109e260ff60408620541615612eea565b6109ea61274f565b50506109f4613692565b6109fe8183612f72565b6001600160a01b0385811695909190610a1930881415612f27565b828416928387526018865260408720610a33848254612497565b9055610a4183601554612497565b6015556009541690600c5490823b15610b8657610a7b92889283869360405196879586948593630208d92960e11b85523060048601613754565b03925af18015610b7b57610b64575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610afc9899a4818652602785526040862060295490818852865260408720548211600014610b3d57505084526027835260408420602954855283528360408120555b60115490613076565b15610b05575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260278552604086209086528452610b5d60408620918254612497565b9055610af3565b610afc9495610b7383926122dd565b959450610a8a565b6040513d88823e3d90fd5b8780fd5b50346103295780600319360112610329576026546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601e54604051908152f35b503461032957806003193601126103295760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103295780600319360112610329576020601a54604051908152f35b503461032957604036600319011261032957610c436120d9565b60243580928115801590610cfa575b610c8a575b50506040519182526001600160a01b03169033906000805160206139da83398151915290602090a3602060405160018152f35b33815260016020526040812054610ca383821015612c15565b6001600160a01b0384169033829003610cbe575b5050610c57565b604093610cd591610cd0841515612c5a565b612497565b338352600160205283832055815220610cef8382546124a4565b905581388080610cb7565b50336001600160a01b03841614610c52565b5034610329576040366003190112610329576060610d34610d2b6120d9565b602435906125e3565b9060405192835260208301526040820152f35b50346103295780600319360112610329576020602d54604051908152f35b5034610329576040366003190112610329576020610d8d610d846120d9565b602435906129ba565b604051908152f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd281612306565b51915afa610dde61377e565b915015610e3e57610df161035f91613805565b610e2a6023604051809362746d2d60e81b6020830152610e1a8151809260208686019101612105565b8101036003810184520182612373565b604051918291602083526020830190612128565b5061035f610e4a6137ae565b610df1565b503461032957806003193601126103295760208054604051908152f35b5034610329576040366003190112610329576004356001600160401b03811161105d573660238201121561105d57806004013582610ea9826123b0565b92610eb76040519485612373565b82845260208401923660248284010111610611578060246020930185378401015260243561ffff811681036110595761010091828480518101031261105557610eff90612742565b610f0b60408501612c9f565b91610f1860608601612c9f565b9460808101519460a082015192610f3160c08401612cb3565b9160e0840151930151938042116109465785156110405760008051602061397a833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461102c579161ffff610fe9989694926108d498969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fda8161233c565b602081519101206108a3612aec565b6001600160a01b038381169116036108eb57156110165761037c926001600160a01b039081169116612e93565b61037c926001600160a01b039081169116612e45565b634e487b7160e01b8d52601160045260248dfd5b6000805160206139ba83398151915291610f59565b8480fd5b8380fd5b5080fd5b50346103295780600319360112610329576005546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601b54604051908152f35b503461032957806003193601126103295760145460405190819061035f90608081901c906001600160801b031683612396565b50346103295780600319360112610329576020602f54604051908152f35b5034610329576040366003190112610329576111206111166120d9565b6024359033612e45565b602060405160018152f35b5034610329576020366003190112610329576020906040906001600160a01b036111536120d9565b168152600483522054604051908152f35b5034610329578060031936011261032957600f546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761035f604051610e2a816111b181612258565b0382612373565b50346103295760203660031901126103295760043590600982101561032957602060ff6111e4846121ef565b54166040519015158152f35b5034610329576020366003190112610329576020906040906001600160a01b036112186120d9565b168152600183522054604051908152f35b5034610329578060031936011261032957600a546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761126b613178565b5060806112766131b0565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103295780600319360112610329576020601c54604051908152f35b5034610329578060031936011261032957602e546040805191901c6001600160401b03168152602090f35b5034610329578060031936011261032957602e546040516001600160401b039091168152602090f35b50346103295780600319360112610329576030546040516001600160401b039091168152602090f35b50346103295780600319360112610329576020602154604051908152f35b50346103295780600319360112610329576006546001600160a01b0390818116338190036113c4578060055493841660008051602061399a8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103295780600319360112610329576020602a54604051908152f35b5034610329576020366003190112610329576020906040906001600160a01b0361144e6120d9565b168152601783522054604051908152f35b50346103295780600319360112610329576020601554604051908152f35b50346103295780600319360112610329576020600e54604051908152f35b50346103295780600319360112610329576020601654604051908152f35b5034610329576060366003190112610329576020610d8d6044356024356004356124ca565b50346103295780600319360112610329576020601154604051908152f35b5034610329578060031936011261032957600d546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601254604051908152f35b50346103295780600319360112610329576020610d8d612aec565b50346103295780600319360112610329576020601954604051908152f35b50346103295780600319360112610329576020601354604051908152f35b5034610329578060031936011261032957808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526115d781612306565b51915afa906115e461377e565b9180611621575b1561161657602082805181010312610329575061160b6020809201612cb3565b60ff60405191168152f35b50506020601261160b565b5060208251146115eb565b50346103295761163b366121ba565b919282611677575b506040519182526001600160a01b039081169216906000805160206139da83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116a082861015612c15565b8616938484036116b5575b5050505050611643565b83865260028352604080872033885284528620546001810161171f575b50926001602096936116fd8794604097610cd06000805160206139da8339815191529c9a1515612c5a565b92855252838320558152206117138582546124a4565b905591388085816116ab565b9091811061177357926001602096936116fd8a6000805160206139da8339815191529a98956117508260409a612497565b86895260028552898920338a5285528989205594975094979950509396506116d2565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b5034610329576117c23661216b565b90839594954211610946576001600160a01b03878116808a52600460205260408a208054919692959290600019831461186157826118529694928d9260016108d498960190556040519160208301936000805160206139ba833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b16036108eb5761037c92612e45565b634e487b7160e01b8c52601160045260248cfd5b5034610329576020366003190112610329576020906040906001600160a01b0361189d6120d9565b168152601883522054604051908152f35b5034610329578060031936011261032957602060255460801c604051908152f35b503461032957604036600319011261032957600435600981101561105d576118f561214d565b6008549091906001600160a01b031633036119ab5760ff611915826121ef565b5416151591151591821461197157808260ff611933611961946121ef565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46121ef565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103295761018036600319011261032957602480356001600160a01b0381811691829003611059576001600160401b03604435818111611e995736602382011215611e99578060040135918211611e995736858383010111611e99576064359383851680950361060257611a62846005541633146123cb565b60043580611e59575b5080611e1b575b508482611cc1575b50505081611c81575b505060843580611c69575b5060a43580611c51575b5060c43580611c3a575b5060e43580611c16575b506101043580611bf2575b506101243580611bc1575b506101443580611b4e575b50610164359081611adc578280f35b601e548210611aef5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b5d620186a0821115612416565b601f548111611b6f57601e5538611acd565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611ac2565b611c00620186a08210612416565b611c0d601b548211612416565b601c5538611ab7565b611c24620186a08210612416565b611c31601c548210612416565b601b5538611aac565b611c48620186a08210612416565b601d5538611aa2565b611c60620186a0821115612416565b601a5538611a98565b611c78620186a0821115612416565b60195538611a8e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611a83565b8291611cce60105461221e565b601f8111611dbc575b508790601f8411600114611d3c578893611d2f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084611a7a565b0101359050843880611cec565b60108952601f1984169450600080516020613a1a83398151915292509087908960205b878210611d9d5750508460019610611d81575b50505050811b01601055611d03565b60001960f88660031b161c199201013516905538808681611d72565b8285019093013585556001949094019389929182019190810190611d5f565b601089529092509050600080516020613a1a833981519152601f840160051c810160208510611e14575b91849391601f8994920160051c01905b818110611e035750611cd7565b898155859450889350600101611df6565b5080611de6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611a72565b611e68620186a0821115612416565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a360205538611a6b565b8580fd5b503461032957604036600319011261032957611120611eba6120d9565b6024359033612e93565b503461032957606036600319011261032957611ede6120d9565b611ee661214d565b611eee61215c565b9060018060a01b03928391611f08836005541633146123cb565b15611f9a571690811590811591611f92575b5015611f55578060055492831660008051602061399a8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f1a565b9150501660018060a01b0319600654161760065580f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611fee81612306565b51915afa611ffa61377e565b9150156120575761200d61035f91613805565b610e2a6034604051809373546170696f63612053696e67756c61726974792d60601b60208301526120478151809260208686019101612105565b8101036014810184520182612373565b5061035f6120636137ae565b61200d565b5034610329578060031936011261032957604061208361274f565b825191151582526020820152f35b90503461105d57604036600319011261105d5760406020926120b16120d9565b6120b96120ef565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361058b57565b602435906001600160a01b038216820361058b57565b60005b8381106121185750506000910152565b8181015183820152602001612108565b9060209161214181518092818552858086019101612105565b601f01601f1916010190565b60243590811515820361058b57565b60443590811515820361058b57565b60e090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b5790604435906064359060843560ff8116810361058b579060a4359060c43590565b606090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b579060443590565b6009811015612208576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561224e575b602083101461223857565b634e487b7160e01b600052602260045260246000fd5b91607f169161222d565b601054600092916122688261221e565b9081815260019283811690816000146122c2575060011461228857505050565b9092935060106000526020928360002092846000945b8386106122ae5750505050010190565b80548587018301529401938590820161229e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116122f057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176122f057604052565b606081019081106001600160401b038211176122f057604052565b61010081019081106001600160401b038211176122f057604052565b608081019081106001600160401b038211176122f057604052565b601f909101601f19168101906001600160401b038211908210176122f057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116122f057601f01601f191660200190565b156123d257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561241d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561093057565b8115612473570490565b634e487b7160e01b600052601260045260246000fd5b604d811161093057600a0a90565b9190820391821161093057565b9190820180921161093057565b8181039291600013801582851316918412161761093057565b60145491929161251391612504916124fa916124f0906001600160801b03831690612456565b9060801c90612469565b93601f5490612456565b61250d83612489565b90612469565b8083106125db576125276125639184612497565b9161255e61255861254f601e5461254961254086612489565b602154906124a4565b90612456565b61250d84612489565b91612489565b6124b1565b6509184e72a0009081810291818305149015171561093057670de0b6b3a76400009182810292818405149015171561093057801561247357600160ff1b9180831460001983141661093057059060008212156125d457811461093057600003905b8082116125cf575090565b905090565b50906125c4565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115612735578783855161261681612306565b82815201526126236131b0565b50505050509190506126368615156128b7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561272b5789916126f8575b50916126d86126ec97989994926126b3886126ae6126a5601898620186a06022540490612456565b601e5490612456565b612469565b815190936001600160801b039186916126ce91841690612456565b9201511690612469565b8181106126f057035b978352522054612903565b9091565b5050826126e1565b90508381813d8311612724575b61270f8183612373565b8101031261272057516126d861267d565b8880fd5b503d612705565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361058b57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278260248201612258565b0381600080955af180156128ab578194829161286f575b509284156128125783156127d857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612825601354601254906124a4565b42116128355750601154906127d2565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128a4575b6128888183612373565b8101031261032957602061289b85612742565b94015138612799565b503d61287e565b508251903d90823e3d90fd5b156128be57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61290e8215156128b7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129ae5760009161297b575b50906126ae6129679260225490612456565b620186a0612977601e5483612456565b0491565b906020823d82116129a6575b8161299460209383612373565b810103126103295750516126ae612955565b3d9150612987565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129dd91612903565b918352601760205260408320548015612ae6578115612ae657818110612ae65782811015612adc57601454612a26918391610cd0916124f0906001600160801b03831690612456565b90620186a09283830292808404851490151715612ac857612a4b929161250d91612497565b91601b5491601c5493612a5e85856124b1565b80820291848212600160ff1b821416612ac8578183051490151715612ab45705818482019485129112908015821691151617612aa057508082126125cf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bec575b15612b47577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b1e565b15612c1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361058b57565b519060ff8216820361058b57565b60058110156122085780612cd25750565b60018103612d1a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e395791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e2c5781516001600160a01b03811615612e26579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ef157565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f2e57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f86575050565b6000818152602090600382526040918282203383528152848383205410612ff05783825260038152828220338352815282822054600101612fc9575b5050505050565b612fe493825260038152828220903383525220918254612497565b90553880808080612fc2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061303782612306565b6014546001600160801b038116835260801c6020830152565b6040519061305d82612306565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561316e576018815260408620548015612fc257816130b061302a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316257809761312c575b50506126ce61310c6126a5613127969798620186a06022540490612456565b9561312260018060801b03948587511690612456565b612456565b111590565b9096508187813d831161315b575b6131448183612373565b8101031261032957509451946126ce61310c6130ed565b503d61313a565b604051903d90823e3d90fd5b5060019450505050565b6040519061318582612321565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161093057565b6131b8613178565b50600060206040516131c981612306565b8281520152600060206040516131de81612306565b82815201526040516131ef81612321565b6024546001600160401b038082168352604082811c909116602084015260809190911c9082015290819061322161302a565b9161322a613050565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa80156129ae5760009061365e575b885161329592506001600160801b0316906124a4565b94856136295760005b602085015181906132b8906001600160401b031642612497565b9586156135fe575050426001600160401b031660208b8101919091528901516001600160801b0316156135b457508751895160209161336791670de0b6b3a76400009161331d918991613122916001600160401b0316906001600160801b0316612456565b8b5191900498906001600160801b039061333c90828c16908316613197565b168b526126ae620186a0613352601a548c612456565b858e01516001600160801b0316919004612456565b60408b0180519197916001600160801b03808a16929161338a9084908316613197565b169052898301805190916001600160801b03916133a991908316613197565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129ae57600090613580575b885161340692506001600160801b0316906124a4565b8061354a57506000925b602b5484818110156134aa576134269082612497565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109305761348c9161345491612469565b916126ae613479613473602f549361312260018060401b039780612456565b836124a4565b8c519092906001600160401b0316612456565b16808952602e546001600160401b03169081116134a65750565b8852565b9050602c548082116134bb57505050565b6134c491612497565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610930576126ae61350d6134736134ff61351d95602d5490612469565b93613122602f549580612456565b8b516001600160401b0316612456565b602e5460401c6001600160401b0316808211613542575b506001600160401b03168852565b905038613534565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109305761357a91612469565b92613410565b506020813d6020116135ac575b8161359a60209383612373565b8101031261058b5761340690516133f0565b3d915061358d565b8951603054999a91999498509296509450506001600160401b039182169250168190036135f2575b5093926135e7613050565b926000926000929190565b815260019250386135dc565b9850995050509550505050509161361361302a565b9161361c613050565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029180830490911490151715610930578661365991612469565b61329e565b506020813d60201161368a575b8161367860209383612373565b8101031261058b57613295905161327f565b3d915061366b565b6020604061369e6131b0565b939795939092901561372f57505050600180851b03603054166000806000805160206139fa833981519152868851838152a45b600180851b03815116838201519160018060801b0319958691015160801b1691600160401b600160801b039060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b6000805160206139fa833981519152866001808a1b03865116948951908152a46136d1565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b3d156137a9573d9061378f826123b0565b9161379d6040519384612373565b82523d6000602084013e565b606090565b604051906137bb82612306565b60038252623f3f3f60e81b6020830152565b9081518110156137de570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109305760010190565b8051604081106138805750805181019060208181840193031261058b576020810151906001600160401b03821161058b570181603f8201121561058b576020810151613850816123b0565b9261385e6040519485612373565b8184526040828401011161058b5761387d916040602085019101612105565b90565b60209290830361396e576000805b60ff8116858110908161394f575b50156138b0576138ab906137f4565b61388e565b9260ff809416926138c0846123b0565b936138ce6040519586612373565b8085526138dd601f19916123b0565b013687860137825b85811687811080613932575b1561392757613922919061391c6001600160f81b031961391183886137cd565b5116871a91886137cd565b536137f4565b6138e5565b505094505050905090565b506001600160f81b031961394682866137cd565b511615156138f1565b6001600160f81b0319915061396490866137cd565b511615153861389c565b91505061387d6137ae56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207acd4251851f5cf1eb79a9ed055756a40c008a6ab5a53b9d246ac85d9f3452fd64736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556139b1928362000207843960805183612b2d015260a05183612bf8015260c05183612af7015260e05183612b7c01525182612ba201525181612b590152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220399709a559a74e0d2cc10af123840ecb35677ef037e24e4c3e8197ffd952c1b664736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220399709a559a74e0d2cc10af123840ecb35677ef037e24e4c3e8197ffd952c1b664736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCommon.json b/src/artifacts/tapioca-bar/SGLCommon.json index 7cfe096a..9e35a10d 100644 --- a/src/artifacts/tapioca-bar/SGLCommon.json +++ b/src/artifacts/tapioca-bar/SGLCommon.json @@ -1175,19 +1175,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1871,8 +1858,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a5561329c92836200020784396080518361267b015260a05183612745015260c05183612645015260e051836126ca015251826126f0015251816126a70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122041682b6289b3679e79836ea2ef5ed4c32aa8b7e93fe97a199277b1ecafa7301164736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122041682b6289b3679e79836ea2ef5ed4c32aa8b7e93fe97a199277b1ecafa7301164736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122035f729f803dfd9f8c297404ba8278abed5b88654d5c6e33eb7d1b59b2a92e6a064736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122035f729f803dfd9f8c297404ba8278abed5b88654d5c6e33eb7d1b59b2a92e6a064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLendingCommon.json b/src/artifacts/tapioca-bar/SGLLendingCommon.json index 6cc6b026..76065d28 100644 --- a/src/artifacts/tapioca-bar/SGLLendingCommon.json +++ b/src/artifacts/tapioca-bar/SGLLendingCommon.json @@ -1175,19 +1175,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1871,8 +1858,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a5561329c92836200020784396080518361267b015260a05183612745015260c05183612645015260e051836126ca015251826126f0015251816126a70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220131e53f94d060c0a601ba129a2c2041dbbd6b9477d94d8be17a3da6784126e4c64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220131e53f94d060c0a601ba129a2c2041dbbd6b9477d94d8be17a3da6784126e4c64736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206d6a528da3a7043ae001a8842cb314676d1eae64537dc29365a43036887b57a364736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206d6a528da3a7043ae001a8842cb314676d1eae64537dc29365a43036887b57a364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLeverage.json b/src/artifacts/tapioca-bar/SGLLeverage.json index 24fdef1d..f2caa133 100644 --- a/src/artifacts/tapioca-bar/SGLLeverage.json +++ b/src/artifacts/tapioca-bar/SGLLeverage.json @@ -1219,19 +1219,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -2187,8 +2174,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556153f59283620002078439608051836138ad015260a05183613977015260c05183613877015260e051836138fc01525182613922015251816138d90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612dcf5750806302ce728f14612da657806306fdde0314612cef578063078dfbe714612c02578063095ea7b314612bdb5780630996efb71461273c5780630c4e84f01461262457806318160ddd146126035780631c9e379b146125ca5780631da8bf10146125275780631ee9c8f2146120e257806323b872dd14611f3f5780632a9399d914611b3d578063313ce56714611b09578063331960ff14611aeb57806334d441d014611acd5780633644e51514611ab257806337b6b7b914611a9457806338d52e0f14611a6b5780633ba0b9a914611a4d5780633f741adb14611a2857806340626d8b14611a0a57806344de240a146119ec578063473e3ce7146119ce57806348e4163e146119955780634d7f2a34146119775780634e71e0c8146118db578063529898f2146118bd57806352f353eb14611894578063551402321461186b57806355c2ab9414611840578063579354621461182257806358db9afe146114015780635dfe04e8146113a05780636c3d8b8f1461137757806370a082311461133e578063727785471461130657806374645ff3146112db5780637dc0d1d0146112b25780637ecebe00146112795780637fa0b84e14611247578063821226e8146112295780638285ef40146111f65780638c5d0ed3146111d85780638da5cb5b146111af578063910dd7c814610f7e578063959916dc14610f6157806395d89b4114610ea757806399a9702814610e775780639c5d719214610e595780639e15e89f14610e1e578063a9059cbb14610d3b578063b0e21e8a14610d1d578063b27c0e7414610ce3578063bb4cfe3b14610cc5578063c23ea21f14610c9c578063ce8849ed14610c73578063d49dffa714610627578063d505accf146104d7578063d8dfeb45146104ae578063dd62ed3e1461045f578063de40657714610436578063e0996cb614610418578063e30c3978146103ef578063ea64dd56146103d1578063eec0f42e146103b3578063f42760b714610395578063f8ba4cff14610379578063f9557ccb146103425763ffe04c661461032257600080fd5b3461033f578060031936011261033f576020602b54604051908152f35b80fd5b503461033f578060031936011261033f5760255460405190819061037590608081901c906001600160801b0316836130f6565b0390f35b503461033f578060031936011261033f5761039261426d565b80f35b503461033f578060031936011261033f576020602c54604051908152f35b503461033f578060031936011261033f576020600c54604051908152f35b503461033f578060031936011261033f576020601f54604051908152f35b503461033f578060031936011261033f576006546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601d54604051908152f35b503461033f578060031936011261033f576009546040516001600160a01b039091168152602090f35b503461033f57604036600319011261033f57610479612e17565b6040610483612e2d565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461033f578060031936011261033f57600b546040516001600160a01b039091168152602090f35b503461033f576104e636612f00565b908395949542116105f4576105b2916105aa9160018060a01b0394858a169687600052600460205260406000209081549161052083613bc0565b90556040519060208201926000805160206152c08339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b519020610579613874565b9060405190602082019261190160f01b845260228301526042820152604281526105a28161309c565b519020613b48565b919091613a49565b16036105c15761039292613c1d565b60405162461bcd60e51b815260206004820152601e60248201526000805160206152a08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206152808339815191526044820152606490fd5b5061014036600319011261033f5761063d612e17565b606435151560643503610a35576001600160401b036084358110610c6f57606060843536036003190112610c6f5760a43511610a265760e060a43536036003190112610a265760803660c3190112610a2657600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106c89060ff1615614350565b6106d061341d565b50506106da61426d565b6106ef6001600160a01b0382163014156143cd565b6106fd604460a43501614418565b60c4356001600160a01b0381169003610a35576107206107259160c43590614792565b614427565b60243580610ad3575b506107b06107826107aa6107a4610788620186a06107506020546044356131c5565b0461076060115491604435613229565b600d5460ff90610778906001600160a01b0316614532565b16958692896135d1565b90614698565b6001600160a01b038616875260186020526040872054906131c5565b9161320e565b906131ee565b336001600160a01b03831603610a7f575b6107cb90826146db565b61080c60406107dd60443584806148c2565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614480565b03925af1908115610a74578391610a44575b50600d546001600160a01b03169060643515610a3e57475b823b15610a3a5760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff610884602460a4350161312b565b1661012483015261ffff61089c604460a4350161312b565b166101448301526001600160a01b036108b960a435606401612e59565b166101648301526109856109176108f06108dd608460a4350160a4356004016144af565b60e06101848801526101e48701916144e1565b61090360a480350160a4356004016144af565b86830361010319016101a4880152906144e1565b6001600160a01b0361092d60a43560c401612e59565b166101c485015283810360031901606485015260606109756004608435016001600160a01b0361095c82612e59565b16845260843560248101356020860152604401906144af565b91909281604082015201916144e1565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a355760a4840152610104356001600160a01b03811690819003610a355760c4840152610124356001600160a01b0381169190829003610a355783879593818795819560e483015203925af18015610a2a57610a12575b50610392610a0d83601154906145a0565b61438d565b610a1b9061303d565b610a265781386109fc565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610836565b610a66915060403d604011610a6d575b610a5e81836130d3565b81019061446a565b503861081e565b503d610a54565b6040513d85823e3d90fd5b806107c15760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a74578391610c3d575b50610b2381836146db565b8015610bb1575b60018060a01b03821660005260186020526040600020610b4b828254613229565b9055610b5981601554613229565b60155560018060a01b038216600052602760205260406000206029546000526020526040600020610b8b828254613229565b90556001600160a01b03821680600080516020615300833981519152600080a43861072e565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c3157600091610bff575b50610b2a565b906020823d602011610c29575b81610c19602093836130d3565b8101031261033f57505138610bf9565b3d9150610c0c565b6040513d6000823e3d90fd5b90506020813d602011610c67575b81610c58602093836130d3565b81010312610a35575138610b18565b3d9150610c4b565b8280fd5b503461033f578060031936011261033f576008546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576026546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601e54604051908152f35b503461033f578060031936011261033f5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b503461033f578060031936011261033f576020601a54604051908152f35b503461033f57604036600319011261033f57610d55612e17565b60243580928115801590610e0c575b610d9c575b50506040519182526001600160a01b031690339060008051602061536083398151915290602090a3602060405160018152f35b33815260016020526040812054610db58382101561399d565b6001600160a01b0384169033829003610dd0575b5050610d69565b604093610de791610de28415156139e2565b61321c565b338352600160205283832055815220610e01838254613229565b905581388080610dc9565b50336001600160a01b03841614610d64565b503461033f57604036600319011261033f576060610e46610e3d612e17565b6024359061335c565b9060405192835260208301526040820152f35b503461033f578060031936011261033f576020602d54604051908152f35b503461033f57604036600319011261033f576020610e9f610e96612e17565b60243590613742565b604051908152f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee481613081565b51915afa610ef0614502565b915015610f5057610f036103759161510e565b610f3c6023604051809362746d2d60e81b6020830152610f2c8151809260208686019101612e6d565b81010360038101845201826130d3565b604051918291602083526020830190612e90565b50610375610f5c6150b7565b610f03565b503461033f578060031936011261033f5760208054604051908152f35b503461033f57604036600319011261033f576004356001600160401b038111610a265736602382011215610a2657806004013590610fbb82613110565b90610fc960405192836130d3565b82825283602091828401943660248284010111610c6f578060248593018737840101526024359061ffff8216809203610a35576101009384848051810103126111ab5761101590613410565b9061102260408501613a27565b61102e60608601613a27565b9560808601519560a08101519161104760c08301613a3b565b9060e08301519201519260018060a01b03808096169a169781421161117857926105aa9289888d989794611113978e8d600014611163576000805160206152c0833981519152945b8c600052600485526040600020928354936110a985613bc0565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110e0816130b7565b5190206110eb613874565b90604051908a82019261190160f01b845260228301526042820152604281526105a28161309c565b16036111315750156111285761039292613c1d565b61039292613bcf565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206152a08339815191526044820152fd5b6000805160206153408339815191529461108f565b60405162461bcd60e51b815260048101889052601d60248201526000805160206152808339815191526044820152606490fd5b8580fd5b503461033f578060031936011261033f576005546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601b54604051908152f35b503461033f578060031936011261033f5760145460405190819061037590608081901c906001600160801b0316836130f6565b503461033f578060031936011261033f576020602f54604051908152f35b503461033f57604036600319011261033f5761126e611264612e17565b6024359033613bcf565b602060405160018152f35b503461033f57602036600319011261033f576020906040906001600160a01b036112a1612e17565b168152600483522054604051908152f35b503461033f578060031936011261033f57600f546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f57610375604051610f3c816112ff81612fb8565b03826130d3565b503461033f57602036600319011261033f5760043590600982101561033f57602060ff61133284612f4f565b54166040519015158152f35b503461033f57602036600319011261033f576020906040906001600160a01b03611366612e17565b168152600183522054604051908152f35b503461033f578060031936011261033f57600a546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576113b9613c74565b5060806113c4613cf8565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b503461033f5760a036600319011261033f5761141b612e17565b60243590611427612e43565b906084356001600160401b038111610a3a57611447903690600401612ed3565b93909460066000526020956007875261146860ff6040600020541615614350565b61147061341d565b505061147a61426d565b6001600160a01b03848116959093600491611497308914156143cd565b8986600a54166040519485809263433e762d60e01b82525afa9283156118175790869186946117de575b506114d29161072091168094614792565b6114dc81876146db565b600087815260188a52604081206114f483825461321c565b90556115028260155461321c565b6015558560095416600c54813b15610c6f578361153a92849283604051809681958294630208d92960e11b84528c306004860161487f565b03925af18015610a2a576117cf575b508183896000805160206152e08339815191528480a487815260278a5260408120602954908183528b52604082205483116000146117a9575087815260278a526040812060295482528a5260408120555b610140600c54600e54906115c26040519485938493633d9545e960e11b855260048501614cd6565b0381855afa90811561179e578460409493928892829161176d575b5061160186519b8c968795869463efa84c6d60e01b86526044359060048701614d00565b03925af19384156117605781958295611739575b50611624604435871015614d92565b815260178652604081205491866116428461163d613c93565b614dd0565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561172d57916116f8575b50610e9f93610a0d939291116116a55761169a908280614e2e565b505b601154906145a0565b506116ae613c93565b80516001600160801b039081166116d35750506116cd845b8280614e2e565b5061169c565b81816116ea6116f3938a6116cd96015116896131c5565b915116906131ee565b6116c6565b929190508583813d8311611726575b61171181836130d3565b81010312610a35579151909190610e9f61167f565b503d611707565b604051903d90823e3d90fd5b90945061175691955060403d604011610a6d57610a5e81836130d3565b9490949338611615565b50604051903d90823e3d90fd5b61179191506101403d61014011611797575b61178981836130d3565b810190614bfb565b386115dd565b503d61177f565b6040513d86823e3d90fd5b9060409189825260278c528282209082528b52206117c882825461321c565b905561159a565b6117d89061303d565b38611549565b610720919450916118076114d2938d803d10611810575b6117ff81836130d3565b810190614be1565b949150916114c1565b503d6117f5565b6040513d87823e3d90fd5b503461033f578060031936011261033f576020601c54604051908152f35b503461033f578060031936011261033f57602e546040805191901c6001600160401b03168152602090f35b503461033f578060031936011261033f57602e546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576030546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576020602154604051908152f35b503461033f578060031936011261033f576006546001600160a01b03908181163381900361193357806005549384166000805160206153208339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461033f578060031936011261033f576020602a54604051908152f35b503461033f57602036600319011261033f576020906040906001600160a01b036119bd612e17565b168152601783522054604051908152f35b503461033f578060031936011261033f576020601554604051908152f35b503461033f578060031936011261033f576020600e54604051908152f35b503461033f578060031936011261033f576020601654604051908152f35b503461033f57606036600319011261033f576020610e9f60443560243560043561324f565b503461033f578060031936011261033f576020601154604051908152f35b503461033f578060031936011261033f57600d546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601254604051908152f35b503461033f578060031936011261033f576020610e9f613874565b503461033f578060031936011261033f576020601954604051908152f35b503461033f578060031936011261033f576020601354604051908152f35b503461033f578060031936011261033f57600d54602090611b32906001600160a01b0316614532565b60ff60405191168152f35b5060031961012036820112610a2657611b54612e17565b90611b5d612ec4565b60643591906001600160401b03908184116111ab5760608385360301126111ab576084359182116111ab5760e08383360301126111ab5760803660a31901126111ab57600660005260209060078252611bbe60ff6040600020541615614350565b611bc661341d565b5050611bd061426d565b6001600160a01b0386811693909290611beb308614156143cd565b6044810191611bf983614418565b9760a435868116998a8203610a3557611c159161072091614792565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa988915611ed9578b908d9a611f0c575b5089611c69611d119b6040936146db565b896000526018855281600020611c8082825461321c565b9055611c8e8160155461321c565b60155580308b6000805160206152e0833981519152600080a48960005260278552816000206029549081600052865282600020548211600014611ee4575089600052602785528160002060295460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614480565b03925af1988915611ed9578c99611eb7575b50600b5487169515611eb05747975b863b15611eac5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611d7c9061312b565b16906101240152611d8c9061312b565b166101448c015281611da060648801612e59565b166101648c0152611db460848701826144af565b6101848d0160e090526101e48d0190611dcc926144e1565b9060a48701611dda916144af565b8c830361010319016101a48e0152611df292916144e1565b9460c401611dff90612e59565b166101c48a0152888403016064890152806004019186611e1e84612e59565b168452602482013590840152604401611e36916144af565b606060408401819052611e4a9301916144e1565b95608486015260c435838116809103610a355760a486015260e435838116809103610a355760c486015235918216809203610a355783879593818795819560e483015203925af18015610a2a57610a125750610392610a0d83601154906145a0565b8c80fd5b3497611d32565b611ed191995060403d604011610a6d57610a5e81836130d3565b509738611d23565b6040513d8e823e3d90fd5b8a600052602786528260002090600052855281600020611f0582825461321c565b9055611ce7565b809a50848092503d8311611f38575b611f2581836130d3565b81010312610a35579751978a6040611c58565b503d611f1b565b503461033f57606036600319011261033f57611f59612e17565b90611f62612e2d565b6044359182611fa0575b506040519182526001600160a01b0390811692169060008051602061536083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611fc98286101561399d565b861693848403611fde575b5050505050611f6c565b8386526002835260408620336000528352604060002054600019810361204c575b509260016020969361202a8794604097610de26000805160206153608339815191529c9a15156139e2565b9285525283832055815220612040858254613229565b90559138808581611fd4565b909181106120a2579260016020969361202a8a6000805160206153608339815191529a989561207d8260409a61321c565b8689526002855289892033600052855289600020559497509497995050939650611fff565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033f5760c036600319011261033f576120fc612e17565b60643591906001600160a01b0360843581811692908390036125235760a4356001600160401b038111610a3a57612137903690600401612ed3565b9093600586526020966007885261215560ff60408920541615614350565b61215d61341d565b505061216761426d565b84841691612177308414156143cd565b60048987600a54166040519283809263433e762d60e01b82525afa90811561251857826121af92610720928c916124fb575b50614792565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa938415611ed9578c946124cc575b5083612472575b505061223f61220d602435858a6148c2565b905061221f600e5491600c5495613229565b60405180938192633d9545e960e11b835261014097889560048501614cd6565b0381875afa9283156124675788936040959387938e938493612442575b505061227e9087519d8e978896879563efa84c6d60e01b875260048701614d00565b03925af195861561243757879661240e575b5061229d90871015614d92565b6122a785846146db565b84916000951561239e575b5080855260188752604085206122c9838254613229565b90556122d782601554613229565b601555600c54948460095416803b15610a3557836000916123119883604051809b81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c3157610e9f96610a0d9661237c575b506000805160206153008339815191529083835260278a526040832060295484528a526040832061235b868254613229565b905582156123765780600954165b169180a4601154906145a0565b85612369565b61238791925061303d565b600090600080516020615300833981519152612329565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa9081156118175785916123e1575b5090386122b2565b90508681813d8311612407575b6123f881836130d3565b81010312610a3a5751386123d9565b503d6123ee565b61229d975061242d91965060403d604011610a6d57610a5e81836130d3565b9690969590612290565b6040513d89823e3d90fd5b61227e929350908161245f92903d106117975761178981836130d3565b91903861225c565b6040513d8d823e3d90fd5b803b156124c85783918c9186838c6124a060405197889687958694630208d92960e11b86526004860161487f565b03925af18015612467576124b5575b806121fb565b6124c1909a919a61303d565b98386124af565b8b80fd5b9093508c81813d83116124f4575b6124e481836130d3565b810103126124c8575192386121f4565b503d6124da565b61251291508d803d10611810576117ff81836130d3565b386121a9565b6040513d8b823e3d90fd5b8380fd5b503461033f5761253636612f00565b908395949542116105f4576125bb916105aa9160018060a01b03948a868b16978882526004602052604082209081549161256f83613bc0565b9055604051916020830193600080516020615340833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b16036105c15761039292613bcf565b503461033f57602036600319011261033f576020906040906001600160a01b036125f2612e17565b168152601883522054604051908152f35b503461033f578060031936011261033f57602060255460801c604051908152f35b503461033f57604036600319011261033f576004356009811015610a265761264a612eb5565b6008549091906001600160a01b031633036127005760ff61266a82612f4f565b541615159115159182146126c657808260ff6126886126b694612f4f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612f4f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033f5761018036600319011261033f576024356001600160a01b038181169291839003610a26576001600160401b039260443584811161252357612787903690600401612ed3565b9094612791612e43565b926127a18560055416331461313a565b60043580612b9b575b5080612b5d575b5081612a01575b5050819293501690816129c1575b5050608435806129a9575b5060a43580612991575b5060c4358061297a575b5060e43580612956575b506101043580612932575b506101243580612901575b50610144358061288d575b50610164358061281e575080f35b601e54811061282d57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61289c620186a0821115613185565b601f5481116128ae57601e5538612810565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538612805565b612940620186a08210613185565b61294d601b548211613185565b601c55386127fa565b612964620186a08210613185565b612971601c548210613185565b601b55386127ef565b612988620186a08210613185565b601d55386127e5565b6129a0620186a0821115613185565b601a55386127db565b6129b8620186a0821115613185565b601955386127d1565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b0319161760085538806127c6565b8111612b4957612a12601054612f7e565b601f8111612afa575b5083601f8211600114612a815781908596859692612a76575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a18392386127b8565b013590503880612a34565b601085526000805160206153a0833981519152908560205b601f1985168210612ae2575050908495968392600194601f19811610612ac8575b505050811b01601055612a4a565b0135600019600384901b60f8161c19169055388080612aba565b80600184958294958c01358155019401920190612a99565b601085526000805160206153a0833981519152601f830160051c810160208410612b42575b601f90920160051c01905b818110612b375750612a1b565b858155600101612b2a565b5080612b1f565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a1386127b1565b612baa620186a0821115613185565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a3602055386127aa565b503461033f57604036600319011261033f5761126e612bf8612e17565b6024359033613c1d565b503461033f57606036600319011261033f57612c1c612e17565b612c24612eb5565b612c2c612ec4565b9060018060a01b03928391612c468360055416331461313a565b15612cd8571690811590811591612cd0575b5015612c9357806005549283166000805160206153208339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612c58565b9150501660018060a01b0319600654161760065580f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612d2c81613081565b51915afa612d38614502565b915015612d9557612d4b6103759161510e565b610f3c6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612d858151809260208686019101612e6d565b81010360148101845201826130d3565b50610375612da16150b7565b612d4b565b503461033f578060031936011261033f576040612dc161341d565b825191151582526020820152f35b905034610a26576040366003190112610a26576040602092612def612e17565b612df7612e2d565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a3557565b602435906001600160a01b0382168203610a3557565b606435906001600160a01b0382168203610a3557565b35906001600160a01b0382168203610a3557565b60005b838110612e805750506000910152565b8181015183820152602001612e70565b90602091612ea981518092818552858086019101612e6d565b601f01601f1916010190565b602435908115158203610a3557565b604435908115158203610a3557565b9181601f84011215610a35578235916001600160401b038311610a355760208381860195010111610a3557565b60e0906003190112610a35576001600160a01b03906004358281168103610a3557916024359081168103610a355790604435906064359060843560ff81168103610a35579060a4359060c43590565b6009811015612f68576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612fae575b6020831014612f9857565b634e487b7160e01b600052602260045260246000fd5b91607f1691612f8d565b60105460009291612fc882612f7e565b9081815260019283811690816000146130225750600114612fe857505050565b9092935060106000526020928360002092846000945b83861061300e5750505050010190565b805485870183015294019385908201612ffe565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161305057604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761305057604052565b604081019081106001600160401b0382111761305057604052565b608081019081106001600160401b0382111761305057604052565b61010081019081106001600160401b0382111761305057604052565b601f909101601f19168101906001600160401b0382119082101761305057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161305057601f01601f191660200190565b359061ffff82168203610a3557565b1561314157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561318c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156131d857565b634e487b7160e01b600052601160045260246000fd5b81156131f8570490565b634e487b7160e01b600052601260045260246000fd5b604d81116131d857600a0a90565b919082039182116131d857565b919082018092116131d857565b818103929160001380158285131691841216176131d857565b601454919291613292916132899161327f91613275906001600160801b038316906131c5565b9060801c906131ee565b93601f54906131c5565b6107aa8361320e565b808310613354576132a66132dc918461321c565b916132d76107a46132ce601e546132c86132bf8661320e565b60215490613229565b906131c5565b6107aa8461320e565b613236565b6509184e72a000908181029181830514901517156131d857670de0b6b3a7640000918281029281840514901517156131d85780156131f857600160ff1b918083146000198314166131d8570590600082121561334d5781146131d857600003905b808211613348575090565b905090565b509061333d565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561340457916040916133e06133f89594836020865161339c81613081565b82815201526133ba866133ad613cf8565b50505050509390506135d1565b815190936001600160801b03916020916133d6918416906131c5565b92015116906131ee565b8181106133fc57035b95815260186020522054613697565b9091565b5050806133e9565b50509192505080918190565b51908115158203610a3557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061345060248201612fb8565b0381600080955af18015613579578194829161353d575b509284156134e05783156134a657507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506134f360135460125490613229565b42116135035750601154906134a0565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613572575b61355681836130d3565b8101031261033f57602061356985613410565b94015138613467565b503d61354c565b508251903d90823e3d90fd5b1561358c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6135dc821515613585565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561172d57809261365f575b50509061365761364e61365c93620186a060225404906131c5565b601e54906131c5565b6131ee565b90565b9091506020823d821161368f575b8161367a602093836130d3565b8101031261033f57505161365761364e613633565b3d915061366d565b6136a2821515613585565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c315760009161370f575b50906136576136fb92602254906131c5565b620186a061370b601e54836131c5565b0491565b906020823d821161373a575b81613728602093836130d3565b8101031261033f5750516136576136e9565b3d915061371b565b6001600160a01b0316600081815260186020526040812054909261376591613697565b91835260176020526040832054801561386e57811561386e5781811061386e5782811015613864576014546137ae918391610de291613275906001600160801b038316906131c5565b90620186a09283830292808404851490151715613850576137d392916107aa9161321c565b91601b5491601c54936137e68585613236565b80820291848212600160ff1b82141661385057818305149015171561383c57058184820194851291129080158216911516176138285750808212613348575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613974575b156138cf577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176130505760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138a6565b156139a457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156139e957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a3557565b519060ff82168203610a3557565b6005811015612f685780613a5a5750565b60018103613aa25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613aef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613af857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613bb45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117605781516001600160a01b03811615613bae579190565b50600190565b50505050600090600390565b60001981146131d85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613c8182613066565b60006040838281528260208201520152565b60405190613ca082613081565b6014546001600160801b038116835260801c6020830152565b60405190613cc682613081565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116131d857565b613d00613c74565b5060006020604051613d1181613081565b828152015260006020604051613d2681613081565b8281520152604051613d3781613066565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190613d69613c93565b91613d72613cb9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015610c31576000906141ab575b8851613ddd92506001600160801b031690613229565b94856141765760005b60208501518190613e00906001600160401b03164261321c565b95861561414b575050426001600160401b031660208b8101919091528901516001600160801b031615614101575087518951602091613eb491670de0b6b3a764000091613e6a918991613e65916001600160401b0316906001600160801b03166131c5565b6131c5565b8b5191900498906001600160801b0390613e8990828c16908316613cdf565b168b52613657620186a0613e9f601a548c6131c5565b858e01516001600160801b03169190046131c5565b60408b0180519197916001600160801b03808a169291613ed79084908316613cdf565b169052898301805190916001600160801b0391613ef691908316613cdf565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c31576000906140cd575b8851613f5392506001600160801b031690613229565b8061409757506000925b602b548481811015613ff757613f73908261321c565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156131d857613fd991613fa1916131ee565b91613657613fc6613fc0602f5493613e6560018060401b0397806131c5565b83613229565b8c519092906001600160401b03166131c5565b16808952602e546001600160401b0316908111613ff35750565b8852565b9050602c5480821161400857505050565b6140119161321c565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156131d85761365761405a613fc061404c61406a95602d54906131ee565b93613e65602f5495806131c5565b8b516001600160401b03166131c5565b602e5460401c6001600160401b031680821161408f575b506001600160401b03168852565b905038614081565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156131d8576140c7916131ee565b92613f5d565b506020813d6020116140f9575b816140e7602093836130d3565b81010312610a3557613f539051613f3d565b3d91506140da565b8951603054999a91999498509296509450506001600160401b0391821692501681900361413f575b509392614134613cb9565b926000926000929190565b81526001925038614129565b98509950505095505050505091614160613c93565b91614169613cb9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156131d857866141a6916131ee565b613de6565b506020813d6020116141d7575b816141c5602093836130d3565b81010312610a3557613ddd9051613dc7565b3d91506141b8565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b61432460208061431061427e613cf8565b93969593909290156143265750505060018060401b036030541660008060008051602061538083398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091614308908416614229565b0151166141df565b61431c8382511661424b565b015116614204565b565b83516040519384526001600160401b031692600080516020615380833981519152908990a46142b3565b1561435757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561439457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143d457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a355790565b1561442e57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a35576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a35570160208101919035906001600160401b038211610a35578136038313610a3557565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561452d573d9061451382613110565b9161452160405193846130d3565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261455581613081565b51916001600160a01b03165afa61456a614502565b9080614595575b1561458f57602081805181010312610a3557602061365c9101613a3b565b50601290565b506020815114614571565b919060018060a01b0380600094168452602060178152604085205490811561468e57601881526040862054801561468757816145da613c93565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561172d578097614651575b50506133d661463661364e61464c969798620186a060225404906131c5565b95613e6560018060801b039485875116906131c5565b111590565b9096508187813d8311614680575b61466981836130d3565b8101031261033f57509451946133d6614636614617565b503d61465f565b5050505050565b5060019450505050565b91821580156146d3575b61335457600181018091116131d8576146c1926132c86136579261320e565b600581018091116131d857600a900490565b5081156146a2565b6001600160a01b03163381036146ef575050565b60008181526020906003825260409182822033835281528483832054106147585783825260038152828220338352815282822054600101614731575050505050565b61474c9382526003815282822090338352522091825461321c565b90553880808080614687565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c31578493600091614841575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c315760009161480d575b50905090565b82813d831161483a575b61482181836130d3565b8101031261033f575061483390613410565b8038614807565b503d614817565b9091929381813d8311614878575b61485981836130d3565b81010312610a26575190828216820361033f57508392919060446147cd565b503d61484f565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b0391821690821603919082116131d857565b929060208093620186a06148d78354836131c5565b04926148e1613c93565b966148ec8584613229565b60409586516148fa81613081565b6000808252960186905289516001600160801b0392908316614b8157826149288c8280855b16915116613cdf565b168b526149578a8c018461494181851682845116613cdf565b1680915261495285849e5116614229565b6141df565b6016548015908115614b72575b5015614b3457859060018060a01b0380951680895260178c5289892061498b838254613229565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b13575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b09578594614ada575b508397614a0d613cb9565b818101916103e88484511610614aa6575090614a40839283614a37614a47968a16828451166148a9565b1680915261424b565b5116614204565b6009541690600e5490823b15610a3a579184939184879694614a7f985198899586948593630208d92960e11b8552306004860161487f565b03925af1918215614a9c575050614a935750565b6143249061303d565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b02575b614af281836130d3565b81010312610a3a57519238614a02565b503d614ae8565b86513d87823e3d90fd5b82600a5416865260018952614b2c878720918254613229565b9055386149c4565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614964565b828b8b81019280614bb4614ba5614b9b86885116846131c5565b86865116906131ee565b95856116ea81875116896131c5565b10614bc6575b9082806149289361491f565b92908280614bd661492894613bc0565b959293505050614bba565b90816020910312610a35575161ffff81168103610a355790565b809103906101408212610a35576040805192614c1684613066565b60808112610a35578151614c298161309c565b614c3284613a27565b815260208401516020820152614c49838501613a27565b838201526060840151606082015284526080607f19820112610a355781908151614c728161309c565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a3557614ccb610120825193614cb685613081565b614cc36101008201613410565b855201613410565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919261365c959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144e1565b15614d9957565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614df1575090925050565b90816116ea81614e14614e0a614e1d96865116886131c5565b828a5116906131ee565b975116876131c5565b10614e2457565b9061365c90613bc0565b92919060009160018060a01b0394858316845260206017815260408520548084116150af575b50821561507357614e63613c93565b968582604051614e7281613081565b8281520152614e818489614dd0565b9560018060801b039384614e9a818a16828d51166148a9565b168a52614ec4848b0186614eb3818a16828451166148a9565b16809152614952878b9d5116614229565b82871682526017845260408220614edc87825461321c565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611817578592615044575b5080602554169492803b15610a355782600091614f549a83604051809d81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c31577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661502e575b50614f969082841690613cdf565b1660018060801b031960255416176025558383169081835260278752604083206028549081855288526040842054821160001461500757505081526027855260408120602854825285528060408120555b1561500157508060095416955b60405195865216941692a4565b95614ff4565b90918352602787526040832090835286526150276040832091825461321c565b9055614fe7565b61503991945061303d565b600092614f96614f88565b9091508681813d831161506c575b61505c81836130d3565b81010312610a3a57519038614f1e565b503d615052565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e54565b604051906150c482613081565b60038252623f3f3f60e81b6020830152565b9081518110156150e7570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146131d85760010190565b80516040811061518657508051810190602081818401930312610a35576020810151906001600160401b038211610a35570181603f82011215610a3557602081015161515981613110565b9261516760405194856130d3565b81845260408284010111610a355761365c916040602085019101612e6d565b602092908303615274576000805b60ff81168581109081615255575b50156151b6576151b1906150fd565b615194565b9260ff809416926151c684613110565b936151d460405195866130d3565b8085526151e3601f1991613110565b013687860137825b85811687811080615238575b1561522d5761522891906152226001600160f81b031961521783886150d6565b5116871a91886150d6565b536150fd565b6151eb565b505094505050905090565b506001600160f81b031961524c82866150d6565b511615156151f7565b6001600160f81b0319915061526a90866150d6565b51161515386151a2565b91505061365c6150b756fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207856c00f36871d3751eaea70a034e9d1cefb0b7e0c2d026f3891495b2315554464736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612dcf5750806302ce728f14612da657806306fdde0314612cef578063078dfbe714612c02578063095ea7b314612bdb5780630996efb71461273c5780630c4e84f01461262457806318160ddd146126035780631c9e379b146125ca5780631da8bf10146125275780631ee9c8f2146120e257806323b872dd14611f3f5780632a9399d914611b3d578063313ce56714611b09578063331960ff14611aeb57806334d441d014611acd5780633644e51514611ab257806337b6b7b914611a9457806338d52e0f14611a6b5780633ba0b9a914611a4d5780633f741adb14611a2857806340626d8b14611a0a57806344de240a146119ec578063473e3ce7146119ce57806348e4163e146119955780634d7f2a34146119775780634e71e0c8146118db578063529898f2146118bd57806352f353eb14611894578063551402321461186b57806355c2ab9414611840578063579354621461182257806358db9afe146114015780635dfe04e8146113a05780636c3d8b8f1461137757806370a082311461133e578063727785471461130657806374645ff3146112db5780637dc0d1d0146112b25780637ecebe00146112795780637fa0b84e14611247578063821226e8146112295780638285ef40146111f65780638c5d0ed3146111d85780638da5cb5b146111af578063910dd7c814610f7e578063959916dc14610f6157806395d89b4114610ea757806399a9702814610e775780639c5d719214610e595780639e15e89f14610e1e578063a9059cbb14610d3b578063b0e21e8a14610d1d578063b27c0e7414610ce3578063bb4cfe3b14610cc5578063c23ea21f14610c9c578063ce8849ed14610c73578063d49dffa714610627578063d505accf146104d7578063d8dfeb45146104ae578063dd62ed3e1461045f578063de40657714610436578063e0996cb614610418578063e30c3978146103ef578063ea64dd56146103d1578063eec0f42e146103b3578063f42760b714610395578063f8ba4cff14610379578063f9557ccb146103425763ffe04c661461032257600080fd5b3461033f578060031936011261033f576020602b54604051908152f35b80fd5b503461033f578060031936011261033f5760255460405190819061037590608081901c906001600160801b0316836130f6565b0390f35b503461033f578060031936011261033f5761039261426d565b80f35b503461033f578060031936011261033f576020602c54604051908152f35b503461033f578060031936011261033f576020600c54604051908152f35b503461033f578060031936011261033f576020601f54604051908152f35b503461033f578060031936011261033f576006546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601d54604051908152f35b503461033f578060031936011261033f576009546040516001600160a01b039091168152602090f35b503461033f57604036600319011261033f57610479612e17565b6040610483612e2d565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461033f578060031936011261033f57600b546040516001600160a01b039091168152602090f35b503461033f576104e636612f00565b908395949542116105f4576105b2916105aa9160018060a01b0394858a169687600052600460205260406000209081549161052083613bc0565b90556040519060208201926000805160206152c08339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b519020610579613874565b9060405190602082019261190160f01b845260228301526042820152604281526105a28161309c565b519020613b48565b919091613a49565b16036105c15761039292613c1d565b60405162461bcd60e51b815260206004820152601e60248201526000805160206152a08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206152808339815191526044820152606490fd5b5061014036600319011261033f5761063d612e17565b606435151560643503610a35576001600160401b036084358110610c6f57606060843536036003190112610c6f5760a43511610a265760e060a43536036003190112610a265760803660c3190112610a2657600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106c89060ff1615614350565b6106d061341d565b50506106da61426d565b6106ef6001600160a01b0382163014156143cd565b6106fd604460a43501614418565b60c4356001600160a01b0381169003610a35576107206107259160c43590614792565b614427565b60243580610ad3575b506107b06107826107aa6107a4610788620186a06107506020546044356131c5565b0461076060115491604435613229565b600d5460ff90610778906001600160a01b0316614532565b16958692896135d1565b90614698565b6001600160a01b038616875260186020526040872054906131c5565b9161320e565b906131ee565b336001600160a01b03831603610a7f575b6107cb90826146db565b61080c60406107dd60443584806148c2565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614480565b03925af1908115610a74578391610a44575b50600d546001600160a01b03169060643515610a3e57475b823b15610a3a5760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff610884602460a4350161312b565b1661012483015261ffff61089c604460a4350161312b565b166101448301526001600160a01b036108b960a435606401612e59565b166101648301526109856109176108f06108dd608460a4350160a4356004016144af565b60e06101848801526101e48701916144e1565b61090360a480350160a4356004016144af565b86830361010319016101a4880152906144e1565b6001600160a01b0361092d60a43560c401612e59565b166101c485015283810360031901606485015260606109756004608435016001600160a01b0361095c82612e59565b16845260843560248101356020860152604401906144af565b91909281604082015201916144e1565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a355760a4840152610104356001600160a01b03811690819003610a355760c4840152610124356001600160a01b0381169190829003610a355783879593818795819560e483015203925af18015610a2a57610a12575b50610392610a0d83601154906145a0565b61438d565b610a1b9061303d565b610a265781386109fc565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610836565b610a66915060403d604011610a6d575b610a5e81836130d3565b81019061446a565b503861081e565b503d610a54565b6040513d85823e3d90fd5b806107c15760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a74578391610c3d575b50610b2381836146db565b8015610bb1575b60018060a01b03821660005260186020526040600020610b4b828254613229565b9055610b5981601554613229565b60155560018060a01b038216600052602760205260406000206029546000526020526040600020610b8b828254613229565b90556001600160a01b03821680600080516020615300833981519152600080a43861072e565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c3157600091610bff575b50610b2a565b906020823d602011610c29575b81610c19602093836130d3565b8101031261033f57505138610bf9565b3d9150610c0c565b6040513d6000823e3d90fd5b90506020813d602011610c67575b81610c58602093836130d3565b81010312610a35575138610b18565b3d9150610c4b565b8280fd5b503461033f578060031936011261033f576008546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576026546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601e54604051908152f35b503461033f578060031936011261033f5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b503461033f578060031936011261033f576020601a54604051908152f35b503461033f57604036600319011261033f57610d55612e17565b60243580928115801590610e0c575b610d9c575b50506040519182526001600160a01b031690339060008051602061536083398151915290602090a3602060405160018152f35b33815260016020526040812054610db58382101561399d565b6001600160a01b0384169033829003610dd0575b5050610d69565b604093610de791610de28415156139e2565b61321c565b338352600160205283832055815220610e01838254613229565b905581388080610dc9565b50336001600160a01b03841614610d64565b503461033f57604036600319011261033f576060610e46610e3d612e17565b6024359061335c565b9060405192835260208301526040820152f35b503461033f578060031936011261033f576020602d54604051908152f35b503461033f57604036600319011261033f576020610e9f610e96612e17565b60243590613742565b604051908152f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee481613081565b51915afa610ef0614502565b915015610f5057610f036103759161510e565b610f3c6023604051809362746d2d60e81b6020830152610f2c8151809260208686019101612e6d565b81010360038101845201826130d3565b604051918291602083526020830190612e90565b50610375610f5c6150b7565b610f03565b503461033f578060031936011261033f5760208054604051908152f35b503461033f57604036600319011261033f576004356001600160401b038111610a265736602382011215610a2657806004013590610fbb82613110565b90610fc960405192836130d3565b82825283602091828401943660248284010111610c6f578060248593018737840101526024359061ffff8216809203610a35576101009384848051810103126111ab5761101590613410565b9061102260408501613a27565b61102e60608601613a27565b9560808601519560a08101519161104760c08301613a3b565b9060e08301519201519260018060a01b03808096169a169781421161117857926105aa9289888d989794611113978e8d600014611163576000805160206152c0833981519152945b8c600052600485526040600020928354936110a985613bc0565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110e0816130b7565b5190206110eb613874565b90604051908a82019261190160f01b845260228301526042820152604281526105a28161309c565b16036111315750156111285761039292613c1d565b61039292613bcf565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206152a08339815191526044820152fd5b6000805160206153408339815191529461108f565b60405162461bcd60e51b815260048101889052601d60248201526000805160206152808339815191526044820152606490fd5b8580fd5b503461033f578060031936011261033f576005546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601b54604051908152f35b503461033f578060031936011261033f5760145460405190819061037590608081901c906001600160801b0316836130f6565b503461033f578060031936011261033f576020602f54604051908152f35b503461033f57604036600319011261033f5761126e611264612e17565b6024359033613bcf565b602060405160018152f35b503461033f57602036600319011261033f576020906040906001600160a01b036112a1612e17565b168152600483522054604051908152f35b503461033f578060031936011261033f57600f546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f57610375604051610f3c816112ff81612fb8565b03826130d3565b503461033f57602036600319011261033f5760043590600982101561033f57602060ff61133284612f4f565b54166040519015158152f35b503461033f57602036600319011261033f576020906040906001600160a01b03611366612e17565b168152600183522054604051908152f35b503461033f578060031936011261033f57600a546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576113b9613c74565b5060806113c4613cf8565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b503461033f5760a036600319011261033f5761141b612e17565b60243590611427612e43565b906084356001600160401b038111610a3a57611447903690600401612ed3565b93909460066000526020956007875261146860ff6040600020541615614350565b61147061341d565b505061147a61426d565b6001600160a01b03848116959093600491611497308914156143cd565b8986600a54166040519485809263433e762d60e01b82525afa9283156118175790869186946117de575b506114d29161072091168094614792565b6114dc81876146db565b600087815260188a52604081206114f483825461321c565b90556115028260155461321c565b6015558560095416600c54813b15610c6f578361153a92849283604051809681958294630208d92960e11b84528c306004860161487f565b03925af18015610a2a576117cf575b508183896000805160206152e08339815191528480a487815260278a5260408120602954908183528b52604082205483116000146117a9575087815260278a526040812060295482528a5260408120555b610140600c54600e54906115c26040519485938493633d9545e960e11b855260048501614cd6565b0381855afa90811561179e578460409493928892829161176d575b5061160186519b8c968795869463efa84c6d60e01b86526044359060048701614d00565b03925af19384156117605781958295611739575b50611624604435871015614d92565b815260178652604081205491866116428461163d613c93565b614dd0565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561172d57916116f8575b50610e9f93610a0d939291116116a55761169a908280614e2e565b505b601154906145a0565b506116ae613c93565b80516001600160801b039081166116d35750506116cd845b8280614e2e565b5061169c565b81816116ea6116f3938a6116cd96015116896131c5565b915116906131ee565b6116c6565b929190508583813d8311611726575b61171181836130d3565b81010312610a35579151909190610e9f61167f565b503d611707565b604051903d90823e3d90fd5b90945061175691955060403d604011610a6d57610a5e81836130d3565b9490949338611615565b50604051903d90823e3d90fd5b61179191506101403d61014011611797575b61178981836130d3565b810190614bfb565b386115dd565b503d61177f565b6040513d86823e3d90fd5b9060409189825260278c528282209082528b52206117c882825461321c565b905561159a565b6117d89061303d565b38611549565b610720919450916118076114d2938d803d10611810575b6117ff81836130d3565b810190614be1565b949150916114c1565b503d6117f5565b6040513d87823e3d90fd5b503461033f578060031936011261033f576020601c54604051908152f35b503461033f578060031936011261033f57602e546040805191901c6001600160401b03168152602090f35b503461033f578060031936011261033f57602e546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576030546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576020602154604051908152f35b503461033f578060031936011261033f576006546001600160a01b03908181163381900361193357806005549384166000805160206153208339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461033f578060031936011261033f576020602a54604051908152f35b503461033f57602036600319011261033f576020906040906001600160a01b036119bd612e17565b168152601783522054604051908152f35b503461033f578060031936011261033f576020601554604051908152f35b503461033f578060031936011261033f576020600e54604051908152f35b503461033f578060031936011261033f576020601654604051908152f35b503461033f57606036600319011261033f576020610e9f60443560243560043561324f565b503461033f578060031936011261033f576020601154604051908152f35b503461033f578060031936011261033f57600d546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601254604051908152f35b503461033f578060031936011261033f576020610e9f613874565b503461033f578060031936011261033f576020601954604051908152f35b503461033f578060031936011261033f576020601354604051908152f35b503461033f578060031936011261033f57600d54602090611b32906001600160a01b0316614532565b60ff60405191168152f35b5060031961012036820112610a2657611b54612e17565b90611b5d612ec4565b60643591906001600160401b03908184116111ab5760608385360301126111ab576084359182116111ab5760e08383360301126111ab5760803660a31901126111ab57600660005260209060078252611bbe60ff6040600020541615614350565b611bc661341d565b5050611bd061426d565b6001600160a01b0386811693909290611beb308614156143cd565b6044810191611bf983614418565b9760a435868116998a8203610a3557611c159161072091614792565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa988915611ed9578b908d9a611f0c575b5089611c69611d119b6040936146db565b896000526018855281600020611c8082825461321c565b9055611c8e8160155461321c565b60155580308b6000805160206152e0833981519152600080a48960005260278552816000206029549081600052865282600020548211600014611ee4575089600052602785528160002060295460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614480565b03925af1988915611ed9578c99611eb7575b50600b5487169515611eb05747975b863b15611eac5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611d7c9061312b565b16906101240152611d8c9061312b565b166101448c015281611da060648801612e59565b166101648c0152611db460848701826144af565b6101848d0160e090526101e48d0190611dcc926144e1565b9060a48701611dda916144af565b8c830361010319016101a48e0152611df292916144e1565b9460c401611dff90612e59565b166101c48a0152888403016064890152806004019186611e1e84612e59565b168452602482013590840152604401611e36916144af565b606060408401819052611e4a9301916144e1565b95608486015260c435838116809103610a355760a486015260e435838116809103610a355760c486015235918216809203610a355783879593818795819560e483015203925af18015610a2a57610a125750610392610a0d83601154906145a0565b8c80fd5b3497611d32565b611ed191995060403d604011610a6d57610a5e81836130d3565b509738611d23565b6040513d8e823e3d90fd5b8a600052602786528260002090600052855281600020611f0582825461321c565b9055611ce7565b809a50848092503d8311611f38575b611f2581836130d3565b81010312610a35579751978a6040611c58565b503d611f1b565b503461033f57606036600319011261033f57611f59612e17565b90611f62612e2d565b6044359182611fa0575b506040519182526001600160a01b0390811692169060008051602061536083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611fc98286101561399d565b861693848403611fde575b5050505050611f6c565b8386526002835260408620336000528352604060002054600019810361204c575b509260016020969361202a8794604097610de26000805160206153608339815191529c9a15156139e2565b9285525283832055815220612040858254613229565b90559138808581611fd4565b909181106120a2579260016020969361202a8a6000805160206153608339815191529a989561207d8260409a61321c565b8689526002855289892033600052855289600020559497509497995050939650611fff565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033f5760c036600319011261033f576120fc612e17565b60643591906001600160a01b0360843581811692908390036125235760a4356001600160401b038111610a3a57612137903690600401612ed3565b9093600586526020966007885261215560ff60408920541615614350565b61215d61341d565b505061216761426d565b84841691612177308414156143cd565b60048987600a54166040519283809263433e762d60e01b82525afa90811561251857826121af92610720928c916124fb575b50614792565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa938415611ed9578c946124cc575b5083612472575b505061223f61220d602435858a6148c2565b905061221f600e5491600c5495613229565b60405180938192633d9545e960e11b835261014097889560048501614cd6565b0381875afa9283156124675788936040959387938e938493612442575b505061227e9087519d8e978896879563efa84c6d60e01b875260048701614d00565b03925af195861561243757879661240e575b5061229d90871015614d92565b6122a785846146db565b84916000951561239e575b5080855260188752604085206122c9838254613229565b90556122d782601554613229565b601555600c54948460095416803b15610a3557836000916123119883604051809b81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c3157610e9f96610a0d9661237c575b506000805160206153008339815191529083835260278a526040832060295484528a526040832061235b868254613229565b905582156123765780600954165b169180a4601154906145a0565b85612369565b61238791925061303d565b600090600080516020615300833981519152612329565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa9081156118175785916123e1575b5090386122b2565b90508681813d8311612407575b6123f881836130d3565b81010312610a3a5751386123d9565b503d6123ee565b61229d975061242d91965060403d604011610a6d57610a5e81836130d3565b9690969590612290565b6040513d89823e3d90fd5b61227e929350908161245f92903d106117975761178981836130d3565b91903861225c565b6040513d8d823e3d90fd5b803b156124c85783918c9186838c6124a060405197889687958694630208d92960e11b86526004860161487f565b03925af18015612467576124b5575b806121fb565b6124c1909a919a61303d565b98386124af565b8b80fd5b9093508c81813d83116124f4575b6124e481836130d3565b810103126124c8575192386121f4565b503d6124da565b61251291508d803d10611810576117ff81836130d3565b386121a9565b6040513d8b823e3d90fd5b8380fd5b503461033f5761253636612f00565b908395949542116105f4576125bb916105aa9160018060a01b03948a868b16978882526004602052604082209081549161256f83613bc0565b9055604051916020830193600080516020615340833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b16036105c15761039292613bcf565b503461033f57602036600319011261033f576020906040906001600160a01b036125f2612e17565b168152601883522054604051908152f35b503461033f578060031936011261033f57602060255460801c604051908152f35b503461033f57604036600319011261033f576004356009811015610a265761264a612eb5565b6008549091906001600160a01b031633036127005760ff61266a82612f4f565b541615159115159182146126c657808260ff6126886126b694612f4f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612f4f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033f5761018036600319011261033f576024356001600160a01b038181169291839003610a26576001600160401b039260443584811161252357612787903690600401612ed3565b9094612791612e43565b926127a18560055416331461313a565b60043580612b9b575b5080612b5d575b5081612a01575b5050819293501690816129c1575b5050608435806129a9575b5060a43580612991575b5060c4358061297a575b5060e43580612956575b506101043580612932575b506101243580612901575b50610144358061288d575b50610164358061281e575080f35b601e54811061282d57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61289c620186a0821115613185565b601f5481116128ae57601e5538612810565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538612805565b612940620186a08210613185565b61294d601b548211613185565b601c55386127fa565b612964620186a08210613185565b612971601c548210613185565b601b55386127ef565b612988620186a08210613185565b601d55386127e5565b6129a0620186a0821115613185565b601a55386127db565b6129b8620186a0821115613185565b601955386127d1565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b0319161760085538806127c6565b8111612b4957612a12601054612f7e565b601f8111612afa575b5083601f8211600114612a815781908596859692612a76575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a18392386127b8565b013590503880612a34565b601085526000805160206153a0833981519152908560205b601f1985168210612ae2575050908495968392600194601f19811610612ac8575b505050811b01601055612a4a565b0135600019600384901b60f8161c19169055388080612aba565b80600184958294958c01358155019401920190612a99565b601085526000805160206153a0833981519152601f830160051c810160208410612b42575b601f90920160051c01905b818110612b375750612a1b565b858155600101612b2a565b5080612b1f565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a1386127b1565b612baa620186a0821115613185565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a3602055386127aa565b503461033f57604036600319011261033f5761126e612bf8612e17565b6024359033613c1d565b503461033f57606036600319011261033f57612c1c612e17565b612c24612eb5565b612c2c612ec4565b9060018060a01b03928391612c468360055416331461313a565b15612cd8571690811590811591612cd0575b5015612c9357806005549283166000805160206153208339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612c58565b9150501660018060a01b0319600654161760065580f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612d2c81613081565b51915afa612d38614502565b915015612d9557612d4b6103759161510e565b610f3c6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612d858151809260208686019101612e6d565b81010360148101845201826130d3565b50610375612da16150b7565b612d4b565b503461033f578060031936011261033f576040612dc161341d565b825191151582526020820152f35b905034610a26576040366003190112610a26576040602092612def612e17565b612df7612e2d565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a3557565b602435906001600160a01b0382168203610a3557565b606435906001600160a01b0382168203610a3557565b35906001600160a01b0382168203610a3557565b60005b838110612e805750506000910152565b8181015183820152602001612e70565b90602091612ea981518092818552858086019101612e6d565b601f01601f1916010190565b602435908115158203610a3557565b604435908115158203610a3557565b9181601f84011215610a35578235916001600160401b038311610a355760208381860195010111610a3557565b60e0906003190112610a35576001600160a01b03906004358281168103610a3557916024359081168103610a355790604435906064359060843560ff81168103610a35579060a4359060c43590565b6009811015612f68576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612fae575b6020831014612f9857565b634e487b7160e01b600052602260045260246000fd5b91607f1691612f8d565b60105460009291612fc882612f7e565b9081815260019283811690816000146130225750600114612fe857505050565b9092935060106000526020928360002092846000945b83861061300e5750505050010190565b805485870183015294019385908201612ffe565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161305057604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761305057604052565b604081019081106001600160401b0382111761305057604052565b608081019081106001600160401b0382111761305057604052565b61010081019081106001600160401b0382111761305057604052565b601f909101601f19168101906001600160401b0382119082101761305057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161305057601f01601f191660200190565b359061ffff82168203610a3557565b1561314157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561318c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156131d857565b634e487b7160e01b600052601160045260246000fd5b81156131f8570490565b634e487b7160e01b600052601260045260246000fd5b604d81116131d857600a0a90565b919082039182116131d857565b919082018092116131d857565b818103929160001380158285131691841216176131d857565b601454919291613292916132899161327f91613275906001600160801b038316906131c5565b9060801c906131ee565b93601f54906131c5565b6107aa8361320e565b808310613354576132a66132dc918461321c565b916132d76107a46132ce601e546132c86132bf8661320e565b60215490613229565b906131c5565b6107aa8461320e565b613236565b6509184e72a000908181029181830514901517156131d857670de0b6b3a7640000918281029281840514901517156131d85780156131f857600160ff1b918083146000198314166131d8570590600082121561334d5781146131d857600003905b808211613348575090565b905090565b509061333d565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561340457916040916133e06133f89594836020865161339c81613081565b82815201526133ba866133ad613cf8565b50505050509390506135d1565b815190936001600160801b03916020916133d6918416906131c5565b92015116906131ee565b8181106133fc57035b95815260186020522054613697565b9091565b5050806133e9565b50509192505080918190565b51908115158203610a3557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061345060248201612fb8565b0381600080955af18015613579578194829161353d575b509284156134e05783156134a657507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506134f360135460125490613229565b42116135035750601154906134a0565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613572575b61355681836130d3565b8101031261033f57602061356985613410565b94015138613467565b503d61354c565b508251903d90823e3d90fd5b1561358c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6135dc821515613585565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561172d57809261365f575b50509061365761364e61365c93620186a060225404906131c5565b601e54906131c5565b6131ee565b90565b9091506020823d821161368f575b8161367a602093836130d3565b8101031261033f57505161365761364e613633565b3d915061366d565b6136a2821515613585565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c315760009161370f575b50906136576136fb92602254906131c5565b620186a061370b601e54836131c5565b0491565b906020823d821161373a575b81613728602093836130d3565b8101031261033f5750516136576136e9565b3d915061371b565b6001600160a01b0316600081815260186020526040812054909261376591613697565b91835260176020526040832054801561386e57811561386e5781811061386e5782811015613864576014546137ae918391610de291613275906001600160801b038316906131c5565b90620186a09283830292808404851490151715613850576137d392916107aa9161321c565b91601b5491601c54936137e68585613236565b80820291848212600160ff1b82141661385057818305149015171561383c57058184820194851291129080158216911516176138285750808212613348575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613974575b156138cf577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176130505760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138a6565b156139a457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156139e957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a3557565b519060ff82168203610a3557565b6005811015612f685780613a5a5750565b60018103613aa25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613aef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613af857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613bb45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117605781516001600160a01b03811615613bae579190565b50600190565b50505050600090600390565b60001981146131d85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613c8182613066565b60006040838281528260208201520152565b60405190613ca082613081565b6014546001600160801b038116835260801c6020830152565b60405190613cc682613081565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116131d857565b613d00613c74565b5060006020604051613d1181613081565b828152015260006020604051613d2681613081565b8281520152604051613d3781613066565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190613d69613c93565b91613d72613cb9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015610c31576000906141ab575b8851613ddd92506001600160801b031690613229565b94856141765760005b60208501518190613e00906001600160401b03164261321c565b95861561414b575050426001600160401b031660208b8101919091528901516001600160801b031615614101575087518951602091613eb491670de0b6b3a764000091613e6a918991613e65916001600160401b0316906001600160801b03166131c5565b6131c5565b8b5191900498906001600160801b0390613e8990828c16908316613cdf565b168b52613657620186a0613e9f601a548c6131c5565b858e01516001600160801b03169190046131c5565b60408b0180519197916001600160801b03808a169291613ed79084908316613cdf565b169052898301805190916001600160801b0391613ef691908316613cdf565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c31576000906140cd575b8851613f5392506001600160801b031690613229565b8061409757506000925b602b548481811015613ff757613f73908261321c565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156131d857613fd991613fa1916131ee565b91613657613fc6613fc0602f5493613e6560018060401b0397806131c5565b83613229565b8c519092906001600160401b03166131c5565b16808952602e546001600160401b0316908111613ff35750565b8852565b9050602c5480821161400857505050565b6140119161321c565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156131d85761365761405a613fc061404c61406a95602d54906131ee565b93613e65602f5495806131c5565b8b516001600160401b03166131c5565b602e5460401c6001600160401b031680821161408f575b506001600160401b03168852565b905038614081565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156131d8576140c7916131ee565b92613f5d565b506020813d6020116140f9575b816140e7602093836130d3565b81010312610a3557613f539051613f3d565b3d91506140da565b8951603054999a91999498509296509450506001600160401b0391821692501681900361413f575b509392614134613cb9565b926000926000929190565b81526001925038614129565b98509950505095505050505091614160613c93565b91614169613cb9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156131d857866141a6916131ee565b613de6565b506020813d6020116141d7575b816141c5602093836130d3565b81010312610a3557613ddd9051613dc7565b3d91506141b8565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b61432460208061431061427e613cf8565b93969593909290156143265750505060018060401b036030541660008060008051602061538083398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091614308908416614229565b0151166141df565b61431c8382511661424b565b015116614204565b565b83516040519384526001600160401b031692600080516020615380833981519152908990a46142b3565b1561435757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561439457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143d457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a355790565b1561442e57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a35576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a35570160208101919035906001600160401b038211610a35578136038313610a3557565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561452d573d9061451382613110565b9161452160405193846130d3565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261455581613081565b51916001600160a01b03165afa61456a614502565b9080614595575b1561458f57602081805181010312610a3557602061365c9101613a3b565b50601290565b506020815114614571565b919060018060a01b0380600094168452602060178152604085205490811561468e57601881526040862054801561468757816145da613c93565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561172d578097614651575b50506133d661463661364e61464c969798620186a060225404906131c5565b95613e6560018060801b039485875116906131c5565b111590565b9096508187813d8311614680575b61466981836130d3565b8101031261033f57509451946133d6614636614617565b503d61465f565b5050505050565b5060019450505050565b91821580156146d3575b61335457600181018091116131d8576146c1926132c86136579261320e565b600581018091116131d857600a900490565b5081156146a2565b6001600160a01b03163381036146ef575050565b60008181526020906003825260409182822033835281528483832054106147585783825260038152828220338352815282822054600101614731575050505050565b61474c9382526003815282822090338352522091825461321c565b90553880808080614687565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c31578493600091614841575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c315760009161480d575b50905090565b82813d831161483a575b61482181836130d3565b8101031261033f575061483390613410565b8038614807565b503d614817565b9091929381813d8311614878575b61485981836130d3565b81010312610a26575190828216820361033f57508392919060446147cd565b503d61484f565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b0391821690821603919082116131d857565b929060208093620186a06148d78354836131c5565b04926148e1613c93565b966148ec8584613229565b60409586516148fa81613081565b6000808252960186905289516001600160801b0392908316614b8157826149288c8280855b16915116613cdf565b168b526149578a8c018461494181851682845116613cdf565b1680915261495285849e5116614229565b6141df565b6016548015908115614b72575b5015614b3457859060018060a01b0380951680895260178c5289892061498b838254613229565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b13575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b09578594614ada575b508397614a0d613cb9565b818101916103e88484511610614aa6575090614a40839283614a37614a47968a16828451166148a9565b1680915261424b565b5116614204565b6009541690600e5490823b15610a3a579184939184879694614a7f985198899586948593630208d92960e11b8552306004860161487f565b03925af1918215614a9c575050614a935750565b6143249061303d565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b02575b614af281836130d3565b81010312610a3a57519238614a02565b503d614ae8565b86513d87823e3d90fd5b82600a5416865260018952614b2c878720918254613229565b9055386149c4565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614964565b828b8b81019280614bb4614ba5614b9b86885116846131c5565b86865116906131ee565b95856116ea81875116896131c5565b10614bc6575b9082806149289361491f565b92908280614bd661492894613bc0565b959293505050614bba565b90816020910312610a35575161ffff81168103610a355790565b809103906101408212610a35576040805192614c1684613066565b60808112610a35578151614c298161309c565b614c3284613a27565b815260208401516020820152614c49838501613a27565b838201526060840151606082015284526080607f19820112610a355781908151614c728161309c565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a3557614ccb610120825193614cb685613081565b614cc36101008201613410565b855201613410565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919261365c959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144e1565b15614d9957565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614df1575090925050565b90816116ea81614e14614e0a614e1d96865116886131c5565b828a5116906131ee565b975116876131c5565b10614e2457565b9061365c90613bc0565b92919060009160018060a01b0394858316845260206017815260408520548084116150af575b50821561507357614e63613c93565b968582604051614e7281613081565b8281520152614e818489614dd0565b9560018060801b039384614e9a818a16828d51166148a9565b168a52614ec4848b0186614eb3818a16828451166148a9565b16809152614952878b9d5116614229565b82871682526017845260408220614edc87825461321c565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611817578592615044575b5080602554169492803b15610a355782600091614f549a83604051809d81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c31577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661502e575b50614f969082841690613cdf565b1660018060801b031960255416176025558383169081835260278752604083206028549081855288526040842054821160001461500757505081526027855260408120602854825285528060408120555b1561500157508060095416955b60405195865216941692a4565b95614ff4565b90918352602787526040832090835286526150276040832091825461321c565b9055614fe7565b61503991945061303d565b600092614f96614f88565b9091508681813d831161506c575b61505c81836130d3565b81010312610a3a57519038614f1e565b503d615052565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e54565b604051906150c482613081565b60038252623f3f3f60e81b6020830152565b9081518110156150e7570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146131d85760010190565b80516040811061518657508051810190602081818401930312610a35576020810151906001600160401b038211610a35570181603f82011215610a3557602081015161515981613110565b9261516760405194856130d3565b81845260408284010111610a355761365c916040602085019101612e6d565b602092908303615274576000805b60ff81168581109081615255575b50156151b6576151b1906150fd565b615194565b9260ff809416926151c684613110565b936151d460405195866130d3565b8085526151e3601f1991613110565b013687860137825b85811687811080615238575b1561522d5761522891906152226001600160f81b031961521783886150d6565b5116871a91886150d6565b536150fd565b6151eb565b505094505050905090565b506001600160f81b031961524c82866150d6565b511615156151f7565b6001600160f81b0319915061526a90866150d6565b51161515386151a2565b91505061365c6150b756fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207856c00f36871d3751eaea70a034e9d1cefb0b7e0c2d026f3891495b2315554464736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556154339283620002078439608051836139fe015260a05183613ac9015260c051836139c8015260e05183613a4d01525182613a7301525181613a2a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201e7baeb51d167f3c84cae7731ceaa035d017da0afd2b45d9d315b493b5f2515064736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201e7baeb51d167f3c84cae7731ceaa035d017da0afd2b45d9d315b493b5f2515064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLiquidation.json b/src/artifacts/tapioca-bar/SGLLiquidation.json index 2b25c5bd..36c7322a 100644 --- a/src/artifacts/tapioca-bar/SGLLiquidation.json +++ b/src/artifacts/tapioca-bar/SGLLiquidation.json @@ -1149,19 +1149,14 @@ "type": "uint256[]" }, { - "internalType": "bytes[]", - "name": "collateralToAssetSwapDatas", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "usdoToBorrowedSwapData", - "type": "bytes" + "internalType": "contract IMarketLiquidatorReceiver[]", + "name": "liquidatorReceivers", + "type": "address[]" }, { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" + "internalType": "bytes[]", + "name": "liquidatorReceiverDatas", + "type": "bytes[]" } ], "name": "liquidate", @@ -1182,13 +1177,13 @@ "type": "address" }, { - "internalType": "contract ISwapper", - "name": "swapper", + "internalType": "contract IMarketLiquidatorReceiver", + "name": "liquidatorReceiver", "type": "address" }, { "internalType": "bytes", - "name": "collateralToAssetSwapData", + "name": "liquidatorReceiverData", "type": "bytes" } ], @@ -1236,19 +1231,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1932,8 +1914,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556155bc928362000207843960805183612c32015260a05183612cfc015260c05183612bfc015260e05183612c8101525182612ca701525181612c5e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe60c060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121995750826302ce728f1461203157826306fdde0314611f79578263078dfbe714611e82578263095ea7b314611e575782630996efb7146119b65782630c4e84f01461189f57826318160ddd1461187c5782631c9e379b146118435782631da8bf101461179b57826323b872dd146115fd57848363313ce5671461156257508263331960ff1461154257826334d441d0146115225782633644e5151461150457826337b6b7b9146114e457826338d52e0f146114ba5782633ba0b9a91461149a5782633f741adb1461147157826340626d8b1461145157826344de240a14611431578263473e3ce71461141157826348e4163e146113d85782634d7f2a34146113b85782634e71e0c814611315578263529898f2146112f557826352f353eb146112cb57826355140232146112a157826355c2ab941461127757826357935462146112575782635dfe04e8146111f75782636c3d8b8f146111cd57826370a0823114611194578263727785471461115c57826374645ff31461112f5782637dc0d1d0146111055782637ecebe00146110ce5782637fa0b84e1461109c578263821226e81461107c5782638285ef40146110485782638c5d0ed3146110285782638da5cb5b14610ffe578263910dd7c814610df7578263959916dc14610dd857826395d89b4114610d1f57826399a9702814610cee5782639c5d719214610cce5782639e15e89f14610c95578263a28e6b82146108bb578263a9059cbb146107df578263b0e21e8a146107bf578263b27c0e7414610784578263bb4cfe3b14610764578263c23ea21f1461073a578263ce8849ed14610710578263cfba1b4614610612578263d505accf146104c25750508063d8dfeb451461049a578063dd62ed3e14610452578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e4578063ea64dd56146103c6578063eec0f42e146103a8578063f42760b71461038a578063f8ba4cff1461036b578063f9557ccb146103355763ffe04c661461031457600080fd5b34610331578160031936011261033157602090602b549051908152f35b5080fd5b5034610331578160031936011261033157602554905190819061036790608081901c906001600160801b03168361248a565b0390f35b82346103875780600319360112610387576103846135b8565b80f35b80fd5b5034610331578160031936011261033157602090602c549051908152f35b5034610331578160031936011261033157602090600c549051908152f35b5034610331578160031936011261033157602090601f549051908152f35b503461033157816003193601126103315760065490516001600160a01b039091168152602090f35b5034610331578160031936011261033157602090601d549051908152f35b503461033157816003193601126103315760095490516001600160a01b039091168152602090f35b50346103315780600319360112610331578060209261046f6121df565b6104776121fa565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b5034610331578160031936011261033157600b5490516001600160a01b039091168152602090f35b8492503461060e576104d336612294565b9397949690928042116105dd5793869361059a938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361051585612f52565b905588519660208801986000805160206154c78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b519020610563612bf9565b915190602082019261190160f01b8452602283015260428201526042815261058a81612430565b519020612ecd565b919091612dce565b16036105ac5750610384939450612faf565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206154878339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206154678339815191526044820152606490fd5b8280fd5b838583346103315760a0366003190112610331576001600160401b03813581811161070c57610644903690840161250c565b916024358181116107085761065c903690860161250c565b60449291923582811161070457610676903690880161250c565b939092606435908111610700576106909036908901612267565b6084359890979196906001600160a01b038a168a036106fc57808b52600760205260ff8c8c2054166106c85750610384999a506138a6565b60649060208d519162461bcd60e51b8352820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152fd5b8a80fd5b8880fd5b8780fd5b8580fd5b8380fd5b5050503461033157816003193601126103315760085490516001600160a01b039091168152602090f35b5050503461033157816003193601126103315760265490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601e549051908152f35b505050346103315781600319360112610331576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b50505034610331578160031936011261033157602090601a549051908152f35b505050346103315780600319360112610331576020916107fd6121df565b826024359283158015906108a9575b61083c575b50519182526001600160a01b0316903390600080516020615527833981519152908590a35160018152f35b338152600186528181205461085385821015612d22565b6001600160a01b038416908533839003610870575b505050610811565b6108849161087f841515612d67565b61261e565b338352600188528383205581522061089d83825461262b565b90558238808085610868565b50336001600160a01b0384161461080c565b83858334610331576080366003190112610331576108d76121df565b906108e06121fa565b6001600160a01b0392604435848116939190849003610708576064356001600160401b038111610c91576109179036908401612267565b9190926109298760055416331461253c565b86600f541691895163d6d7d52560e01b81528a816020958686830152818d816109546024820161234c565b03925af1908115610c41578a908b92610c61575b508181610c57575b5015610c4b5780610986916011555b1515613683565b61098e6135b8565b818389600a54168c519283809263433e762d60e01b82525afa908115610c41576109c6898b94936109cb938e91610c14575b50613750565b6136f4565b169687895260178352826109f38b8b2054620186a06109ec602154836125c7565b049061262b565b9160095416916064610a17610a0e600c5493601154906125c7565b602254906125f0565b918d519485938492638eb22cdd60e01b84528884015260248301528d60448301525afa908115610c0a578991610bdd575b50878952601883528989205411610b9d575090868098610b4a9493886103849a52601881528183205498610aef610a7d613025565b82865260178452610aea610adf868820549288878951610a9c81612402565b82815201528681019360018060801b03928382818094868a8381511615600014610b5057505081610ad2915b1682885116613737565b1685521682875116613737565b168094525116613596565b613571565b8084526017825283838120556027825282842060285485528252838381205580845260188252610b248385205460155461261e565b6015558352601881528282812055602781528183209060295484525281205536916124bf565b92614b82565b610ad292610b89610b7f86610b76610b6c8280985116866125c7565b82875116906125f0565b945116846125c7565b848c5116906125f0565b1015610ac857610b9890612f52565b610ac8565b816064928a519262461bcd60e51b845283015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508281813d8311610c03575b610bf48183612467565b8101031261070057518a610a48565b503d610bea565b8a513d8b823e3d90fd5b610c349150883d8a11610c3a575b610c2c8183612467565b8101906136da565b8f6109c0565b503d610c22565b8b513d8c823e3d90fd5b5061098660115461097f565b905015158c610970565b9050610c8391508b3d8d11610c8a575b610c7b8183612467565b8101906129cf565b908c610968565b503d610c71565b8680fd5b5050503461033157806003193601126103315761036790610cc0610cb76121df565b60243590612867565b9093919251938493846124f6565b50505034610331578160031936011261033157602090602d549051908152f35b50505034610331578060031936011261033157602090610d18610d0f6121df565b60243590612aef565b9051908152f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916395d89b4160e01b83528152610d6181612402565b51915afa610d6d615264565b915015610dc957610d7d906152d5565b905b610db760238251809462746d2d60e81b6020830152610da78151809260208686019101612210565b8101036003810185520183612467565b51918291602083526020830190612233565b50610dd2615294565b90610d7f565b5050503461033157816003193601126103315760209081549051908152f35b9291503461070c578160031936011261070c5780356001600160401b038111610ffa5736602382011215610ffa57610e3890369060248185013591016124bf565b926024359161ffff831680930361070857610100938486805181010312610c9157602090610e678288016129c2565b93610e73828901612dac565b90610e8060608a01612dac565b9860808101519860a082015192610e9960c08401612dc0565b91818401519301519360018060a01b03808097169d169a814211610fc957928d8f819897948f948f8f968f918f959a8f8c8195610f639f9c6105929f50600014610fb4576000805160206154c78339815191529a5b825289522093845494610f0086612f52565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f318161244b565b519020610f3c612bf9565b908951908b82019261190160f01b8452602283015260428201526042815261058a81612430565b1603610f8557505050600014610f7c5761038492612faf565b61038492612f61565b5162461bcd60e51b815291820152601e6024820152600080516020615487833981519152604482015260649150fd5b6000805160206155078339815191529a610eee565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206154678339815191526044820152606490fd5b8480fd5b5050503461033157816003193601126103315760055490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601b549051908152f35b50505034610331578160031936011261033157601454905190819061036790608081901c906001600160801b03168361248a565b50505034610331578160031936011261033157602090602f549051908152f35b505050346103315780600319360112610331576020906110c76110bd6121df565b6024359033612f61565b5160018152f35b5090503461060e57602036600319011261060e5760209282916001600160a01b036110f76121df565b168252845220549051908152f35b50505034610331578160031936011261033157600f5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157805161036791610db7826111558161234c565b0383612467565b5090503461060e57602036600319011261060e5735916009831015610387575060ff6111896020936122e3565b541690519015158152f35b505050346103315760203660031901126103315760209181906001600160a01b036111bd6121df565b1681526001845220549051908152f35b50505034610331578160031936011261033157600a5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157608090611215613006565b5061121e61308a565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610331578160031936011261033157602090601c549051908152f35b50505034610331578160031936011261033157602e548151911c6001600160401b03168152602090f35b50505034610331578160031936011261033157602e5490516001600160401b039091168152602090f35b5050503461033157816003193601126103315760305490516001600160401b039091168152602090f35b505050346103315781600319360112610331576020906021549051908152f35b8482853461060e578260031936011261060e576006546001600160a01b03929091838316919033839003611375575050806005549384166000805160206154e78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50505034610331578160031936011261033157602090602a549051908152f35b505050346103315760203660031901126103315760209181906001600160a01b036114016121df565b1681526017845220549051908152f35b505050346103315781600319360112610331576020906015549051908152f35b50505034610331578160031936011261033157602090600e549051908152f35b505050346103315781600319360112610331576020906016549051908152f35b508284346103875760603660031901126103875750610d186020926044359060243590356127a0565b505050346103315781600319360112610331576020906011549051908152f35b50505034610331578160031936011261033157600d5490516001600160a01b039091168152602090f35b505050346103315781600319360112610331576020906012549051908152f35b50505034610331578160031936011261033157602090610d18612bf9565b505050346103315781600319360112610331576020906019549051908152f35b505050346103315781600319360112610331576020906013549051908152f35b92505034610331578160031936011261033157600d54835163313ce56760e01b6020820190815292815283926001600160a01b0390921691906115a481612402565b51915afa916115b1615264565b92806115f2575b156115e357602083805181010312610387575060ff6115da6020809401612dc0565b915b5191168152f35b506020915060ff6012916115dc565b5060208351146115b8565b50828434610387576060366003190112610387576116196121df565b906116226121fa565b604435918261165e575b508351918252602094506001600160a01b03908116921690600080516020615527833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061168987831015612d22565b851692838a0361169d575b5050505061162c565b898552600283528885203386528352888520549060018201611707575b5050928260209960018a946116e68a8e9961087f6000805160206155278339815191529c9a1515612d67565b92855252838320558152206116fc85825461262b565b905591878080611694565b87821061175d57509260209960018a946116e68a8e9996611738826000805160206155278339815191529d9b61261e565b86895260028552898920338a52855289892055969950505094505099819496506116ba565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461060e576117ac36612294565b9397949690928042116105dd57938693611831938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117ee85612f52565b905588519660208801986000805160206155078339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b16036105ac5750610384939450612f61565b505050346103315760203660031901126103315760209181906001600160a01b0361186c6121df565b1681526018845220549051908152f35b5050503461033157816003193601126103315760209060255460801c9051908152f35b5090503461060e578160031936011261060e57803590600982101561070c576118c6612258565b6008549093906001600160a01b0316330361197c5760ff6118e6846122e3565b54161515931515938414611944575050808260ff611906611934946122e3565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122e3565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461060e5761018036600319011261060e576024356001600160a01b0381811691829003610ffa576001600160401b03604435818111610c9157611a009036908601612267565b916064359484861680960361070057611a1e8560055416331461253c565b863580611e17575b5080611dd9575b5082611c7b575b50505081611c3b575b505060843580611c23575b5060a43580611c0b575b5060c43580611bf4575b5060e43580611bd0575b506101043580611bac575b506101243580611b7b575b506101443580611b09575b50610164359182611a96578380f35b601e548310611aab575050601f553880808380f35b906020608492519162461bcd60e51b8352820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b18620186a0821115612587565b601f548111611b2a57601e5538611a87565b506020608492519162461bcd60e51b8352820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a360165538611a7c565b611bba620186a08210612587565b611bc7601b548211612587565b601c5538611a71565b611bde620186a08210612587565b611beb601c548210612587565b601b5538611a66565b611c02620186a08210612587565b601d5538611a5c565b611c1a620186a0821115612587565b601a5538611a52565b611c32620186a0821115612587565b60195538611a48565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880611a3d565b8211611dc6578190611c8e601054612312565b601f8111611d6f575b508790601f8311600114611cf9578892611cee575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158580a1388080611a34565b013590503880611cac565b60108952600080516020615567833981519152925090601f1984168960205b828210611d57575050908460019594939210611d3d575b505050811b01601055611cc2565b0135600019600384901b60f8161c19169055388080611d2f565b80600185978294968801358155019601930190611d18565b60108952909150600080516020615567833981519152601f840160051c810160208510611dbf575b90601f8594930160051c01905b818110611db15750611c97565b898155849350600101611da4565b5080611d97565b634e487b7160e01b875260418552602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a2d565b611e26620186a0821115612587565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a360205538611a26565b505050346103315780600319360112610331576020906110c7611e786121df565b6024359033612faf565b8482853461060e57606036600319011261060e57611e9e6121df565b91611ea7612258565b916044359283151584036107085760018060a01b03948591611ece8360055416331461253c565b15611f60571692831590811591611f58575b5015611f1d575050806005549283166000805160206154e78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ee0565b93505050501660018060a01b0319600654161760065580f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916306fdde0360e01b83528152611fbb81612402565b51915afa611fc7615264565b91501561202257611fd7906152d5565b905b610db760348251809473546170696f63612053696e67756c61726974792d60601b60208301526120128151809260208686019101612210565b8101036014810185520183612467565b5061202b615294565b90611fd9565b83858334610331578160031936011261033157600f54835163d6d7d52560e01b81526020838201529290849084906001600160a01b03168184816120776024820161234c565b03925af1801561218d578193829161216a575b5091831561210f5782156120d557507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c882918260115580a25b42601355825191151582526020820152f35b606490602086519162461bcd60e51b835282015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9150506121216013546012549061262b565b421161213057506011546120c3565b606490602084519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9050612184919350843d8611610c8a57610c7b8183612467565b9290928561208a565b508351903d90823e3d90fd5b8590853461060e578060031936011261060e576020926121b76121df565b6121bf6121fa565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036121f557565b600080fd5b602435906001600160a01b03821682036121f557565b60005b8381106122235750506000910152565b8181015183820152602001612213565b9060209161224c81518092818552858086019101612210565b601f01601f1916010190565b6024359081151582036121f557565b9181601f840112156121f5578235916001600160401b0383116121f557602083818601950101116121f557565b60e09060031901126121f5576001600160a01b039060043582811681036121f5579160243590811681036121f55790604435906064359060843560ff811681036121f5579060a4359060c43590565b60098110156122fc576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612342575b602083101461232c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612321565b6010546000929161235c82612312565b9081815260019283811690816000146123b6575060011461237c57505050565b9092935060106000526020928360002092846000945b8386106123a25750505050010190565b805485870183015294019385908201612392565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176123ec57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123ec57604052565b6001600160401b0381116123ec57604052565b608081019081106001600160401b038211176123ec57604052565b61010081019081106001600160401b038211176123ec57604052565b601f909101601f19168101906001600160401b038211908210176123ec57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116123ec57601f01601f191660200190565b9291926124cb826124a4565b916124d96040519384612467565b8294818452818301116121f5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156121f5578235916001600160401b0383116121f5576020808501948460051b0101116121f557565b1561254357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561258e57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156125da57565b634e487b7160e01b600052601160045260246000fd5b81156125fa570490565b634e487b7160e01b600052601260045260246000fd5b604d81116125da57600a0a90565b919082039182116125da57565b919082018092116125da57565b818103929160001380158285131691841216176125da57565b906509184e72a000918281029281840514901517156125da57565b90670de0b6b3a7640000918281029281840514901517156125da57565b81156125fa57600160ff1b81146000198314166125da570590565b6014546126df916126ce91906126c4906001600160801b038316906125c7565b9060801c906125f0565b91620186a0918291601f54906125c7565b04808310612798576126f1908361261e565b601e546021548301908184116125da57839161270c916125c7565b0491828103906000809412818312811691831390151617612784579061273d61273761274293612651565b9161266c565b612689565b908082121561277d57600160ff1b82146127695703905b808211612764575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612759565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916127df916127d0916127c6916126c4906001600160801b038316906125c7565b93601f54906125c7565b6127d983612610565b906125f0565b908183106127985761273d6127376128396127fd61283e958761261e565b9361283461282e612825601e5461281f61281686612610565b6021549061262b565b906125c7565b6127d984612610565b91612610565b612638565b612651565b600081121561286157600160ff1b81146125da5760000390808211612764575090565b90612759565b9160018060a01b0380931691600093838552602060178152604091828720549081156129b5578783855161289a81612402565b82815201526128a761308a565b50505050509190506128ba8615156129ec565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156129ab57899161297c575b509161295c612970979899949261293788612932612929601898620186a060225404906125c7565b601e54906125c7565b6125f0565b815190936001600160801b03918691612952918416906125c7565b92015116906125f0565b81811061297457035b978352522054612a38565b9091565b505082612965565b90508381813d83116129a4575b6129938183612467565b81010312610700575161295c612901565b503d612989565b85513d8b823e3d90fd5b5086955085949350505050565b519081151582036121f557565b91908260409103126121f55760206129e6836129c2565b92015190565b156129f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612a438215156129ec565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612ae357600091612ab0575b5090612932612a9c92602254906125c7565b620186a0612aac601e54836125c7565b0491565b906020823d8211612adb575b81612ac960209383612467565b81010312610387575051612932612a8a565b3d9150612abc565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612b1291612a38565b918352601760205260408320548015612bf3578115612bf357818110612bf35782811015612be957601454612b5b91839161087f916126c4906001600160801b038316906125c7565b90620186a09283830292808404851490151715612bd557612b8092916127d99161261e565b91601b5491601c5493612b938585612638565b80820291848212600160ff1b821416612bd557818305149015171561278457058184820194851291129080158216911516176127695750808212612764575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cf9575b15612c54577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176123ec5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2b565b15612d2957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d6e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036121f557565b519060ff821682036121f557565b60058110156122fc5780612ddf5750565b60018103612e275760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e745760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e7d57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f395781516001600160a01b03811615612f33579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146125da5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613013826123d1565b60006040838281528260208201520152565b6040519061303282612402565b6014546001600160801b038116835260801c6020830152565b6040519061305882612402565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116125da57565b613092613006565b50600060206040516130a381612402565b8281520152600060206040516130b881612402565b82815201526040516130c9816123d1565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906130fb613025565b9161310461304b565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015612ae35760009061353d575b885161316f92506001600160801b03169061262b565b94856135085760005b60208501518190613192906001600160401b03164261261e565b9586156134dd575050426001600160401b031660208b8101919091528901516001600160801b03161561349357508751895160209161324691670de0b6b3a7640000916131fc9189916131f7916001600160401b0316906001600160801b03166125c7565b6125c7565b8b5191900498906001600160801b039061321b90828c16908316613071565b168b52612932620186a0613231601a548c6125c7565b858e01516001600160801b03169190046125c7565b60408b0180519197916001600160801b03808a1692916132699084908316613071565b169052898301805190916001600160801b039161328891908316613071565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612ae35760009061345f575b88516132e592506001600160801b03169061262b565b8061342957506000925b602b54848181101561338957613305908261261e565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156125da5761336b91613333916125f0565b91612932613358613352602f54936131f760018060401b0397806125c7565b8361262b565b8c519092906001600160401b03166125c7565b16808952602e546001600160401b03169081116133855750565b8852565b9050602c5480821161339a57505050565b6133a39161261e565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156125da576129326133ec6133526133de6133fc95602d54906125f0565b936131f7602f5495806125c7565b8b516001600160401b03166125c7565b602e5460401c6001600160401b0316808211613421575b506001600160401b03168852565b905038613413565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156125da57613459916125f0565b926132ef565b506020813d60201161348b575b8161347960209383612467565b810103126121f5576132e590516132cf565b3d915061346c565b8951603054999a91999498509296509450506001600160401b039182169250168190036134d1575b5093926134c661304b565b926000926000929190565b815260019250386134bb565b985099505050955050505050916134f2613025565b916134fb61304b565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156125da5786613538916125f0565b613178565b506020813d602011613569575b8161355760209383612467565b810103126121f55761316f9051613159565b3d915061354a565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b61364e60406020806135c861308a565b939995939092901561365e57505050600180871b0360305416600080600080516020615547833981519152878a51838152a45b600180871b03815116848201519160018060801b0319978891015160801b1691600160401b600160801b039060401b16171760245560018060801b0392816136468580945116613596565b015116613571565b83511692015160801b1617602555565b600080516020615547833981519152876001808c1b03865116948b51908152a46135fb565b1561368a57565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b908160209103126121f5575161ffff811681036121f55790565b156136fb57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b6001600160801b0391821690821603919082116125da57565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612ae35784936000916137ff575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612ae3576000916137cb575b50905090565b82813d83116137f8575b6137df8183612467565b8101031261038757506137f1906129c2565b80386137c5565b503d6137d5565b9091929381813d8311613836575b6138178183612467565b810103126103315751908282168203610387575083929190604461378b565b503d61380d565b1561384457565b60405162461bcd60e51b81526020600482015260146024820152730a68e987440d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606490fd5b91908110156138905760051b0190565b634e487b7160e01b600052603260045260246000fd5b9695949397909760805260a0526138be82881461383d565b6000938715614ae657600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168189816138fb6024820161234c565b03925af19687156147865786908798614ac2575b508781614ab8575b5015614aae57866011555b61392d871515613683565b6139356135b8565b6026546001600160a01b031680614333575b50505061395582881461383d565b61396083881461383d565b8396845b8181106139b55750505050505050501561397a57565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6139c86139c382848b613880565b614fa6565b6139d28882614ff5565b156139e7575b506139e290612f52565b613964565b986139f190612f52565b986139fd828686613880565b35908683101561431f5760805191601e19833603018460051b8401351215610700576001600160401b03600585901b8401358401351161070057600584901b83013583018035360360209091011361070057613a598a83612aef565b90613a658b1515615102565b600954600c546001600160a01b038581168d52601860209081526040808f2054905163442c159960e01b815260048101949094526024840152604483018e9052919283916064918391165afa908115614314578c908c926142de575b50612932613ad292602254906125c7565b6001600160a01b0384168b52601760205260408b2054613af39082906126a4565b601d54806142c6575b5080911115614291578a91818111156142895750925b6001600160a01b038116825260176020526040822054808511614281575b84613b3a9161261e565b6001600160a01b038216835260176020526040832055613b58613025565b60208101516001600160801b031661424c5750835b60208d6064613b8c620186a0613b856021548b6125c7565b048961262b565b613ba7610a0e60018060a01b036009541694600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa9283156141cc578c93614218575b506001600160a01b0382168c52601860205260408c205483116141d7576001600160a01b0382168c52601860205260408c208054613c1890859061261e565b9055613c25851515614fba565b601454908c6001600160801b03613c40888216828616613737565b16916001600160801b031990613c66906001600160801b0316858316851760801c613737565b60801b169216171760145560018060a01b0360095416946020600e54606460405180998193638eb22cdd60e01b83526004830152896024830152600160448301525afa9586156141cc578c96614198575b50600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa90811561418d5791613d0f6109c68f93613dfd95613dea959161416e575b5060a0516001600160a01b031690613750565b8d60159086825481811160001461416657613d2a925061261e565b905b558d60018060a01b03851690528d60279081602052604081206029908154908184526020526040832054891160001461413557506001600160a01b0387168252602083815260408084209254845291905281208190555b6001600160a01b0386168152602082815260408083206028805480865291909352908320549193918c1115614106575060018060a01b038716825260205260408120915490526020528d60408120555b8860051b01356080510136906020813591016124bf565b60a0516001600160a01b03163085614b82565b60018060a01b036009541692600e5495604051627eeac760e11b815260208180613e2b8b3060048401614b51565b0381895afa90811561403f57908e9182916140ce575b50620186a091613e5f613e7b9260018060801b03602554169061261e565b93808511156140c757613e7391508461261e565b935b846125c7565b04968791613e89838561261e565b96879283614050575b505082613fc1575b90613ee99361087f92613eb88561087f8560018060801b039461261e565b602554916001600160801b0391613ed29116828416613071565b6001600160801b031990921691161760255561261e565b6040518c81523090600080516020615447833981519152602060018060a01b0360a0511692a460405190613f1c82612402565b6001825260203681840137815115613fad576001600160a01b03166020820190815260405191518291908d905b808210613f8b5750505091816000805160206154a7833981519152926139e2989796959403902093613f826040519283923396846124f6565b0390a4906139d8565b82516001600160a01b0316845260209384019390920191600190910190613f49565b634e487b7160e01b8c52603260045260248cfd5b600954600e549193506001600160a01b03169150813b1561404c57888f91926140039383604051809681958294630208d92960e11b8452333060048601614b27565b03925af1801561403f57918e87928a9461401f575b5050613e9a565b90925061402d91935061241d565b61403b578487918e38614018565b8c80fd5b8e604051903d90823e3d90fd5b8e80fd5b600a54929450909250906001600160a01b0316823b156140c3578f919261409293838a9360405196879586948593630208d92960e11b85523060048601614b27565b03925af1801561403f57918e87928a9415613e92579092506140b591935061241d565b61403b578487918e38613e92565b8f80fd5b5093613e75565b9150506020813d6020116140fe575b816140ea60209383612467565b810103126121f557518d90620186a0613e41565b3d91506140dd565b906040935060018060a01b03881683526020528282209082526020522061412e89825461261e565b9055613dd3565b905060018060a01b038716825282602052604082209082526020526040812061415f88825461261e565b9055613d83565b505090613d2c565b614187915060203d602011610c3a57610c2c8183612467565b38613cfc565b6040513d8f823e3d90fd5b9095506020813d6020116141c4575b816141b460209383612467565b810103126121f557519438613cb7565b3d91506141a7565b6040513d8e823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011614244575b8161423460209383612467565b810103126121f557519138613bd9565b3d9150614227565b805161427b9190614266906001600160801b0316876125c7565b6020909101516001600160801b0316906125f0565b93613b6d565b935083613b30565b905092613b12565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90620186a06109ec6142d893836125c7565b38613afc565b9150506020813d60201161430c575b816142fa60209383612467565b810103126121f557518b612932613ac1565b3d91506142ed565b6040513d8d823e3d90fd5b634e487b7160e01b88526032600452602488fd5b606060049160405192838092637c8be05b60e01b82525afa9081156147da5787908892614a6b575b5015613947578690875b868110614a46575010156143795780613947565b95979496949561438e945036935091506124bf565b9383908490859061439d613025565b90875b87811061481957505090610aea61440c926143bc851515614fba565b80516001600160801b03906143d690878316908316613737565b16815260208101805190936001600160801b03916143f8918316908316613737565b1692839052516001600160801b0316613596565b6144188260155461261e565b601555600954600e54604051638eb22cdd60e01b81526004810191909152602481018390526001604482015296906001600160a01b0316602088606481845afa9788156147da5787986147e5575b50602654600c54906001600160a01b0316823b15610700576144a592899283889360405196879586948593630208d92960e11b85523060048601614b27565b03925af180156147da576147c7575b5060018060a01b03602654169060018060a01b03600954166020600c5460646040518094819363442c159960e01b83526004830152896024830152600160448301525afa90811561474d578891614791575b509061453792604092898451809681958294633965907b60e01b845260048401528760248401526044830190612233565b03925af1801561478657614758575b5060018060a01b036009541692600e5492604051627eeac760e11b815260208180614575883060048401614b51565b0381895afa90811561474d578891614719575b506025549196939291620186a0916145c1916145b8916145b1916001600160801b03169061261e565b9a8b61261e565b601954906125c7565b049586936145cf858b61261e565b92604051918291908b905b8082106146e15750505090806000805160206154a783398151915293920390209361460c6040519283923396846124f6565b0390a4813b1561070c578261463c92859283604051809681958294630208d92960e11b8452333060048601614b27565b03925af180156146d6579083916146c2575b506146a59190506001600160801b03614667828661261e565b602554916001600160801b03916146819116828416613071565b6001600160801b03199092169116176025556026546001600160a01b03169361261e565b9160405191825260008051602061544783398151915260203093a4565b6146cb9061241d565b61033157813861464e565b6040513d85823e3d90fd5b9180949596979850929092359060018060a01b0382168092036121f55760208160019382935201940192018a979695949392916145da565b90506020813d602011614745575b8161473460209383612467565b810103126121f557516145c1614588565b3d9150614727565b6040513d8a823e3d90fd5b6147799060403d60401161477f575b6147718183612467565b810190614b6c565b50614546565b503d614767565b6040513d88823e3d90fd5b9190506020823d6020116147bf575b816147ad60209383612467565b810103126121f5579051614537614506565b3d91506147a0565b6147d39096919661241d565b94386144b4565b6040513d89823e3d90fd5b9097506020813d602011614811575b8161480160209383612467565b81010312610c9157519638614466565b3d91506147f4565b6148276139c3828a8a613880565b6148318382614ff5565b15614846575b5061484190612f52565b6143a0565b9093949589614855848461514c565b918215614a36576001600160a01b03841682526017602052604082205486519094906001600160801b03908116614a0e575061489284809661261e565b60018060a01b03821684526017602052604084205560206148c3620186a06148bc602154886125c7565b048661262b565b606460018060a01b0360095416916148e1610a0e8b600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa92831561418d57908d9182946149d5575b5061484195936149c893866149ce97946149c29460018060a01b038116825260186020526040822061494986825461261e565b9055602654604051926001600160a01b03918216927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9260209289918691908416907f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029080a48b85526001600160a01b031693a461262b565b9961262b565b9661262b565b9390614837565b915092506020813d602011614a06575b816149f260209383612467565b8101031261403b5751918c906149c2614916565b3d91506149e5565b614a2f81614a256148929360208c015116886125c7565b908a5116906125f0565b809661261e565b9796959150506148419150612f52565b91614a60614a6691614a59858a8a613880565b359061262b565b92612f52565b614365565b9150506060813d8211614aa6575b81614a8660609383612467565b81010312610c91576040614a9c602083016129c2565b910151903861435b565b3d9150614a79565b6011549650613922565b9050151538613917565b9050614ade91975060403d604011610c8a57610c7b8183612467565b96903861390f565b60405162461bcd60e51b815260206004820152601960248201527853474c3a206e6f7468696e6720746f206c697175696461746560381b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160a01b039091168152602081019190915260400190565b91908260409103126121f5576020825192015190565b600954600c549392600092916001600160a01b03908181163b15610ffa578484614bc99260409983868b8d5197889687958693630208d92960e11b85523060048601614b27565b0393165af18015614e0b57614f93575b5060209687818051810103126121f5578701518015614f5657816009541693600e54918851978a89627eeac760e11b988982528180614c1c898c60048401614b51565b03915afa988915614f1d578899614f27575b50841691600c54938a5194633d9545e960e11b865260048601526024850152876044850152606484015260016084840152600160a4840152610140808460c481865afa938415614f1d57928b949289928c958495614e15575b5050918493916101c4938551978896879563efa84c6d60e01b8752606081518d81511660048a01528481015160248a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af18015614e0b5791889391614d5b97969593614def575b506009541690600e5492885197889485938493845260048401614b51565b03915afa908115614de45790614db5575b614d76925061261e565b15614d7f575050565b60649250519062461bcd60e51b82526004820152601060248201526f14d1d30e8814ddd85c0819985a5b195960821b6044820152fd5b508382813d8311614ddd575b614dcb8183612467565b810103126121f557614d769151614d6c565b503d614dc1565b8451903d90823e3d90fd5b614e0590893d8b1161477f576147718183612467565b50614d3d565b87513d87823e3d90fd5b935093509450925080823d8411614f16575b614e318183612467565b81010391821261070457895191614e47836123d1565b60808112610700578a51614e5a81612430565b614e6383612dac565b81528c8301518d820152614e788c8401612dac565b8c8201526060830151606082015283526080607f19820112610700578a908151614ea181612430565b6080840151815260a08401518e82015260c08401518382015260e08401516060820152848e015260ff190112610704578a93888b9485946101c494614f03610120885192614eee84612402565b614efb61010082016129c2565b8452016129c2565b8982015286820152948193929450614c87565b503d614e27565b8a513d8a823e3d90fd5b9098508a81813d8311614f4f575b614f3f8183612467565b810103126121f557519784614c2e565b503d614f35565b865162461bcd60e51b81526004810189905260166024820152750a68e987440e6d8d2e0e0c2ceca40e8dede40d0d2ced60531b6044820152606490fd5b614f9f9094919461241d565b9238614bd9565b356001600160a01b03811681036121f55790565b15614fc157565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b919060018060a01b038060009416845260206017815260408520549081156150f85760188152604086205480156150f1578161502f613025565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156150e55780976150af575b505061295261509461508b6150aa969798620186a060225404906125c7565b601f54906125c7565b956131f760018060801b039485875116906125c7565b111590565b9096508187813d83116150de575b6150c78183612467565b81010312610387575094519461295261509461506c565b503d6150bd565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b1561510957565b60405162461bcd60e51b815260206004820152601b60248201527a14d1d30e88195e18da185b99d954985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b6001600160a01b0390811660008181526017602090815260408220549194909392821561525c5761517e821515615102565b84615187613025565b946009541691600c549088526018825260646151bb6151b260408b2054620186a060225404906125c7565b602a54906125c7565b91604051948593849263442c159960e01b8452600484015260248301528a60448301525afa90811561478657869161522d575b506152149392916151fe916125f0565b9361295260018060801b039283855116906125c7565b81811061522857615225925061261e565b90565b505090565b90508481813d8311615255575b6152448183612467565b8101031261070857516152146151ee565b503d61523a565b505050505090565b3d1561528f573d90615275826124a4565b916152836040519384612467565b82523d6000602084013e565b606090565b604051906152a182612402565b60038252623f3f3f60e81b6020830152565b908151811015613890570160200190565b60ff1660ff81146125da5760010190565b80516040811061534d575080518101906020818184019303126121f5576020810151906001600160401b0382116121f5570181603f820112156121f5576020810151615320816124a4565b9261532e6040519485612467565b818452604082840101116121f557615225916040602085019101612210565b60209290830361543b576000805b60ff8116858110908161541c575b501561537d57615378906152c4565b61535b565b9260ff8094169261538d846124a4565b9361539b6040519586612467565b8085526153aa601f19916124a4565b013687860137825b858116878110806153ff575b156153f4576153ef91906153e96001600160f81b03196153de83886152b3565b5116871a91886152b3565b536152c4565b6153b2565b505094505050905090565b506001600160f81b031961541382866152b3565b511615156153be565b6001600160f81b0319915061543190866152b3565b5116151538615369565b91505061522561529456fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3845524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e6174757265000085b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220599c5d46813a70a0ebe159e92e7c2671cead45823378445d55ce750d342dae9064736f6c63430008120033", - "deployedBytecode": "0x60c060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121995750826302ce728f1461203157826306fdde0314611f79578263078dfbe714611e82578263095ea7b314611e575782630996efb7146119b65782630c4e84f01461189f57826318160ddd1461187c5782631c9e379b146118435782631da8bf101461179b57826323b872dd146115fd57848363313ce5671461156257508263331960ff1461154257826334d441d0146115225782633644e5151461150457826337b6b7b9146114e457826338d52e0f146114ba5782633ba0b9a91461149a5782633f741adb1461147157826340626d8b1461145157826344de240a14611431578263473e3ce71461141157826348e4163e146113d85782634d7f2a34146113b85782634e71e0c814611315578263529898f2146112f557826352f353eb146112cb57826355140232146112a157826355c2ab941461127757826357935462146112575782635dfe04e8146111f75782636c3d8b8f146111cd57826370a0823114611194578263727785471461115c57826374645ff31461112f5782637dc0d1d0146111055782637ecebe00146110ce5782637fa0b84e1461109c578263821226e81461107c5782638285ef40146110485782638c5d0ed3146110285782638da5cb5b14610ffe578263910dd7c814610df7578263959916dc14610dd857826395d89b4114610d1f57826399a9702814610cee5782639c5d719214610cce5782639e15e89f14610c95578263a28e6b82146108bb578263a9059cbb146107df578263b0e21e8a146107bf578263b27c0e7414610784578263bb4cfe3b14610764578263c23ea21f1461073a578263ce8849ed14610710578263cfba1b4614610612578263d505accf146104c25750508063d8dfeb451461049a578063dd62ed3e14610452578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e4578063ea64dd56146103c6578063eec0f42e146103a8578063f42760b71461038a578063f8ba4cff1461036b578063f9557ccb146103355763ffe04c661461031457600080fd5b34610331578160031936011261033157602090602b549051908152f35b5080fd5b5034610331578160031936011261033157602554905190819061036790608081901c906001600160801b03168361248a565b0390f35b82346103875780600319360112610387576103846135b8565b80f35b80fd5b5034610331578160031936011261033157602090602c549051908152f35b5034610331578160031936011261033157602090600c549051908152f35b5034610331578160031936011261033157602090601f549051908152f35b503461033157816003193601126103315760065490516001600160a01b039091168152602090f35b5034610331578160031936011261033157602090601d549051908152f35b503461033157816003193601126103315760095490516001600160a01b039091168152602090f35b50346103315780600319360112610331578060209261046f6121df565b6104776121fa565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b5034610331578160031936011261033157600b5490516001600160a01b039091168152602090f35b8492503461060e576104d336612294565b9397949690928042116105dd5793869361059a938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361051585612f52565b905588519660208801986000805160206154c78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b519020610563612bf9565b915190602082019261190160f01b8452602283015260428201526042815261058a81612430565b519020612ecd565b919091612dce565b16036105ac5750610384939450612faf565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206154878339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206154678339815191526044820152606490fd5b8280fd5b838583346103315760a0366003190112610331576001600160401b03813581811161070c57610644903690840161250c565b916024358181116107085761065c903690860161250c565b60449291923582811161070457610676903690880161250c565b939092606435908111610700576106909036908901612267565b6084359890979196906001600160a01b038a168a036106fc57808b52600760205260ff8c8c2054166106c85750610384999a506138a6565b60649060208d519162461bcd60e51b8352820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152fd5b8a80fd5b8880fd5b8780fd5b8580fd5b8380fd5b5050503461033157816003193601126103315760085490516001600160a01b039091168152602090f35b5050503461033157816003193601126103315760265490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601e549051908152f35b505050346103315781600319360112610331576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b50505034610331578160031936011261033157602090601a549051908152f35b505050346103315780600319360112610331576020916107fd6121df565b826024359283158015906108a9575b61083c575b50519182526001600160a01b0316903390600080516020615527833981519152908590a35160018152f35b338152600186528181205461085385821015612d22565b6001600160a01b038416908533839003610870575b505050610811565b6108849161087f841515612d67565b61261e565b338352600188528383205581522061089d83825461262b565b90558238808085610868565b50336001600160a01b0384161461080c565b83858334610331576080366003190112610331576108d76121df565b906108e06121fa565b6001600160a01b0392604435848116939190849003610708576064356001600160401b038111610c91576109179036908401612267565b9190926109298760055416331461253c565b86600f541691895163d6d7d52560e01b81528a816020958686830152818d816109546024820161234c565b03925af1908115610c41578a908b92610c61575b508181610c57575b5015610c4b5780610986916011555b1515613683565b61098e6135b8565b818389600a54168c519283809263433e762d60e01b82525afa908115610c41576109c6898b94936109cb938e91610c14575b50613750565b6136f4565b169687895260178352826109f38b8b2054620186a06109ec602154836125c7565b049061262b565b9160095416916064610a17610a0e600c5493601154906125c7565b602254906125f0565b918d519485938492638eb22cdd60e01b84528884015260248301528d60448301525afa908115610c0a578991610bdd575b50878952601883528989205411610b9d575090868098610b4a9493886103849a52601881528183205498610aef610a7d613025565b82865260178452610aea610adf868820549288878951610a9c81612402565b82815201528681019360018060801b03928382818094868a8381511615600014610b5057505081610ad2915b1682885116613737565b1685521682875116613737565b168094525116613596565b613571565b8084526017825283838120556027825282842060285485528252838381205580845260188252610b248385205460155461261e565b6015558352601881528282812055602781528183209060295484525281205536916124bf565b92614b82565b610ad292610b89610b7f86610b76610b6c8280985116866125c7565b82875116906125f0565b945116846125c7565b848c5116906125f0565b1015610ac857610b9890612f52565b610ac8565b816064928a519262461bcd60e51b845283015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508281813d8311610c03575b610bf48183612467565b8101031261070057518a610a48565b503d610bea565b8a513d8b823e3d90fd5b610c349150883d8a11610c3a575b610c2c8183612467565b8101906136da565b8f6109c0565b503d610c22565b8b513d8c823e3d90fd5b5061098660115461097f565b905015158c610970565b9050610c8391508b3d8d11610c8a575b610c7b8183612467565b8101906129cf565b908c610968565b503d610c71565b8680fd5b5050503461033157806003193601126103315761036790610cc0610cb76121df565b60243590612867565b9093919251938493846124f6565b50505034610331578160031936011261033157602090602d549051908152f35b50505034610331578060031936011261033157602090610d18610d0f6121df565b60243590612aef565b9051908152f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916395d89b4160e01b83528152610d6181612402565b51915afa610d6d615264565b915015610dc957610d7d906152d5565b905b610db760238251809462746d2d60e81b6020830152610da78151809260208686019101612210565b8101036003810185520183612467565b51918291602083526020830190612233565b50610dd2615294565b90610d7f565b5050503461033157816003193601126103315760209081549051908152f35b9291503461070c578160031936011261070c5780356001600160401b038111610ffa5736602382011215610ffa57610e3890369060248185013591016124bf565b926024359161ffff831680930361070857610100938486805181010312610c9157602090610e678288016129c2565b93610e73828901612dac565b90610e8060608a01612dac565b9860808101519860a082015192610e9960c08401612dc0565b91818401519301519360018060a01b03808097169d169a814211610fc957928d8f819897948f948f8f968f918f959a8f8c8195610f639f9c6105929f50600014610fb4576000805160206154c78339815191529a5b825289522093845494610f0086612f52565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f318161244b565b519020610f3c612bf9565b908951908b82019261190160f01b8452602283015260428201526042815261058a81612430565b1603610f8557505050600014610f7c5761038492612faf565b61038492612f61565b5162461bcd60e51b815291820152601e6024820152600080516020615487833981519152604482015260649150fd5b6000805160206155078339815191529a610eee565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206154678339815191526044820152606490fd5b8480fd5b5050503461033157816003193601126103315760055490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601b549051908152f35b50505034610331578160031936011261033157601454905190819061036790608081901c906001600160801b03168361248a565b50505034610331578160031936011261033157602090602f549051908152f35b505050346103315780600319360112610331576020906110c76110bd6121df565b6024359033612f61565b5160018152f35b5090503461060e57602036600319011261060e5760209282916001600160a01b036110f76121df565b168252845220549051908152f35b50505034610331578160031936011261033157600f5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157805161036791610db7826111558161234c565b0383612467565b5090503461060e57602036600319011261060e5735916009831015610387575060ff6111896020936122e3565b541690519015158152f35b505050346103315760203660031901126103315760209181906001600160a01b036111bd6121df565b1681526001845220549051908152f35b50505034610331578160031936011261033157600a5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157608090611215613006565b5061121e61308a565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610331578160031936011261033157602090601c549051908152f35b50505034610331578160031936011261033157602e548151911c6001600160401b03168152602090f35b50505034610331578160031936011261033157602e5490516001600160401b039091168152602090f35b5050503461033157816003193601126103315760305490516001600160401b039091168152602090f35b505050346103315781600319360112610331576020906021549051908152f35b8482853461060e578260031936011261060e576006546001600160a01b03929091838316919033839003611375575050806005549384166000805160206154e78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50505034610331578160031936011261033157602090602a549051908152f35b505050346103315760203660031901126103315760209181906001600160a01b036114016121df565b1681526017845220549051908152f35b505050346103315781600319360112610331576020906015549051908152f35b50505034610331578160031936011261033157602090600e549051908152f35b505050346103315781600319360112610331576020906016549051908152f35b508284346103875760603660031901126103875750610d186020926044359060243590356127a0565b505050346103315781600319360112610331576020906011549051908152f35b50505034610331578160031936011261033157600d5490516001600160a01b039091168152602090f35b505050346103315781600319360112610331576020906012549051908152f35b50505034610331578160031936011261033157602090610d18612bf9565b505050346103315781600319360112610331576020906019549051908152f35b505050346103315781600319360112610331576020906013549051908152f35b92505034610331578160031936011261033157600d54835163313ce56760e01b6020820190815292815283926001600160a01b0390921691906115a481612402565b51915afa916115b1615264565b92806115f2575b156115e357602083805181010312610387575060ff6115da6020809401612dc0565b915b5191168152f35b506020915060ff6012916115dc565b5060208351146115b8565b50828434610387576060366003190112610387576116196121df565b906116226121fa565b604435918261165e575b508351918252602094506001600160a01b03908116921690600080516020615527833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061168987831015612d22565b851692838a0361169d575b5050505061162c565b898552600283528885203386528352888520549060018201611707575b5050928260209960018a946116e68a8e9961087f6000805160206155278339815191529c9a1515612d67565b92855252838320558152206116fc85825461262b565b905591878080611694565b87821061175d57509260209960018a946116e68a8e9996611738826000805160206155278339815191529d9b61261e565b86895260028552898920338a52855289892055969950505094505099819496506116ba565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461060e576117ac36612294565b9397949690928042116105dd57938693611831938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117ee85612f52565b905588519660208801986000805160206155078339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b16036105ac5750610384939450612f61565b505050346103315760203660031901126103315760209181906001600160a01b0361186c6121df565b1681526018845220549051908152f35b5050503461033157816003193601126103315760209060255460801c9051908152f35b5090503461060e578160031936011261060e57803590600982101561070c576118c6612258565b6008549093906001600160a01b0316330361197c5760ff6118e6846122e3565b54161515931515938414611944575050808260ff611906611934946122e3565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122e3565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461060e5761018036600319011261060e576024356001600160a01b0381811691829003610ffa576001600160401b03604435818111610c9157611a009036908601612267565b916064359484861680960361070057611a1e8560055416331461253c565b863580611e17575b5080611dd9575b5082611c7b575b50505081611c3b575b505060843580611c23575b5060a43580611c0b575b5060c43580611bf4575b5060e43580611bd0575b506101043580611bac575b506101243580611b7b575b506101443580611b09575b50610164359182611a96578380f35b601e548310611aab575050601f553880808380f35b906020608492519162461bcd60e51b8352820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b18620186a0821115612587565b601f548111611b2a57601e5538611a87565b506020608492519162461bcd60e51b8352820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a360165538611a7c565b611bba620186a08210612587565b611bc7601b548211612587565b601c5538611a71565b611bde620186a08210612587565b611beb601c548210612587565b601b5538611a66565b611c02620186a08210612587565b601d5538611a5c565b611c1a620186a0821115612587565b601a5538611a52565b611c32620186a0821115612587565b60195538611a48565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880611a3d565b8211611dc6578190611c8e601054612312565b601f8111611d6f575b508790601f8311600114611cf9578892611cee575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158580a1388080611a34565b013590503880611cac565b60108952600080516020615567833981519152925090601f1984168960205b828210611d57575050908460019594939210611d3d575b505050811b01601055611cc2565b0135600019600384901b60f8161c19169055388080611d2f565b80600185978294968801358155019601930190611d18565b60108952909150600080516020615567833981519152601f840160051c810160208510611dbf575b90601f8594930160051c01905b818110611db15750611c97565b898155849350600101611da4565b5080611d97565b634e487b7160e01b875260418552602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a2d565b611e26620186a0821115612587565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a360205538611a26565b505050346103315780600319360112610331576020906110c7611e786121df565b6024359033612faf565b8482853461060e57606036600319011261060e57611e9e6121df565b91611ea7612258565b916044359283151584036107085760018060a01b03948591611ece8360055416331461253c565b15611f60571692831590811591611f58575b5015611f1d575050806005549283166000805160206154e78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ee0565b93505050501660018060a01b0319600654161760065580f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916306fdde0360e01b83528152611fbb81612402565b51915afa611fc7615264565b91501561202257611fd7906152d5565b905b610db760348251809473546170696f63612053696e67756c61726974792d60601b60208301526120128151809260208686019101612210565b8101036014810185520183612467565b5061202b615294565b90611fd9565b83858334610331578160031936011261033157600f54835163d6d7d52560e01b81526020838201529290849084906001600160a01b03168184816120776024820161234c565b03925af1801561218d578193829161216a575b5091831561210f5782156120d557507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c882918260115580a25b42601355825191151582526020820152f35b606490602086519162461bcd60e51b835282015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9150506121216013546012549061262b565b421161213057506011546120c3565b606490602084519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9050612184919350843d8611610c8a57610c7b8183612467565b9290928561208a565b508351903d90823e3d90fd5b8590853461060e578060031936011261060e576020926121b76121df565b6121bf6121fa565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036121f557565b600080fd5b602435906001600160a01b03821682036121f557565b60005b8381106122235750506000910152565b8181015183820152602001612213565b9060209161224c81518092818552858086019101612210565b601f01601f1916010190565b6024359081151582036121f557565b9181601f840112156121f5578235916001600160401b0383116121f557602083818601950101116121f557565b60e09060031901126121f5576001600160a01b039060043582811681036121f5579160243590811681036121f55790604435906064359060843560ff811681036121f5579060a4359060c43590565b60098110156122fc576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612342575b602083101461232c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612321565b6010546000929161235c82612312565b9081815260019283811690816000146123b6575060011461237c57505050565b9092935060106000526020928360002092846000945b8386106123a25750505050010190565b805485870183015294019385908201612392565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176123ec57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123ec57604052565b6001600160401b0381116123ec57604052565b608081019081106001600160401b038211176123ec57604052565b61010081019081106001600160401b038211176123ec57604052565b601f909101601f19168101906001600160401b038211908210176123ec57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116123ec57601f01601f191660200190565b9291926124cb826124a4565b916124d96040519384612467565b8294818452818301116121f5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156121f5578235916001600160401b0383116121f5576020808501948460051b0101116121f557565b1561254357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561258e57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156125da57565b634e487b7160e01b600052601160045260246000fd5b81156125fa570490565b634e487b7160e01b600052601260045260246000fd5b604d81116125da57600a0a90565b919082039182116125da57565b919082018092116125da57565b818103929160001380158285131691841216176125da57565b906509184e72a000918281029281840514901517156125da57565b90670de0b6b3a7640000918281029281840514901517156125da57565b81156125fa57600160ff1b81146000198314166125da570590565b6014546126df916126ce91906126c4906001600160801b038316906125c7565b9060801c906125f0565b91620186a0918291601f54906125c7565b04808310612798576126f1908361261e565b601e546021548301908184116125da57839161270c916125c7565b0491828103906000809412818312811691831390151617612784579061273d61273761274293612651565b9161266c565b612689565b908082121561277d57600160ff1b82146127695703905b808211612764575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612759565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916127df916127d0916127c6916126c4906001600160801b038316906125c7565b93601f54906125c7565b6127d983612610565b906125f0565b908183106127985761273d6127376128396127fd61283e958761261e565b9361283461282e612825601e5461281f61281686612610565b6021549061262b565b906125c7565b6127d984612610565b91612610565b612638565b612651565b600081121561286157600160ff1b81146125da5760000390808211612764575090565b90612759565b9160018060a01b0380931691600093838552602060178152604091828720549081156129b5578783855161289a81612402565b82815201526128a761308a565b50505050509190506128ba8615156129ec565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156129ab57899161297c575b509161295c612970979899949261293788612932612929601898620186a060225404906125c7565b601e54906125c7565b6125f0565b815190936001600160801b03918691612952918416906125c7565b92015116906125f0565b81811061297457035b978352522054612a38565b9091565b505082612965565b90508381813d83116129a4575b6129938183612467565b81010312610700575161295c612901565b503d612989565b85513d8b823e3d90fd5b5086955085949350505050565b519081151582036121f557565b91908260409103126121f55760206129e6836129c2565b92015190565b156129f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612a438215156129ec565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612ae357600091612ab0575b5090612932612a9c92602254906125c7565b620186a0612aac601e54836125c7565b0491565b906020823d8211612adb575b81612ac960209383612467565b81010312610387575051612932612a8a565b3d9150612abc565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612b1291612a38565b918352601760205260408320548015612bf3578115612bf357818110612bf35782811015612be957601454612b5b91839161087f916126c4906001600160801b038316906125c7565b90620186a09283830292808404851490151715612bd557612b8092916127d99161261e565b91601b5491601c5493612b938585612638565b80820291848212600160ff1b821416612bd557818305149015171561278457058184820194851291129080158216911516176127695750808212612764575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cf9575b15612c54577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176123ec5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2b565b15612d2957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d6e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036121f557565b519060ff821682036121f557565b60058110156122fc5780612ddf5750565b60018103612e275760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e745760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e7d57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f395781516001600160a01b03811615612f33579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146125da5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613013826123d1565b60006040838281528260208201520152565b6040519061303282612402565b6014546001600160801b038116835260801c6020830152565b6040519061305882612402565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116125da57565b613092613006565b50600060206040516130a381612402565b8281520152600060206040516130b881612402565b82815201526040516130c9816123d1565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906130fb613025565b9161310461304b565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015612ae35760009061353d575b885161316f92506001600160801b03169061262b565b94856135085760005b60208501518190613192906001600160401b03164261261e565b9586156134dd575050426001600160401b031660208b8101919091528901516001600160801b03161561349357508751895160209161324691670de0b6b3a7640000916131fc9189916131f7916001600160401b0316906001600160801b03166125c7565b6125c7565b8b5191900498906001600160801b039061321b90828c16908316613071565b168b52612932620186a0613231601a548c6125c7565b858e01516001600160801b03169190046125c7565b60408b0180519197916001600160801b03808a1692916132699084908316613071565b169052898301805190916001600160801b039161328891908316613071565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612ae35760009061345f575b88516132e592506001600160801b03169061262b565b8061342957506000925b602b54848181101561338957613305908261261e565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156125da5761336b91613333916125f0565b91612932613358613352602f54936131f760018060401b0397806125c7565b8361262b565b8c519092906001600160401b03166125c7565b16808952602e546001600160401b03169081116133855750565b8852565b9050602c5480821161339a57505050565b6133a39161261e565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156125da576129326133ec6133526133de6133fc95602d54906125f0565b936131f7602f5495806125c7565b8b516001600160401b03166125c7565b602e5460401c6001600160401b0316808211613421575b506001600160401b03168852565b905038613413565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156125da57613459916125f0565b926132ef565b506020813d60201161348b575b8161347960209383612467565b810103126121f5576132e590516132cf565b3d915061346c565b8951603054999a91999498509296509450506001600160401b039182169250168190036134d1575b5093926134c661304b565b926000926000929190565b815260019250386134bb565b985099505050955050505050916134f2613025565b916134fb61304b565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156125da5786613538916125f0565b613178565b506020813d602011613569575b8161355760209383612467565b810103126121f55761316f9051613159565b3d915061354a565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b61364e60406020806135c861308a565b939995939092901561365e57505050600180871b0360305416600080600080516020615547833981519152878a51838152a45b600180871b03815116848201519160018060801b0319978891015160801b1691600160401b600160801b039060401b16171760245560018060801b0392816136468580945116613596565b015116613571565b83511692015160801b1617602555565b600080516020615547833981519152876001808c1b03865116948b51908152a46135fb565b1561368a57565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b908160209103126121f5575161ffff811681036121f55790565b156136fb57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b6001600160801b0391821690821603919082116125da57565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612ae35784936000916137ff575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612ae3576000916137cb575b50905090565b82813d83116137f8575b6137df8183612467565b8101031261038757506137f1906129c2565b80386137c5565b503d6137d5565b9091929381813d8311613836575b6138178183612467565b810103126103315751908282168203610387575083929190604461378b565b503d61380d565b1561384457565b60405162461bcd60e51b81526020600482015260146024820152730a68e987440d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606490fd5b91908110156138905760051b0190565b634e487b7160e01b600052603260045260246000fd5b9695949397909760805260a0526138be82881461383d565b6000938715614ae657600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168189816138fb6024820161234c565b03925af19687156147865786908798614ac2575b508781614ab8575b5015614aae57866011555b61392d871515613683565b6139356135b8565b6026546001600160a01b031680614333575b50505061395582881461383d565b61396083881461383d565b8396845b8181106139b55750505050505050501561397a57565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6139c86139c382848b613880565b614fa6565b6139d28882614ff5565b156139e7575b506139e290612f52565b613964565b986139f190612f52565b986139fd828686613880565b35908683101561431f5760805191601e19833603018460051b8401351215610700576001600160401b03600585901b8401358401351161070057600584901b83013583018035360360209091011361070057613a598a83612aef565b90613a658b1515615102565b600954600c546001600160a01b038581168d52601860209081526040808f2054905163442c159960e01b815260048101949094526024840152604483018e9052919283916064918391165afa908115614314578c908c926142de575b50612932613ad292602254906125c7565b6001600160a01b0384168b52601760205260408b2054613af39082906126a4565b601d54806142c6575b5080911115614291578a91818111156142895750925b6001600160a01b038116825260176020526040822054808511614281575b84613b3a9161261e565b6001600160a01b038216835260176020526040832055613b58613025565b60208101516001600160801b031661424c5750835b60208d6064613b8c620186a0613b856021548b6125c7565b048961262b565b613ba7610a0e60018060a01b036009541694600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa9283156141cc578c93614218575b506001600160a01b0382168c52601860205260408c205483116141d7576001600160a01b0382168c52601860205260408c208054613c1890859061261e565b9055613c25851515614fba565b601454908c6001600160801b03613c40888216828616613737565b16916001600160801b031990613c66906001600160801b0316858316851760801c613737565b60801b169216171760145560018060a01b0360095416946020600e54606460405180998193638eb22cdd60e01b83526004830152896024830152600160448301525afa9586156141cc578c96614198575b50600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa90811561418d5791613d0f6109c68f93613dfd95613dea959161416e575b5060a0516001600160a01b031690613750565b8d60159086825481811160001461416657613d2a925061261e565b905b558d60018060a01b03851690528d60279081602052604081206029908154908184526020526040832054891160001461413557506001600160a01b0387168252602083815260408084209254845291905281208190555b6001600160a01b0386168152602082815260408083206028805480865291909352908320549193918c1115614106575060018060a01b038716825260205260408120915490526020528d60408120555b8860051b01356080510136906020813591016124bf565b60a0516001600160a01b03163085614b82565b60018060a01b036009541692600e5495604051627eeac760e11b815260208180613e2b8b3060048401614b51565b0381895afa90811561403f57908e9182916140ce575b50620186a091613e5f613e7b9260018060801b03602554169061261e565b93808511156140c757613e7391508461261e565b935b846125c7565b04968791613e89838561261e565b96879283614050575b505082613fc1575b90613ee99361087f92613eb88561087f8560018060801b039461261e565b602554916001600160801b0391613ed29116828416613071565b6001600160801b031990921691161760255561261e565b6040518c81523090600080516020615447833981519152602060018060a01b0360a0511692a460405190613f1c82612402565b6001825260203681840137815115613fad576001600160a01b03166020820190815260405191518291908d905b808210613f8b5750505091816000805160206154a7833981519152926139e2989796959403902093613f826040519283923396846124f6565b0390a4906139d8565b82516001600160a01b0316845260209384019390920191600190910190613f49565b634e487b7160e01b8c52603260045260248cfd5b600954600e549193506001600160a01b03169150813b1561404c57888f91926140039383604051809681958294630208d92960e11b8452333060048601614b27565b03925af1801561403f57918e87928a9461401f575b5050613e9a565b90925061402d91935061241d565b61403b578487918e38614018565b8c80fd5b8e604051903d90823e3d90fd5b8e80fd5b600a54929450909250906001600160a01b0316823b156140c3578f919261409293838a9360405196879586948593630208d92960e11b85523060048601614b27565b03925af1801561403f57918e87928a9415613e92579092506140b591935061241d565b61403b578487918e38613e92565b8f80fd5b5093613e75565b9150506020813d6020116140fe575b816140ea60209383612467565b810103126121f557518d90620186a0613e41565b3d91506140dd565b906040935060018060a01b03881683526020528282209082526020522061412e89825461261e565b9055613dd3565b905060018060a01b038716825282602052604082209082526020526040812061415f88825461261e565b9055613d83565b505090613d2c565b614187915060203d602011610c3a57610c2c8183612467565b38613cfc565b6040513d8f823e3d90fd5b9095506020813d6020116141c4575b816141b460209383612467565b810103126121f557519438613cb7565b3d91506141a7565b6040513d8e823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011614244575b8161423460209383612467565b810103126121f557519138613bd9565b3d9150614227565b805161427b9190614266906001600160801b0316876125c7565b6020909101516001600160801b0316906125f0565b93613b6d565b935083613b30565b905092613b12565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90620186a06109ec6142d893836125c7565b38613afc565b9150506020813d60201161430c575b816142fa60209383612467565b810103126121f557518b612932613ac1565b3d91506142ed565b6040513d8d823e3d90fd5b634e487b7160e01b88526032600452602488fd5b606060049160405192838092637c8be05b60e01b82525afa9081156147da5787908892614a6b575b5015613947578690875b868110614a46575010156143795780613947565b95979496949561438e945036935091506124bf565b9383908490859061439d613025565b90875b87811061481957505090610aea61440c926143bc851515614fba565b80516001600160801b03906143d690878316908316613737565b16815260208101805190936001600160801b03916143f8918316908316613737565b1692839052516001600160801b0316613596565b6144188260155461261e565b601555600954600e54604051638eb22cdd60e01b81526004810191909152602481018390526001604482015296906001600160a01b0316602088606481845afa9788156147da5787986147e5575b50602654600c54906001600160a01b0316823b15610700576144a592899283889360405196879586948593630208d92960e11b85523060048601614b27565b03925af180156147da576147c7575b5060018060a01b03602654169060018060a01b03600954166020600c5460646040518094819363442c159960e01b83526004830152896024830152600160448301525afa90811561474d578891614791575b509061453792604092898451809681958294633965907b60e01b845260048401528760248401526044830190612233565b03925af1801561478657614758575b5060018060a01b036009541692600e5492604051627eeac760e11b815260208180614575883060048401614b51565b0381895afa90811561474d578891614719575b506025549196939291620186a0916145c1916145b8916145b1916001600160801b03169061261e565b9a8b61261e565b601954906125c7565b049586936145cf858b61261e565b92604051918291908b905b8082106146e15750505090806000805160206154a783398151915293920390209361460c6040519283923396846124f6565b0390a4813b1561070c578261463c92859283604051809681958294630208d92960e11b8452333060048601614b27565b03925af180156146d6579083916146c2575b506146a59190506001600160801b03614667828661261e565b602554916001600160801b03916146819116828416613071565b6001600160801b03199092169116176025556026546001600160a01b03169361261e565b9160405191825260008051602061544783398151915260203093a4565b6146cb9061241d565b61033157813861464e565b6040513d85823e3d90fd5b9180949596979850929092359060018060a01b0382168092036121f55760208160019382935201940192018a979695949392916145da565b90506020813d602011614745575b8161473460209383612467565b810103126121f557516145c1614588565b3d9150614727565b6040513d8a823e3d90fd5b6147799060403d60401161477f575b6147718183612467565b810190614b6c565b50614546565b503d614767565b6040513d88823e3d90fd5b9190506020823d6020116147bf575b816147ad60209383612467565b810103126121f5579051614537614506565b3d91506147a0565b6147d39096919661241d565b94386144b4565b6040513d89823e3d90fd5b9097506020813d602011614811575b8161480160209383612467565b81010312610c9157519638614466565b3d91506147f4565b6148276139c3828a8a613880565b6148318382614ff5565b15614846575b5061484190612f52565b6143a0565b9093949589614855848461514c565b918215614a36576001600160a01b03841682526017602052604082205486519094906001600160801b03908116614a0e575061489284809661261e565b60018060a01b03821684526017602052604084205560206148c3620186a06148bc602154886125c7565b048661262b565b606460018060a01b0360095416916148e1610a0e8b600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa92831561418d57908d9182946149d5575b5061484195936149c893866149ce97946149c29460018060a01b038116825260186020526040822061494986825461261e565b9055602654604051926001600160a01b03918216927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9260209289918691908416907f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029080a48b85526001600160a01b031693a461262b565b9961262b565b9661262b565b9390614837565b915092506020813d602011614a06575b816149f260209383612467565b8101031261403b5751918c906149c2614916565b3d91506149e5565b614a2f81614a256148929360208c015116886125c7565b908a5116906125f0565b809661261e565b9796959150506148419150612f52565b91614a60614a6691614a59858a8a613880565b359061262b565b92612f52565b614365565b9150506060813d8211614aa6575b81614a8660609383612467565b81010312610c91576040614a9c602083016129c2565b910151903861435b565b3d9150614a79565b6011549650613922565b9050151538613917565b9050614ade91975060403d604011610c8a57610c7b8183612467565b96903861390f565b60405162461bcd60e51b815260206004820152601960248201527853474c3a206e6f7468696e6720746f206c697175696461746560381b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160a01b039091168152602081019190915260400190565b91908260409103126121f5576020825192015190565b600954600c549392600092916001600160a01b03908181163b15610ffa578484614bc99260409983868b8d5197889687958693630208d92960e11b85523060048601614b27565b0393165af18015614e0b57614f93575b5060209687818051810103126121f5578701518015614f5657816009541693600e54918851978a89627eeac760e11b988982528180614c1c898c60048401614b51565b03915afa988915614f1d578899614f27575b50841691600c54938a5194633d9545e960e11b865260048601526024850152876044850152606484015260016084840152600160a4840152610140808460c481865afa938415614f1d57928b949289928c958495614e15575b5050918493916101c4938551978896879563efa84c6d60e01b8752606081518d81511660048a01528481015160248a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af18015614e0b5791889391614d5b97969593614def575b506009541690600e5492885197889485938493845260048401614b51565b03915afa908115614de45790614db5575b614d76925061261e565b15614d7f575050565b60649250519062461bcd60e51b82526004820152601060248201526f14d1d30e8814ddd85c0819985a5b195960821b6044820152fd5b508382813d8311614ddd575b614dcb8183612467565b810103126121f557614d769151614d6c565b503d614dc1565b8451903d90823e3d90fd5b614e0590893d8b1161477f576147718183612467565b50614d3d565b87513d87823e3d90fd5b935093509450925080823d8411614f16575b614e318183612467565b81010391821261070457895191614e47836123d1565b60808112610700578a51614e5a81612430565b614e6383612dac565b81528c8301518d820152614e788c8401612dac565b8c8201526060830151606082015283526080607f19820112610700578a908151614ea181612430565b6080840151815260a08401518e82015260c08401518382015260e08401516060820152848e015260ff190112610704578a93888b9485946101c494614f03610120885192614eee84612402565b614efb61010082016129c2565b8452016129c2565b8982015286820152948193929450614c87565b503d614e27565b8a513d8a823e3d90fd5b9098508a81813d8311614f4f575b614f3f8183612467565b810103126121f557519784614c2e565b503d614f35565b865162461bcd60e51b81526004810189905260166024820152750a68e987440e6d8d2e0e0c2ceca40e8dede40d0d2ced60531b6044820152606490fd5b614f9f9094919461241d565b9238614bd9565b356001600160a01b03811681036121f55790565b15614fc157565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b919060018060a01b038060009416845260206017815260408520549081156150f85760188152604086205480156150f1578161502f613025565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156150e55780976150af575b505061295261509461508b6150aa969798620186a060225404906125c7565b601f54906125c7565b956131f760018060801b039485875116906125c7565b111590565b9096508187813d83116150de575b6150c78183612467565b81010312610387575094519461295261509461506c565b503d6150bd565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b1561510957565b60405162461bcd60e51b815260206004820152601b60248201527a14d1d30e88195e18da185b99d954985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b6001600160a01b0390811660008181526017602090815260408220549194909392821561525c5761517e821515615102565b84615187613025565b946009541691600c549088526018825260646151bb6151b260408b2054620186a060225404906125c7565b602a54906125c7565b91604051948593849263442c159960e01b8452600484015260248301528a60448301525afa90811561478657869161522d575b506152149392916151fe916125f0565b9361295260018060801b039283855116906125c7565b81811061522857615225925061261e565b90565b505090565b90508481813d8311615255575b6152448183612467565b8101031261070857516152146151ee565b503d61523a565b505050505090565b3d1561528f573d90615275826124a4565b916152836040519384612467565b82523d6000602084013e565b606090565b604051906152a182612402565b60038252623f3f3f60e81b6020830152565b908151811015613890570160200190565b60ff1660ff81146125da5760010190565b80516040811061534d575080518101906020818184019303126121f5576020810151906001600160401b0382116121f5570181603f820112156121f5576020810151615320816124a4565b9261532e6040519485612467565b818452604082840101116121f557615225916040602085019101612210565b60209290830361543b576000805b60ff8116858110908161541c575b501561537d57615378906152c4565b61535b565b9260ff8094169261538d846124a4565b9361539b6040519586612467565b8085526153aa601f19916124a4565b013687860137825b858116878110806153ff575b156153f4576153ef91906153e96001600160f81b03196153de83886152b3565b5116871a91886152b3565b536152c4565b6153b2565b505094505050905090565b506001600160f81b031961541382866152b3565b511615156153be565b6001600160f81b0319915061543190866152b3565b5116151538615369565b91505061522561529456fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3845524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e6174757265000085b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220599c5d46813a70a0ebe159e92e7c2671cead45823378445d55ce750d342dae9064736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955614b569283620002078439608051836139df015260a05183613aaa015260c051836139a9015260e05183613a2e01525182613a5401525181613a0b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220415c8c5831b97cf000e381d8631c5aae922806096bf5cff7e048b3923fa2ff5364736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220415c8c5831b97cf000e381d8631c5aae922806096bf5cff7e048b3923fa2ff5364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLStorage.json b/src/artifacts/tapioca-bar/SGLStorage.json index 1dc38d88..d0ae076b 100644 --- a/src/artifacts/tapioca-bar/SGLStorage.json +++ b/src/artifacts/tapioca-bar/SGLStorage.json @@ -1138,19 +1138,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -1834,8 +1821,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a55612bc192836200020784396080518361252b015260a051836125f5015260c051836124f5015260e0518361257a015251826125a0015251816125570152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c445750806302ce728f14611abc57806306fdde0314611a05578063078dfbe714611914578063095ea7b3146118ed5780630996efb7146114335780630c4e84f01461131b57806318160ddd146112fa5780631c9e379b146112c15780631da8bf101461121357806323b872dd14611076578063313ce56714610fe4578063331960ff14610fc657806334d441d014610fa85780633644e51514610f8d57806337b6b7b914610f6f57806338d52e0f14610f465780633ba0b9a914610f285780633f741adb14610f0357806340626d8b14610ee557806344de240a14610ec7578063473e3ce714610ea957806348e4163e14610e705780634d7f2a3414610e525780634e71e0c814610db6578063529898f214610d9857806352f353eb14610d6f5780635514023214610d4657806355c2ab9414610d1b5780635793546214610cfd5780636c3d8b8f14610cd457806370a0823114610c9b5780637277854714610c6357806374645ff314610c385780637dc0d1d014610c0f5780637ecebe0014610bd65780637fa0b84e14610ba4578063821226e814610b865780638285ef4014610b535780638c5d0ed314610b355780638da5cb5b14610b0c578063910dd7c814610913578063959916dc146108f657806395d89b411461083c57806399a970281461080c5780639c5d7192146107ee5780639e15e89f146107b3578063a9059cbb146106d0578063b0e21e8a146106b2578063b27c0e7414610678578063bb4cfe3b1461065a578063c23ea21f14610631578063ce8849ed14610608578063d505accf14610475578063d8dfeb451461044c578063dd62ed3e14610401578063de406577146103d8578063e0996cb6146103ba578063e30c397814610391578063ea64dd5614610373578063eec0f42e14610355578063f42760b714610337578063f9557ccb146103005763ffe04c66146102e057600080fd5b346102fd57806003193601126102fd576020602b54604051908152f35b80fd5b50346102fd57806003193601126102fd5760255460405190819061033390608081901c906001600160801b031683611edc565b0390f35b50346102fd57806003193601126102fd576020602c54604051908152f35b50346102fd57806003193601126102fd576020600c54604051908152f35b50346102fd57806003193601126102fd576020601f54604051908152f35b50346102fd57806003193601126102fd576006546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601d54604051908152f35b50346102fd57806003193601126102fd576009546040516001600160a01b039091168152602090f35b50346102fd5760403660031901126102fd576040602091610420611c8c565b610428611ca7565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102fd57806003193601126102fd57600b546040516001600160a01b039091168152602090f35b50346102fd5761048436611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826105589694928d9260016105509896019055604051916020830193600080516020612aec833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b51902061051f6124f2565b9060405190602082019261190160f01b8452602283015260428201526042815261054881611e9e565b5190206127c6565b9190916126c7565b160361056a5761056792612899565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102fd57806003193601126102fd576008546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576026546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601e54604051908152f35b50346102fd57806003193601126102fd5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346102fd57806003193601126102fd576020601a54604051908152f35b50346102fd5760403660031901126102fd576106ea611c8c565b602435809281158015906107a1575b610731575b50506040519182526001600160a01b0316903390600080516020612b4c83398151915290602090a3602060405160018152f35b3381526001602052604081205461074a8382101561261b565b6001600160a01b0384169033829003610765575b50506106fe565b60409361077c91610777841515612660565b611ff3565b338352600160205283832055815220610796838254612000565b90558138808061075e565b50336001600160a01b038416146106f9565b50346102fd5760403660031901126102fd5760606107db6107d2611c8c565b6024359061213f565b9060405192835260208301526040820152f35b50346102fd57806003193601126102fd576020602d54604051908152f35b50346102fd5760403660031901126102fd57602061083461082b611c8c565b602435906123c0565b604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261087981611e51565b51915afa6108856128f0565b9150156108e55761089861033391612977565b6108d16023604051809362746d2d60e81b60208301526108c18151809260208686019101611cbd565b8101036003810184520182611eb9565b604051918291602083526020830190611ce0565b506103336108f1612920565b610898565b50346102fd57806003193601126102fd5760208054604051908152f35b50346102fd5760403660031901126102fd576004356001600160401b038111610b085736602382011215610b085780600401358261095082611ef6565b9261095e6040519485611eb9565b82845260208401923660248284010111610b04578060246020930185378401015260243561ffff81168103610b0057610100918284805181010312610afc576109a6906122b0565b6109b2604085016126a5565b916109bf606086016126a5565b9460808101519460a0820151926109d860c084016126b9565b9160e0840151930151938042116105c3578515610ae757600080516020612aec833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610ad3579161ffff610a909896949261055098969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a8181611e82565b6020815191012061051f6124f2565b6001600160a01b0383811691160361056a5715610abd57610567926001600160a01b039081169116612899565b610567926001600160a01b03908116911661284b565b634e487b7160e01b8d52601160045260248dfd5b600080516020612b2c83398151915291610a00565b8480fd5b8380fd5b8280fd5b5080fd5b50346102fd57806003193601126102fd576005546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601b54604051908152f35b50346102fd57806003193601126102fd5760145460405190819061033390608081901c906001600160801b031683611edc565b50346102fd57806003193601126102fd576020602f54604051908152f35b50346102fd5760403660031901126102fd57610bcb610bc1611c8c565b602435903361284b565b602060405160018152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610bfe611c8c565b168152600483522054604051908152f35b50346102fd57806003193601126102fd57600f546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576103336040516108d181610c5c81611dcc565b0382611eb9565b50346102fd5760203660031901126102fd576004359060098210156102fd57602060ff610c8f84611d63565b54166040519015158152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610cc3611c8c565b168152600183522054604051908152f35b50346102fd57806003193601126102fd57600a546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601c54604051908152f35b50346102fd57806003193601126102fd57602e546040805191901c6001600160401b03168152602090f35b50346102fd57806003193601126102fd57602e546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576030546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576020602154604051908152f35b50346102fd57806003193601126102fd576006546001600160a01b039081811633819003610e0e5780600554938416600080516020612b0c8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102fd57806003193601126102fd576020602a54604051908152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610e98611c8c565b168152601783522054604051908152f35b50346102fd57806003193601126102fd576020601554604051908152f35b50346102fd57806003193601126102fd576020600e54604051908152f35b50346102fd57806003193601126102fd576020601654604051908152f35b50346102fd5760603660031901126102fd576020610834604435602435600435612026565b50346102fd57806003193601126102fd576020601154604051908152f35b50346102fd57806003193601126102fd57600d546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601254604051908152f35b50346102fd57806003193601126102fd5760206108346124f2565b50346102fd57806003193601126102fd576020601954604051908152f35b50346102fd57806003193601126102fd576020601354604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102181611e51565b51915afa9061102e6128f0565b918061106b575b15611060576020828051810103126102fd575061105560208092016126b9565b60ff60405191168152f35b505060206012611055565b506020825114611035565b50346102fd5760603660031901126102fd57611090611c8c565b90611099611ca7565b60443591826110d7575b506040519182526001600160a01b03908116921690600080516020612b4c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906111008286101561261b565b861693848403611115575b50505050506110a3565b83865260028352604080872033885284528620546001810161117f575b509260016020969361115d8794604097610777600080516020612b4c8339815191529c9a1515612660565b9285525283832055815220611173858254612000565b9055913880858161110b565b909181106111d3579260016020969361115d8a600080516020612b4c8339815191529a98956111b08260409a611ff3565b86895260028552898920338a528552898920559497509497995050939650611132565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102fd5761122236611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826112b29694928d9260016105509896019055604051916020830193600080516020612b2c833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b160361056a576105679261284b565b50346102fd5760203660031901126102fd576020906040906001600160a01b036112e9611c8c565b168152601883522054604051908152f35b50346102fd57806003193601126102fd57602060255460801c604051908152f35b50346102fd5760403660031901126102fd576004356009811015610b0857611341611d05565b6008549091906001600160a01b031633036113f75760ff61136182611d63565b541615159115159182146113bd57808260ff61137f6113ad94611d63565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d63565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102fd576101803660031901126102fd57602480356001600160a01b0381811691829003610b00576001600160401b036044358181116118e957366023820112156118e95780600401359182116118e957368583830101116118e957606435938385168095036118e5576114ae84600554163314611f11565b600435806118a5575b5080611867575b50848261170d575b505050816116cd575b5050608435806116b5575b5060a4358061169d575b5060c43580611686575b5060e43580611662575b50610104358061163e575b50610124358061160d575b50610144358061159a575b50610164359081611528578280f35b601e54821061153b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6115a9620186a0821115611f5c565b601f5481116115bb57601e5538611519565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a36016553861150e565b61164c620186a08210611f5c565b611659601b548211611f5c565b601c5538611503565b611670620186a08210611f5c565b61167d601c548210611f5c565b601b55386114f8565b611694620186a08210611f5c565b601d55386114ee565b6116ac620186a0821115611f5c565b601a55386114e4565b6116c4620186a0821115611f5c565b601955386114da565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806114cf565b829161171a601054611d92565b601f8111611808575b508790601f841160011461178857889361177b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846114c6565b0101359050843880611738565b60108952601f1984169450600080516020612b6c83398151915292509087908960205b8782106117e957505084600196106117cd575b50505050811b0160105561174f565b60001960f88660031b161c1992010135169055388086816117be565b82850190930135855560019490940193899291820191908101906117ab565b601089529092509050600080516020612b6c833981519152601f840160051c810160208510611860575b91849391601f8994920160051c01905b81811061184f5750611723565b898155859450889350600101611842565b5080611832565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386114be565b6118b4620186a0821115611f5c565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386114b7565b8680fd5b8580fd5b50346102fd5760403660031901126102fd57610bcb61190a611c8c565b6024359033612899565b50346102fd5760603660031901126102fd5761192e611c8c565b611936611d05565b604435908115158203610b005760018060a01b0392839161195c83600554163314611f11565b156119ee5716908115908115916119e6575b50156119a95780600554928316600080516020612b0c8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861196e565b9150501660018060a01b0319600654161760065580f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4281611e51565b51915afa611a4e6128f0565b915015611aab57611a6161033391612977565b6108d16034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a9b8151809260208686019101611cbd565b8101036014810184520182611eb9565b50610333611ab7612920565b611a61565b50346102fd57806003193601126102fd57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0060248201611dcc565b03925af18015611c395782918391611bf9575b508115611b9a578015611b5e57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bac60135460125490612000565b4211611bbd57604090601154611b4c565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c31575b81611c1560409383611eb9565b81010312610b08576020611c28826122b0565b91015138611b13565b3d9150611c08565b6040513d84823e3d90fd5b905034610b08576040366003190112610b08576040602092611c64611c8c565b611c6c611ca7565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ca257565b600080fd5b602435906001600160a01b0382168203611ca257565b60005b838110611cd05750506000910152565b8181015183820152602001611cc0565b90602091611cf981518092818552858086019101611cbd565b601f01601f1916010190565b602435908115158203611ca257565b60e0906003190112611ca2576001600160a01b03906004358281168103611ca257916024359081168103611ca25790604435906064359060843560ff81168103611ca2579060a4359060c43590565b6009811015611d7c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dc2575b6020831014611dac57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611da1565b60105460009291611ddc82611d92565b908181526001928381169081600014611e365750600114611dfc57505050565b9092935060106000526020928360002092846000945b838610611e225750505050010190565b805485870183015294019385908201611e12565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6c57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6c57604052565b608081019081106001600160401b03821117611e6c57604052565b601f909101601f19168101906001600160401b03821190821017611e6c57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611e6c57601f01601f191660200190565b15611f1857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f6357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611faf57565b634e487b7160e01b600052601160045260246000fd5b8115611fcf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611faf57600a0a90565b91908203918211611faf57565b91908201809211611faf57565b81810392916000138015828513169184121617611faf57565b60145491929161206f91612060916120569161204c906001600160801b03831690611f9c565b9060801c90611fc5565b93601f5490611f9c565b61206983611fe5565b90611fc5565b808310612137576120836120bf9184611ff3565b916120ba6120b46120ab601e546120a561209c86611fe5565b60215490612000565b90611f9c565b61206984611fe5565b91611fe5565b61200d565b6509184e72a00090818102918183051490151715611faf57670de0b6b3a764000091828102928184051490151715611faf578015611fcf57600160ff1b91808314600019831416611faf5705906000821215612130578114611faf57600003905b80821161212b575090565b905090565b5090612120565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122a35783518085016001600160401b0381118282101761228f5785528881528884808301938285526121958915156122bd565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612285578a91612252575b506122469798999492601894926122296122148a61220f61220661223297620186a06022540490611f9c565b601e5490611f9c565b611fc5565b915191946001600160801b0392831690611f9c565b91511690611fc5565b81811061224a57035b978352522054612309565b9091565b50508261223b565b90508481813d831161227e575b6122698183611eb9565b8101031261227a57516122466121da565b8980fd5b503d61225f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611ca257565b156122c457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123148215156122bd565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123b457600091612381575b509061220f61236d9260225490611f9c565b620186a061237d601e5483611f9c565b0491565b906020823d82116123ac575b8161239a60209383611eb9565b810103126102fd57505161220f61235b565b3d915061238d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123e391612309565b9183526017602052604083205480156124ec5781156124ec578181106124ec57828110156124e25760145461242c9183916107779161204c906001600160801b03831690611f9c565b90620186a092838302928084048514901517156124ce57612451929161206991611ff3565b91601b5491601c5493612464858561200d565b80820291848212600160ff1b8214166124ce5781830514901517156124ba57058184820194851291129080158216911516176124a6575080821261212b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125f2575b1561254d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611e6c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612524565b1561262257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561266757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ca257565b519060ff82168203611ca257565b6005811015611d7c57806126d85750565b600181036127205760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361276d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461277657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161283f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128325781516001600160a01b0381161561282c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561291b573d9061290182611ef6565b9161290f6040519384611eb9565b82523d6000602084013e565b606090565b6040519061292d82611e51565b60038252623f3f3f60e81b6020830152565b908151811015612950570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611faf5760010190565b8051604081106129f257508051810190602081818401930312611ca2576020810151906001600160401b038211611ca2570181603f82011215611ca25760208101516129c281611ef6565b926129d06040519485611eb9565b81845260408284010111611ca2576129ef916040602085019101611cbd565b90565b602092908303612ae0576000805b60ff81168581109081612ac1575b5015612a2257612a1d90612966565b612a00565b9260ff80941692612a3284611ef6565b93612a406040519586611eb9565b808552612a4f601f1991611ef6565b013687860137825b85811687811080612aa4575b15612a9957612a949190612a8e6001600160f81b0319612a83838861293f565b5116871a918861293f565b53612966565b612a57565b505094505050905090565b506001600160f81b0319612ab8828661293f565b51161515612a63565b6001600160f81b03199150612ad6908661293f565b5116151538612a0e565b9150506129ef61292056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220e77aed4cc92dc98e9b17af4953c9c1fefc631164d8d3fd7c22b9105d1942f12964736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c445750806302ce728f14611abc57806306fdde0314611a05578063078dfbe714611914578063095ea7b3146118ed5780630996efb7146114335780630c4e84f01461131b57806318160ddd146112fa5780631c9e379b146112c15780631da8bf101461121357806323b872dd14611076578063313ce56714610fe4578063331960ff14610fc657806334d441d014610fa85780633644e51514610f8d57806337b6b7b914610f6f57806338d52e0f14610f465780633ba0b9a914610f285780633f741adb14610f0357806340626d8b14610ee557806344de240a14610ec7578063473e3ce714610ea957806348e4163e14610e705780634d7f2a3414610e525780634e71e0c814610db6578063529898f214610d9857806352f353eb14610d6f5780635514023214610d4657806355c2ab9414610d1b5780635793546214610cfd5780636c3d8b8f14610cd457806370a0823114610c9b5780637277854714610c6357806374645ff314610c385780637dc0d1d014610c0f5780637ecebe0014610bd65780637fa0b84e14610ba4578063821226e814610b865780638285ef4014610b535780638c5d0ed314610b355780638da5cb5b14610b0c578063910dd7c814610913578063959916dc146108f657806395d89b411461083c57806399a970281461080c5780639c5d7192146107ee5780639e15e89f146107b3578063a9059cbb146106d0578063b0e21e8a146106b2578063b27c0e7414610678578063bb4cfe3b1461065a578063c23ea21f14610631578063ce8849ed14610608578063d505accf14610475578063d8dfeb451461044c578063dd62ed3e14610401578063de406577146103d8578063e0996cb6146103ba578063e30c397814610391578063ea64dd5614610373578063eec0f42e14610355578063f42760b714610337578063f9557ccb146103005763ffe04c66146102e057600080fd5b346102fd57806003193601126102fd576020602b54604051908152f35b80fd5b50346102fd57806003193601126102fd5760255460405190819061033390608081901c906001600160801b031683611edc565b0390f35b50346102fd57806003193601126102fd576020602c54604051908152f35b50346102fd57806003193601126102fd576020600c54604051908152f35b50346102fd57806003193601126102fd576020601f54604051908152f35b50346102fd57806003193601126102fd576006546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601d54604051908152f35b50346102fd57806003193601126102fd576009546040516001600160a01b039091168152602090f35b50346102fd5760403660031901126102fd576040602091610420611c8c565b610428611ca7565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102fd57806003193601126102fd57600b546040516001600160a01b039091168152602090f35b50346102fd5761048436611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826105589694928d9260016105509896019055604051916020830193600080516020612aec833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b51902061051f6124f2565b9060405190602082019261190160f01b8452602283015260428201526042815261054881611e9e565b5190206127c6565b9190916126c7565b160361056a5761056792612899565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102fd57806003193601126102fd576008546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576026546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601e54604051908152f35b50346102fd57806003193601126102fd5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346102fd57806003193601126102fd576020601a54604051908152f35b50346102fd5760403660031901126102fd576106ea611c8c565b602435809281158015906107a1575b610731575b50506040519182526001600160a01b0316903390600080516020612b4c83398151915290602090a3602060405160018152f35b3381526001602052604081205461074a8382101561261b565b6001600160a01b0384169033829003610765575b50506106fe565b60409361077c91610777841515612660565b611ff3565b338352600160205283832055815220610796838254612000565b90558138808061075e565b50336001600160a01b038416146106f9565b50346102fd5760403660031901126102fd5760606107db6107d2611c8c565b6024359061213f565b9060405192835260208301526040820152f35b50346102fd57806003193601126102fd576020602d54604051908152f35b50346102fd5760403660031901126102fd57602061083461082b611c8c565b602435906123c0565b604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261087981611e51565b51915afa6108856128f0565b9150156108e55761089861033391612977565b6108d16023604051809362746d2d60e81b60208301526108c18151809260208686019101611cbd565b8101036003810184520182611eb9565b604051918291602083526020830190611ce0565b506103336108f1612920565b610898565b50346102fd57806003193601126102fd5760208054604051908152f35b50346102fd5760403660031901126102fd576004356001600160401b038111610b085736602382011215610b085780600401358261095082611ef6565b9261095e6040519485611eb9565b82845260208401923660248284010111610b04578060246020930185378401015260243561ffff81168103610b0057610100918284805181010312610afc576109a6906122b0565b6109b2604085016126a5565b916109bf606086016126a5565b9460808101519460a0820151926109d860c084016126b9565b9160e0840151930151938042116105c3578515610ae757600080516020612aec833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610ad3579161ffff610a909896949261055098969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a8181611e82565b6020815191012061051f6124f2565b6001600160a01b0383811691160361056a5715610abd57610567926001600160a01b039081169116612899565b610567926001600160a01b03908116911661284b565b634e487b7160e01b8d52601160045260248dfd5b600080516020612b2c83398151915291610a00565b8480fd5b8380fd5b8280fd5b5080fd5b50346102fd57806003193601126102fd576005546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601b54604051908152f35b50346102fd57806003193601126102fd5760145460405190819061033390608081901c906001600160801b031683611edc565b50346102fd57806003193601126102fd576020602f54604051908152f35b50346102fd5760403660031901126102fd57610bcb610bc1611c8c565b602435903361284b565b602060405160018152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610bfe611c8c565b168152600483522054604051908152f35b50346102fd57806003193601126102fd57600f546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576103336040516108d181610c5c81611dcc565b0382611eb9565b50346102fd5760203660031901126102fd576004359060098210156102fd57602060ff610c8f84611d63565b54166040519015158152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610cc3611c8c565b168152600183522054604051908152f35b50346102fd57806003193601126102fd57600a546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601c54604051908152f35b50346102fd57806003193601126102fd57602e546040805191901c6001600160401b03168152602090f35b50346102fd57806003193601126102fd57602e546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576030546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576020602154604051908152f35b50346102fd57806003193601126102fd576006546001600160a01b039081811633819003610e0e5780600554938416600080516020612b0c8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102fd57806003193601126102fd576020602a54604051908152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610e98611c8c565b168152601783522054604051908152f35b50346102fd57806003193601126102fd576020601554604051908152f35b50346102fd57806003193601126102fd576020600e54604051908152f35b50346102fd57806003193601126102fd576020601654604051908152f35b50346102fd5760603660031901126102fd576020610834604435602435600435612026565b50346102fd57806003193601126102fd576020601154604051908152f35b50346102fd57806003193601126102fd57600d546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601254604051908152f35b50346102fd57806003193601126102fd5760206108346124f2565b50346102fd57806003193601126102fd576020601954604051908152f35b50346102fd57806003193601126102fd576020601354604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102181611e51565b51915afa9061102e6128f0565b918061106b575b15611060576020828051810103126102fd575061105560208092016126b9565b60ff60405191168152f35b505060206012611055565b506020825114611035565b50346102fd5760603660031901126102fd57611090611c8c565b90611099611ca7565b60443591826110d7575b506040519182526001600160a01b03908116921690600080516020612b4c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906111008286101561261b565b861693848403611115575b50505050506110a3565b83865260028352604080872033885284528620546001810161117f575b509260016020969361115d8794604097610777600080516020612b4c8339815191529c9a1515612660565b9285525283832055815220611173858254612000565b9055913880858161110b565b909181106111d3579260016020969361115d8a600080516020612b4c8339815191529a98956111b08260409a611ff3565b86895260028552898920338a528552898920559497509497995050939650611132565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102fd5761122236611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826112b29694928d9260016105509896019055604051916020830193600080516020612b2c833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b160361056a576105679261284b565b50346102fd5760203660031901126102fd576020906040906001600160a01b036112e9611c8c565b168152601883522054604051908152f35b50346102fd57806003193601126102fd57602060255460801c604051908152f35b50346102fd5760403660031901126102fd576004356009811015610b0857611341611d05565b6008549091906001600160a01b031633036113f75760ff61136182611d63565b541615159115159182146113bd57808260ff61137f6113ad94611d63565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d63565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102fd576101803660031901126102fd57602480356001600160a01b0381811691829003610b00576001600160401b036044358181116118e957366023820112156118e95780600401359182116118e957368583830101116118e957606435938385168095036118e5576114ae84600554163314611f11565b600435806118a5575b5080611867575b50848261170d575b505050816116cd575b5050608435806116b5575b5060a4358061169d575b5060c43580611686575b5060e43580611662575b50610104358061163e575b50610124358061160d575b50610144358061159a575b50610164359081611528578280f35b601e54821061153b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6115a9620186a0821115611f5c565b601f5481116115bb57601e5538611519565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a36016553861150e565b61164c620186a08210611f5c565b611659601b548211611f5c565b601c5538611503565b611670620186a08210611f5c565b61167d601c548210611f5c565b601b55386114f8565b611694620186a08210611f5c565b601d55386114ee565b6116ac620186a0821115611f5c565b601a55386114e4565b6116c4620186a0821115611f5c565b601955386114da565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806114cf565b829161171a601054611d92565b601f8111611808575b508790601f841160011461178857889361177b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846114c6565b0101359050843880611738565b60108952601f1984169450600080516020612b6c83398151915292509087908960205b8782106117e957505084600196106117cd575b50505050811b0160105561174f565b60001960f88660031b161c1992010135169055388086816117be565b82850190930135855560019490940193899291820191908101906117ab565b601089529092509050600080516020612b6c833981519152601f840160051c810160208510611860575b91849391601f8994920160051c01905b81811061184f5750611723565b898155859450889350600101611842565b5080611832565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386114be565b6118b4620186a0821115611f5c565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386114b7565b8680fd5b8580fd5b50346102fd5760403660031901126102fd57610bcb61190a611c8c565b6024359033612899565b50346102fd5760603660031901126102fd5761192e611c8c565b611936611d05565b604435908115158203610b005760018060a01b0392839161195c83600554163314611f11565b156119ee5716908115908115916119e6575b50156119a95780600554928316600080516020612b0c8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861196e565b9150501660018060a01b0319600654161760065580f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4281611e51565b51915afa611a4e6128f0565b915015611aab57611a6161033391612977565b6108d16034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a9b8151809260208686019101611cbd565b8101036014810184520182611eb9565b50610333611ab7612920565b611a61565b50346102fd57806003193601126102fd57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0060248201611dcc565b03925af18015611c395782918391611bf9575b508115611b9a578015611b5e57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bac60135460125490612000565b4211611bbd57604090601154611b4c565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c31575b81611c1560409383611eb9565b81010312610b08576020611c28826122b0565b91015138611b13565b3d9150611c08565b6040513d84823e3d90fd5b905034610b08576040366003190112610b08576040602092611c64611c8c565b611c6c611ca7565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ca257565b600080fd5b602435906001600160a01b0382168203611ca257565b60005b838110611cd05750506000910152565b8181015183820152602001611cc0565b90602091611cf981518092818552858086019101611cbd565b601f01601f1916010190565b602435908115158203611ca257565b60e0906003190112611ca2576001600160a01b03906004358281168103611ca257916024359081168103611ca25790604435906064359060843560ff81168103611ca2579060a4359060c43590565b6009811015611d7c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dc2575b6020831014611dac57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611da1565b60105460009291611ddc82611d92565b908181526001928381169081600014611e365750600114611dfc57505050565b9092935060106000526020928360002092846000945b838610611e225750505050010190565b805485870183015294019385908201611e12565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6c57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6c57604052565b608081019081106001600160401b03821117611e6c57604052565b601f909101601f19168101906001600160401b03821190821017611e6c57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611e6c57601f01601f191660200190565b15611f1857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f6357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611faf57565b634e487b7160e01b600052601160045260246000fd5b8115611fcf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611faf57600a0a90565b91908203918211611faf57565b91908201809211611faf57565b81810392916000138015828513169184121617611faf57565b60145491929161206f91612060916120569161204c906001600160801b03831690611f9c565b9060801c90611fc5565b93601f5490611f9c565b61206983611fe5565b90611fc5565b808310612137576120836120bf9184611ff3565b916120ba6120b46120ab601e546120a561209c86611fe5565b60215490612000565b90611f9c565b61206984611fe5565b91611fe5565b61200d565b6509184e72a00090818102918183051490151715611faf57670de0b6b3a764000091828102928184051490151715611faf578015611fcf57600160ff1b91808314600019831416611faf5705906000821215612130578114611faf57600003905b80821161212b575090565b905090565b5090612120565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122a35783518085016001600160401b0381118282101761228f5785528881528884808301938285526121958915156122bd565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612285578a91612252575b506122469798999492601894926122296122148a61220f61220661223297620186a06022540490611f9c565b601e5490611f9c565b611fc5565b915191946001600160801b0392831690611f9c565b91511690611fc5565b81811061224a57035b978352522054612309565b9091565b50508261223b565b90508481813d831161227e575b6122698183611eb9565b8101031261227a57516122466121da565b8980fd5b503d61225f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611ca257565b156122c457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123148215156122bd565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123b457600091612381575b509061220f61236d9260225490611f9c565b620186a061237d601e5483611f9c565b0491565b906020823d82116123ac575b8161239a60209383611eb9565b810103126102fd57505161220f61235b565b3d915061238d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123e391612309565b9183526017602052604083205480156124ec5781156124ec578181106124ec57828110156124e25760145461242c9183916107779161204c906001600160801b03831690611f9c565b90620186a092838302928084048514901517156124ce57612451929161206991611ff3565b91601b5491601c5493612464858561200d565b80820291848212600160ff1b8214166124ce5781830514901517156124ba57058184820194851291129080158216911516176124a6575080821261212b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125f2575b1561254d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611e6c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612524565b1561262257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561266757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ca257565b519060ff82168203611ca257565b6005811015611d7c57806126d85750565b600181036127205760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361276d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461277657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161283f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128325781516001600160a01b0381161561282c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561291b573d9061290182611ef6565b9161290f6040519384611eb9565b82523d6000602084013e565b606090565b6040519061292d82611e51565b60038252623f3f3f60e81b6020830152565b908151811015612950570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611faf5760010190565b8051604081106129f257508051810190602081818401930312611ca2576020810151906001600160401b038211611ca2570181603f82011215611ca25760208101516129c281611ef6565b926129d06040519485611eb9565b81845260408284010111611ca2576129ef916040602085019101611cbd565b90565b602092908303612ae0576000805b60ff81168581109081612ac1575b5015612a2257612a1d90612966565b612a00565b9260ff80941692612a3284611ef6565b93612a406040519586611eb9565b808552612a4f601f1991611ef6565b013687860137825b85811687811080612aa4575b15612a9957612a949190612a8e6001600160f81b0319612a83838861293f565b5116871a918861293f565b53612966565b612a57565b505094505050905090565b506001600160f81b0319612ab8828661293f565b51161515612a63565b6001600160f81b03199150612ad6908661293f565b5116151538612a0e565b9150506129ef61292056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220e77aed4cc92dc98e9b17af4953c9c1fefc631164d8d3fd7c22b9105d1942f12964736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955612b2392836200020784396080518361250c015260a051836125d7015260c051836124d6015260e0518361255b01525182612581015251816125380152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e3c0bb398262238deaea674a33e1d2248bb4e664613cee955c5738abd18fc8aa64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e3c0bb398262238deaea674a33e1d2248bb4e664613cee955c5738abd18fc8aa64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Singularity.json b/src/artifacts/tapioca-bar/Singularity.json index 6200b6f6..e3e37124 100644 --- a/src/artifacts/tapioca-bar/Singularity.json +++ b/src/artifacts/tapioca-bar/Singularity.json @@ -1399,19 +1399,14 @@ "type": "uint256[]" }, { - "internalType": "bytes[]", - "name": "collateralToAssetSwapDatas", - "type": "bytes[]" - }, - { - "internalType": "bytes", - "name": "usdoToBorrowedSwapData", - "type": "bytes" + "internalType": "contract IMarketLiquidatorReceiver[]", + "name": "liquidatorReceivers", + "type": "address[]" }, { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" + "internalType": "bytes[]", + "name": "liquidatorReceiverDatas", + "type": "bytes[]" } ], "name": "liquidate", @@ -1432,13 +1427,13 @@ "type": "address" }, { - "internalType": "contract ISwapper", - "name": "swapper", + "internalType": "contract IMarketLiquidatorReceiver", + "name": "liquidatorReceiver", "type": "address" }, { "internalType": "bytes", - "name": "collateralToAssetSwapData", + "name": "liquidatorReceiverData", "type": "bytes" } ], @@ -1499,19 +1494,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "liquidationQueue", - "outputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lqCollateralizationRate", @@ -2251,29 +2233,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "contract ILiquidationQueue", - "name": "_liquidationQueue", - "type": "address" - }, - { - "internalType": "address", - "name": "_bidExecutionSwapper", - "type": "address" - }, - { - "internalType": "address", - "name": "_usdoSwapper", - "type": "address" - } - ], - "name": "setLiquidationQueueConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -2678,8 +2637,8 @@ "type": "receive" } ], - "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556001603155615f6592836200020c843960805183613d33015260a05183613dee015260c05183613cfd015260e05183613d8201525182613da801525181613d5f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630996efb7146105a15780630c4e84f01461059c57806318160ddd146105975780631c9e379b146105925780631da8bf101461058d5780631ee9c8f21461058857806323b872dd1461058357806325384fd81461057e5780632a9399d914610579578063313ce56714610574578063331960ff1461056f57806334d441d01461056a5780633644e5151461056557806337b6b7b91461056057806338d52e0f1461055b5780633ba0b9a9146105565780633f741adb1461055157806340626d8b1461054c57806344de240a14610547578063473e3ce71461054257806348e4163e1461053d5780634d7f2a34146105385780634ddf47d4146105335780634e71e0c81461052e5780635224372c14610529578063529898f21461052457806352f353eb1461051f578063551402321461051a57806355c2ab9414610515578063579354621461051057806358db9afe1461050b5780635d5f73ef146105065780635dfe04e8146105015780636587adb8146104fc5780636c3d8b8f146104f757806370a08231146104f257806372778547146104ed57806374645ff3146104e85780637dc0d1d0146104e35780637ecebe00146104de5780637fa0b84e146104d9578063821226e8146104d45780638285ef40146104cf5780638c5d0ed3146104ca5780638da5cb5b146104c5578063910dd7c8146104c0578063959916dc146104bb57806395d89b41146104b657806399a97028146104b15780639c5d7192146104ac5780639e15e89f146104a7578063a28e6b82146104a2578063a9059cbb1461049d578063aa7d966514610498578063accfde4a14610493578063ae70702e1461048e578063af405b4c14610489578063b0e21e8a14610484578063b25ea8fb1461047f578063b27c0e741461047a578063bb4cfe3b14610475578063bf0b895814610470578063c23ea21f1461046b578063c861a52614610466578063cce19f8114610461578063cd0211eb1461045c578063ce8849ed14610457578063cfba1b4614610452578063d49dffa71461044d578063d505accf14610448578063d8dfeb4514610443578063dd62ed3e1461043e578063de40657714610439578063e0996cb614610434578063e30c39781461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063f42760b71461041b578063f496696714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e57612fac565b612f79565b612f60565b612f37565b612eed565b612ce1565b612cc3565b612ca5565b612c87565b612c03565b612bda565b612bbc565b612b93565b612b63565b612b3a565b612a9e565b6129bb565b612926565b6128fd565b612896565b61285b565b612832565b612809565b612757565b612739565b6126ff565b612672565b612654565b612560565b612481565b6121c9565b61202c565b611e87565b611ddd565b611d9f565b611d81565b611d56565b611cc1565b611ca4565b611c29565b611bc5565b611ba7565b611b74565b611b3c565b611b12565b611ad5565b611aac565b6119dd565b6118a7565b61182c565b611803565b6117ba565b611720565b6116eb565b611648565b61162a565b6115ff565b6115d6565b6115ad565b611583565b611523565b61147c565b61124a565b61122c565b6111ef565b6111d1565b6111b3565b611195565b611171565b611153565b61112a565b61110c565b6110e9565b6110cb565b6110ad565b61100c565b610f34565b610ede565b610dcc565b610cd1565b610bc8565b610b3b565b610b1a565b610a23565b610999565b610937565b61082e565b61075b565b6106d9565b610695565b6001600160a01b031690565b6001600160a01b038116036105dc57565b600080fd5b35906105ec826105cb565b565b60409060031901126105dc57600435610606816105cb565b90602435610613816105cb565b90565b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260276020526040902090565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b346105dc5760206106c56106a8366105ee565b6001600160a01b039091166000908152600384526040902061067e565b54604051908152f35b60009103126105dc57565b346105dc5760003660031901126105dc5760406106f4613a2d565b825191151582526020820152f35b60005b8381106107155750506000910152565b8181015183820152602001610705565b9060209161073e81518092818552858086019101610702565b601f01601f1916010190565b906020610613928181520190610725565b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261079981611969565b51915afa6107a5614a27565b91501561080a576107ec6107fa6107be61080693614b43565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614a10565b03601f1981018352826119ba565b6040519182918261074a565b0390f35b506108066107ec6107fa61081c614a57565b6107be565b80fd5b801515036105dc57565b346105dc5760603660031901126105dc5760043561084b816105cb565b6024359061085882610824565b6044359161086583610824565b6005546001600160a01b03919061087f9083163314612fca565b1561091e57811691821590811591610916575b50156108d9576108c7916108af6108aa6005546105bf565b6105bf565b600080516020615e90833981519152600080a3613015565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610892565b60068054919092166001600160a01b0319909116179055005b346105dc5760403660031901126105dc57610961600435610957816105cb565b60243590336142d9565b602060405160018152f35b9181601f840112156105dc578235916001600160401b0383116105dc57602083818601950101116105dc57565b346105dc576101803660031901126105dc576024356109b7816105cb565b604435906001600160401b0382116105dc576109da61001992369060040161096c565b90606435926109e8846105cb565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435613037565b6004359060098210156105dc57565b346105dc5760403660031901126105dc57610a3c610a14565b602435610a4881610824565b6008546001600160a01b03163303610ade57610acd82610a7c610a77610a706100199661188e565b5460ff1690565b151590565b610a8b8415159182141561351d565b610a97610a708361188e565b610aa08361187f565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461188e565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105dc5760003660031901126105dc57602060255460801c604051908152f35b346105dc5760203660031901126105dc57600435610b58816105cb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105dc57565b60e09060031901126105dc57600435610b9b816105cb565b90602435610ba8816105cb565b906044359060643590608435610bbd81610b78565b9060a4359060c43590565b346105dc57610bd636610b83565b9592809594959291924211610c8c5761001996610c8793610c7493610c67878a610c5f8b6107ec610c6c99610c0a86614264565b60405195869460208601988991959493909260c09360e0840197600080516020615eb083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061420f565b614197565b91909161407c565b6001600160a01b03838116911614614017565b61428c565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105dc5760c03660031901126105dc57600435610cee816105cb565b608435610cfa816105cb565b60a435906001600160401b0382116105dc5761080692610d7c610d81926107ec610d2b610d9096369060040161096c565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615951565b615d18565b60208082518301019101613b62565b6040519081529081906020820190565b60609060031901126105dc57600435610db8816105cb565b90602435610dc5816105cb565b9060443590565b346105dc57610e14600080516020615ed0833981519152610dec36610da0565b9291939083610e23575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610e2c85610616565b54610e3985821015613e14565b6001600160a01b038281169186918816839003610e59575b505050610df6565b610e87610e8c93610e73610e6c8b610630565b339061067e565b548460018201610eb4575b50501515613e59565b61360a565b610e9586610616565b55610e9f81610616565b610eaa858254613617565b9055388481610e51565b81610e8782610ec4941015613e9e565b610ed633610ed18d610630565b61067e565b553884610e7e565b346105dc5760003660031901126105dc576033546040516001600160a01b039091168152602090f35b908160609103126105dc5790565b908160e09103126105dc5790565b60809060a31901126105dc5760a490565b610120806003193601126105dc57600435610f4e816105cb565b60443590610f5b82610824565b6001600160401b03906064358281116105dc57610f7c903690600401610f07565b936084359283116105dc576107ec61100161001996610fef610fa5610d7c973690600401610f15565b91610faf36610f23565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159a4565b8581036023190160a4870152906159e8565b9160c4840190615add565b346105dc5760008060031936011261082157808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261104a81611969565b51915afa90611057614a27565b91806110a2575b15611096576020828051810103126108215750602061080691015161108281610b78565b60405160ff90911681529081906020820190565b50506108066012611082565b50602082511461105e565b346105dc5760003660031901126105dc576020601354604051908152f35b346105dc5760003660031901126105dc576020601954604051908152f35b346105dc5760003660031901126105dc576020611104613cfa565b604051908152f35b346105dc5760003660031901126105dc576020601254604051908152f35b346105dc5760003660031901126105dc57600d546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601154604051908152f35b346105dc5760603660031901126105dc5760206111046044356024356004356136c4565b346105dc5760003660031901126105dc576020601654604051908152f35b346105dc5760003660031901126105dc576020600e54604051908152f35b346105dc5760003660031901126105dc576020601554604051908152f35b346105dc5760203660031901126105dc5760043561120c816105cb565b60018060a01b031660005260176020526020604060002054604051908152f35b346105dc5760003660031901126105dc576020602a54604051908152f35b346105dc5760203660031901126105dc576004356001600160401b0381116105dc5761127a90369060040161096c565b9060ff602354166114415761129191810190614c41565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561143c57806113e29f8180916113576113dd9f8f90848f61132a826113a09f94819560009161140e575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b61134061133b6108aa600a546105bf565b613015565b1615159182611402575b826113f4575b5050614cf1565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d91565b610019600160ff196023541617602355565b9091501615158f8490611350565b8d82161515925061134a565b61142f915060203d8111611435575b61142781836119ba565b810190614cdc565b38611307565b503d61141d565b61399b565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105dc57600080600319360112610821576006546001600160a01b0316338190036114df57806114cc916114b56108aa6005546105bf565b600080516020615e908339815191528580a3613015565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105dc5761155e6107ec61155961153a36610da0565b6040516314890dcb60e21b60208201529485939092906024850161592f565b615db1565b6040818051810103126105dc5780604060208193015191015182519182526020820152f35b346105dc5760003660031901126105dc576020602154604051908152f35b6001600160401b031690565b346105dc5760003660031901126105dc576030546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040805191901c6001600160401b03168152602090f35b346105dc5760003660031901126105dc576020601c54604051908152f35b346105dc5760a03660031901126105dc57600435611665816105cb565b606435611671816105cb565b608435906001600160401b0382116105dc5761080692610d7c610d81926107ec6116a2610d9096369060040161096c565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615951565b346105dc5760003660031901126105dc576032546040516001600160a01b039091168152602090f35b6001600160801b031690565b346105dc5760003660031901126105dc5761173961432b565b506080611744614455565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b60809060031901126105dc57600435611799816105cb565b906024356117a6816105cb565b906044356117b381610824565b9060643590565b346105dc5760206111046117cd36611781565b926007600093929352600786526117ec60ff6040600020541615615095565b6117f684826150d2565b6117fe614917565b615178565b346105dc5760003660031901126105dc57600a546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611849816105cb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561188957565b611869565b6009811015611889576000526007602052604060002090565b346105dc5760203660031901126105dc576118c0610a14565b6009811015611889576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611916575b602083101461190057565b634e487b7160e01b600052602260045260246000fd5b91607f16916118f5565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161194957604052565b611920565b606081019081106001600160401b0382111761194957604052565b604081019081106001600160401b0382111761194957604052565b60c081019081106001600160401b0382111761194957604052565b60e081019081106001600160401b0382111761194957604052565b601f909101601f19168101906001600160401b0382119082101761194957604052565b346105dc5760008060031936011261082157604051816010546119ff816118e6565b80845290600190818116908115611a845750600114611a3d575b61080684611a29818803826119ba565b604051918291602083526020830190610725565b6010835260209450600080516020615f108339815191525b828410611a71575050508161080693611a299282010193611a19565b8054858501870152928501928101611a55565b6108069650611a299450602092508593915060ff191682840152151560051b82010193611a19565b346105dc5760003660031901126105dc57600f546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611af2816105cb565b60018060a01b031660005260046020526020604060002054604051908152f35b346105dc5760403660031901126105dc57610961600435611b32816105cb565b602435903361428c565b346105dc5760003660031901126105dc576020602f54604051908152f35b6001600160801b0391821681529116602082015260400190565b346105dc5760003660031901126105dc5760145460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020601b54604051908152f35b346105dc5760003660031901126105dc576005546040516001600160a01b039091168152602090f35b6001600160401b03811161194957601f01601f191660200190565b6024359061ffff821682036105dc57565b359061ffff821682036105dc57565b346105dc5760403660031901126105dc576004356001600160401b0381116105dc57366023820112156105dc578060040135611c6481611bee565b90611c7260405192836119ba565b80825236602482850101116105dc57602081600092602461001996018386013783010152611c9e611c09565b90613ee5565b346105dc5760003660031901126105dc5760208054604051908152f35b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611cff81611969565b51915afa611d0b614a27565b915015611d3f576107ec6107fa611d2461080693614b43565b60405162746d2d60e81b6020820152928391602383016107e6565b506108066107ec6107fa611d51614a57565b611d24565b346105dc5760403660031901126105dc576020611104600435611d78816105cb565b60243590613c39565b346105dc5760003660031901126105dc576020602d54604051908152f35b346105dc5760403660031901126105dc576060611dca600435611dc1816105cb565b602435906137a8565b9060405192835260208301526040820152f35b346105dc5760803660031901126105dc57600435611dfa816105cb565b602435611e06816105cb565b60443590611e13826105cb565b606435926001600160401b0384116105dc576107ec611e8292611e3d61001996369060040161096c565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615951565b615ddb565b346105dc5760403660031901126105dc57600435611ea4816105cb565b6024358015801590611f4e575b611ee4575b6040519081526001600160a01b03909116903390600080516020615ed0833981519152908060208101610e14565b611eed33610616565b54611efa82821015613e14565b6001600160a01b03831690829033839003611f18575b505050611eb6565b610e87611f26931515613e59565b611f2f33610616565b55611f3982610616565b611f44828254613617565b9055388181611f10565b50336001600160a01b03831614611eb1565b9181601f840112156105dc578235916001600160401b0383116105dc576020808501948460051b0101116105dc57565b906040820191604081528151809352606081019260208093019060005b81811061201657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611fe85750505050505090565b9091929394958480612006600193601f198682030187528a51610725565b9801930193019194939290611fd8565b8251151586529484019491840191600101611fad565b346105dc576040806003193601126105dc57600480356001600160401b0381116105dc5761205d9036908301611f60565b929060243561206b81610824565b60026031541461215a57600260315561208385614f30565b9361208d86614f58565b95600090815b8181106120b4578888610806896120aa6001603155565b5192839283611f90565b82806120c183858a614fa2565b906120d08b5180938193614fe3565b0390305af46120dd614a27565b90801580612153575b61212c57829161210761210c92612100612127968e614ff1565b9015159052565b615005565b612116828c614ff1565b52612121818b614ff1565b50614255565b612093565b888661214f61213a85615005565b925162461bcd60e51b8152928392830161074a565b0390fd5b50866120e6565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105dc57565b60a435906001600160401b03821682036105dc57565b346105dc5760e03660031901126105dc576024356004356044356064356121ee61219d565b906121f76121b3565b9060c4359361221160018060a01b03600554163314612fca565b80612449575b50806123eb575b506001600160401b03918083169081612384575b505081811680612314575b505050806122dc575b5080612295575b508061225557005b80612267620186a06100199310615c81565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122a8620186a06122d6931115615c81565b80602a547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602a55565b3861224d565b8061230e91602f547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602f55565b38612246565b61237c92602e546123288282168411615c81565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602e8054600160401b600160801b03191660409290921b600160401b600160801b0316919091179055565b38808061223d565b6123e49184602e5461239c828260401c168410615c81565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a3602e80546001600160401b0319166001600160401b0392909216919091179055565b3880612232565b80612402670de0b6b3a76400006124309310615c81565b80602c547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602c55565b61244361243e602c546135f4565b602d55565b3861221e565b8061247b91602b547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602b55565b38612217565b346105dc5760403660031901126105dc5760043561249e816105cb565b6124e160243591600e548314600014612555576020602854935b6124c66108aa6009546105bf565b6040518080968194627eeac760e11b83528760048401614efe565b03915afa801561143c5761080693610d909360009261251f575b50612509612518929361064a565b90600052602052604060002090565b5490613617565b61251892506125476125099160203d811161254e575b61253f81836119ba565b810190613b62565b92506124fb565b503d612535565b6020602954936124b8565b346105dc5760008060031936011261082157610d906108069160018060a01b0361258f81600554163314612fca565b61259c81600a54166105bf565b60245490929060801c6125be575b50506125b581610616565b54903390615533565b6125c6614917565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e76125fb6125f660245460801c90565b611714565b9261260585610616565b612610858254613617565b90558416918281600080516020615ed08339815191526040518061263989829190602083019252565b0390a3602480546001600160801b0316905580a338806125aa565b346105dc5760003660031901126105dc576020601a54604051908152f35b346105dc5760403660031901126105dc5760243561268f816105cb565b6126a460018060a01b03600554163314612fca565b60008080808094600435905af16126b9614a27565b50156126c25780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105dc5760003660031901126105dc5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b346105dc5760003660031901126105dc576020601e54604051908152f35b346105dc5760403660031901126105dc576025546127a8602061277e6108aa6009546105bf565b612789601454611714565b906040518080958194638eb22cdd60e01b8352602435600484016143fc565b03915afa91821561143c576127e16127d961080694610d90946000916127eb575b506001600160801b038416613617565b6004356135ae565b9060801c906135d7565b612803915060203d811161254e5761253f81836119ba565b386127c9565b346105dc5760003660031901126105dc576026546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576034546040516001600160a01b039091168152602090f35b346105dc576100196107ec61289161287236610da0565b60405163cce19f8160e01b60208201529485939092906024850161592f565b615e05565b346105dc5760206111046128ef6128ac36611781565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261155981611984565b828082518301019101613b62565b346105dc5760003660031901126105dc576008546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc576001600160401b036004358181116105dc57612957903690600401611f60565b6024358381116105dc5761296f903690600401611f60565b6044929192358581116105dc5761298a903690600401611f60565b916064359687116105dc576129a661001997369060040161096c565b959094608435976129b6896105cb565b615bb6565b610140806003193601126105dc57600435906129d6826105cb565b606435906129e382610824565b6001600160401b03926084358481116105dc57612a04903690600401610f07565b9360a4359081116105dc57612a1d903690600401610f15565b9360803660c31901126105dc5761001994612a80612a9292610d7c9560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159a4565b8381036023190160c4850152906159e8565b6107ec60e48301615a88565b346105dc57612aac36610b83565b9592809594959291924211610c8c5761001996612b3593610c7493610c67878a610c5f8b6107ec610c6c99612ae086614264565b60405195869460208601988991959493909260c09360e0840197600080516020615e5083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6142d9565b346105dc5760003660031901126105dc57600b546040516001600160a01b039091168152602090f35b346105dc5760206106c5612b76366105ee565b6001600160a01b039091166000908152600284526040902061067e565b346105dc5760003660031901126105dc576009546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601d54604051908152f35b346105dc5760003660031901126105dc576006546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc57610019600435612c23816105cb565b60243590612c30826105cb565b60443590612c3d82610824565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128918161199f565b346105dc5760003660031901126105dc576020601f54604051908152f35b346105dc5760003660031901126105dc576020600c54604051908152f35b346105dc5760003660031901126105dc576020602c54604051908152f35b346105dc5760603660031901126105dc57600435612cfe816105cb565b60243590612d0b826105cb565b60443591612d18836105cb565b6005546001600160a01b039290612d329084163314612fca565b8281169081612e61575b505081811680612dd9575b5050811680612d5257005b604051916000917f3b9b7263cc05ae90b456a560e6740524a87c96696165f24f3aecbe42b9176f778380a2612d8b6108aa6026546105bf565b90813b15612dd55763036252c960e41b84526001600160a01b031660048401528290602490829084905af1801561143c57612dc257005b80612dcf61001992611936565b806106ce565b8280fd5b604051916000917f1602f9f47bbf51628a9becdcc4582b22b157c0cbbe8ba4473f24b151fd335fc28380a2612e126108aa6026546105bf565b90813b15612dd55763575939f960e01b84526001600160a01b031660048401528290602490829084905af1801561143c57612e4e575b80612d47565b80612dcf612e5b92611936565b38612e48565b6020600492604051938480926307be4daf60e01b82525afa91821561143c57612eb892612e9691600091612ebf575b50615cd3565b602680546001600160a01b0319166001600160a01b0392909216919091179055565b3880612d3c565b612ee0915060203d8111612ee6575b612ed881836119ba565b810190615cbe565b38612e90565b503d612ece565b346105dc576020612f30611104612f0336610da0565b90600860009593955260078652612f2260ff6040600020541615615095565b612f2a614917565b846156fa565b80926150d2565b346105dc5760003660031901126105dc576035546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc57610019614917565b346105dc5760003660031901126105dc5760255460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020602b54604051908152f35b15612fd157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906130539086163314612fca565b806132b6575b5083811661326c575b5080613237575b5050811690816131d7575b5050806131b9575b508061319b575b508061317e575b5080613154575b508061312a575b50806130f2575b50806130c6575b50806130af5750565b6105ec906130c1601e548210156134b6565b601f55565b806130d9620186a06130ec9311156132fd565b6130e7601f5482111561345c565b601e55565b386130a6565b80613124916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861309f565b8061313c620186a061314e93106132fd565b613149601b5482116132fd565b601c55565b38613098565b80613166620186a061317893106132fd565b613173601c5482106132fd565b601b55565b38613091565b80613190620186a061319593106132fd565b601d55565b3861308a565b806131ae620186a06131b39311156132fd565b601a55565b38613083565b806131cc620186a06131d19311156132fd565b601955565b3861307c565b613230916131e96108aa6008546105bf565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880613074565b61324091613391565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880613069565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138613062565b806132c9620186a06132f79311156132fd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b38613059565b1561330457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f8111613349575050565b6000906010825260208220906020601f850160051c83019410613387575b601f0160051c01915b82811061337c57505050565b818155600101613370565b9092508290613367565b91906001600160401b038111611949576133b5816133b06010546118e6565b61333d565b6000601f82116001146133ef578192936000926133e4575b50508160011b916000199060031b1c191617601055565b0135905038806133cd565b6010600052601f19821693600080516020615f1083398151915291805b868110613444575083600195961061342a575b505050811b01601055565b0135600019600384901b60f8161c1916905538808061341f565b9092602060018192868601358155019401910161340c565b1561346357565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156134bd57565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561352457565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561358c57565b61355e565b90670de0b6b3a76400009182810292818404149015171561358c57565b8181029291811591840414171561358c57565b634e487b7160e01b600052601260045260246000fd5b81156135e1570490565b6135c1565b604d811161358c57600a0a90565b90670de0b6b3a764000091820391821161358c57565b9190820391821161358c57565b9190820180921161358c57565b8181039291600013801582851316918412161761358c57565b906509184e72a0009182810292818405149015171561358c57565b90670de0b6b3a76400009182810292818405149015171561358c57565b818102929160008212600160ff1b82141661358c57818405149015171561358c57565b81156135e157600160ff1b811460001983141661358c570590565b600160ff1b811461358c5760000390565b601454919291906136df906001600160801b038316906135ae565b9060801c9081156135e15761370c916136fd910493601f54906135ae565b613706836135e6565b906135d7565b908183106137a05761377161376b61376661372a613776958761360a565b9361376161375b613752601e5461374c613743866135e6565b60215490613617565b906135ae565b613706846135e6565b916135e6565b613624565b61363d565b91613658565b613698565b600081121561379a57613788906136b3565b905b808211613795575090565b905090565b9061378a565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156138d657613830906137d861434a565b506137e1614455565b50505050509490506137f4841515613b16565b60206138046108aa6009546105bf565b600c54906138118a610664565b5460405163442c159960e01b8152968793849283929160048401613b71565b03915afa92831561143c576138ad956137066125f6602061388e6138808a61387b6138726138a79c6138969a8c916138b9575b50602254620186a0900461374c565b601e54906135ae565b6135d7565b9761374c6125f68751611714565b930151611714565b908282106138b15750035b94610664565b54613b89565b9091565b9150506138a1565b6138d09150873d811161254e5761253f81836119ba565b38613863565b505080919250918190565b91908260409103126105dc57602082516138fa81610824565b92015190565b602080825260009160105491613915836118e6565b9283828401526001908181169081600014613978575060011461393a575b5050505090565b929350601060005280600020926000935b8585106139645750505060409250010138808080613933565b80548585016040015293820193810161394b565b925050506040935060ff929192191683830152151560051b010138808080613933565b6040513d6000823e3d90fd5b156139ae57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156139f157565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b613a3b6108aa600f546105bf565b6040805163d6d7d52560e01b81529291839081600081613a5d60048201613900565b03925af1801561143c576000928391613ae2575b50908215613abd57613a848215156139ea565b613a8d82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105ec42601355565b9050613ad9613ad160135460125490613617565b4211156139a7565b60115490613ab4565b9050613b0691925060403d8111613b0f575b613afe81836119ba565b8101906138e1565b91909138613a71565b503d613af4565b15613b1d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105dc575190565b60409060009294936060820195825260208201520152565b613bc56020831592613b9b8415613b16565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401613b71565b03915afa801561143c57613be591600091613bff575b50602254906135ae565b906135e15704620186a0613bfb601e54836135ae565b0491565b613c17915060203d811161254e5761253f81836119ba565b38613bdb565b9190916000838201938412911290801582169115161761358c57565b90613c4a613c68916138a784610664565b6001600160a01b039093166000908152601760205260409020909291565b5480156137a05782156137a0578281106137a05781811015613cf15782613cb1613cac613cb795610e87613706956127e16014549160018060801b038316906135ae565b613574565b9261360a565b613ce5601b5491613ce0613cd7601c5492613cd28487613624565b613675565b620186a0900590565b613c1d565b90808212613795575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613deb575b15613d55577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613de581611984565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613d2c565b15613e1b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613e6057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613ea557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105dc576020810151613f0381610824565b604082015192613f12846105cb565b606083015194613f21866105cb565b60808401519460a085015160c086015193613f3b85610b78565b60e08701519601516001600160a01b0392831698831696428310610c8c57613feb95613fdf8a8c610c5f81996107ec613fe4998f8f60001461400257600080516020615e50833981519152965b613f9187614264565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614063565b1614614017565b15613ff9576105ec926142d9565b6105ec9261428c565b600080516020615eb083398151915296613f88565b1561401e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106139391610c6c93614197565b6005111561188957565b61408581614072565b8061408d5750565b61409681614072565b600181036140de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6140e781614072565b600281036141345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614140600392614072565b1461414757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116142035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561143c5781516001600160a01b038116156141fd579190565b50600190565b50505050600090600390565b614217613cfa565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176119495760405251902090565b600019811461358c5760010190565b6001600160a01b0316600090815260046020526040902080549061428782614255565b905590565b60018060a01b0380911691826000526003602052836142af82604060002061067e565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b038091169384600052600283528561431f82604060002061067e565b556040519586521693a3565b604051906143388261194e565b60006040838281528260208201520152565b6040519061435782611969565b60006020838281520152565b6001600160401b039091169052565b6001600160801b039091169052565b6040519061438e8261194e565b816040602454600180831b03808216845281831c16602084015260801c910152565b604051906143bd82611969565b6014546001600160801b038116835260801c6020830152565b604051906143e382611969565b6025546001600160801b038116835260801c6020830152565b9081526001600160801b0390911660208201526001604082015260600190565b9081526001600160801b0390911660208201526000604082015260600190565b6001600160801b03918216908216019190821161358c57565b61445d61432b565b5061446661434a565b5061446f61434a565b50614478614381565b906144816143b0565b9061448a6143d6565b90600061449b6108aa6009546105bf565b90600e54906144ca60206144af8751611714565b6040518093819263442c159960e01b8352876004840161441c565b0381875afa801561143c576144f5916000916148af575b506144ef6125f68951611714565b90613617565b9384614895576000925b839461451f61451961451460208d01516115a1565b6115a1565b4261360a565b94851561486b57506001600160401b039061453f42831660208d01614363565b60208a01516001600160801b039790889061455990611714565b16156148135750858a5161456c90611714565b61457590611714565b8c51614580906115a1565b614589906115a1565b614592916135ae565b9061459c916135ae565b670de0b6b3a76400009004978789168b516145b690611714565b906145c09161443c565b6145ca908c614372565b601a546145d7908a6135ae565b620186a0900460208c01516145eb90611714565b6145f490611714565b6145fd916135ae565b90614607916135d7565b96871660408c0181815161461a90611714565b906146249161443c565b61462d91614372565b60208a0190815161463d90611714565b906146479161443c565b61465091614372565b885161465b90611714565b60405163442c159960e01b8152938491829161467b91906004840161441c565b03815a93602094fa91821561143c578a926146a6916000916147f4575b506144ef6125f68c51611714565b806147da57506000945b602b548681811015614741579361387b61470d936146fb6145146147066147006146ed8861387b6146e86147139d9e6145149c61360a565b613591565b946146fb602f5496806135ae565b6135ae565b84613617565b94516115a1565b8a614363565b61471d89516115a1565b614728602e546115a1565b91808316911610614737575b50565b6105ec9089614363565b919050602c54808311614756575b5050505050565b6147c8946146fb61451461479961479361478561477c6146e861387b986147a09b61360a565b602d54906135d7565b966146fb602f5498806135ae565b86613617565b92516115a1565b602e546147b89060401c6001600160401b03166115a1565b8082116147d2575b501689614363565b873880808061474f565b9050386147c0565b6147ee9061387b6146e86125f68d51611714565b946146b0565b61480d915060203d60201161254e5761253f81836119ba565b38614698565b999a9650509350509350935061482982516115a1565b6148346030546115a1565b91808316911603614856575b50939261484b6143d6565b926000926000929190565b81614862929450614363565b60019138614840565b99975050509550505050509161487f6143b0565b916148886143d6565b9160009160009190600090565b6148a98561387b6146e86125f68b51611714565b926144ff565b6148c8915060203d60201161254e5761253f81836119ba565b386144e1565b602480546001600160401b0319166001600160401b0392909216919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105ec6149b96149e0614928614455565b9397949593909290156149e55750505060018060401b0360305416600080600080516020615ef08339815191526020604051838152a45b8051614973906001600160401b03166148ce565b6020810151602480546040938401516001600160401b039091169290931b600160401b600160801b03169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6148f0565b83516040519384526001600160401b031692600080516020615ef083398151915290602090a461495f565b90614a2360209282815194859201610702565b0190565b3d15614a52573d90614a3882611bee565b91614a4660405193846119ba565b82523d6000602084013e565b606090565b60405190614a6482611969565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a9d570160200190565b614a76565b60ff1660ff811461358c5760010190565b90614abd82611bee565b614aca60405191826119ba565b8281528092614adb601f1991611bee565b0190602036910137565b6020818303126105dc578051906001600160401b0382116105dc570181601f820112156105dc578051614b1781611bee565b92614b2560405194856119ba565b818452602082840101116105dc576106139160208085019101610702565b805160408110614b6157508060208061061393518301019101614ae5565b602092908303614c36576000805b60ff81168581109081614c14575b5015614b9157614b8c90614aa2565b614b6f565b92614b9f60ff809516614ab3565b92825b85811687811080614bf5575b15614bea579081614bdf614bd6614bc8614be59588614a8c565b516001600160f81b03191690565b871a9188614a8c565b53614aa2565b614ba2565b505094505050905090565b506001600160f81b0319614c0c614bc88387614a8c565b161515614bae565b6001600160f81b03199150614c2d90614bc89087614a8c565b16151538614b7d565b915050610613614a57565b90816101a09103126105dc578035614c58816105cb565b916020820135614c67816105cb565b916040810135614c76816105cb565b91614c83606083016105e1565b91614c90608082016105e1565b91614c9d60a083016105e1565b9160c081013591614cb060e083016105e1565b9161010081013591614cc561012083016105e1565b916101408101359161018061016083013592013590565b908160209103126105dc5751610613816105cb565b15614cf857565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d3457565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b602e80546001600160801b0319166c49d482460000000000097343e017908190556b0a9456c7acbaf3a129576cd1602b1b602f55614df490614dd2906115a1565b603080546001600160401b0319166001600160401b0392909216919091179055565b614e07614e026030546115a1565b6148ce565b614e0f613a2d565b5050614e1c6103e8601955565b614e266000601a55565b614e306032602055565b614e3b612ee0602155565b8015614ef157601e555b8015614ee457601f555b614e5e601f54601e5410614d2d565b614e696161a8602a55565b8015614ed2576022555b614e7f62013880601b55565b614e8b62015f90601c55565b614e96612710601d55565b614ea7670429d069189e0000602b55565b614eb86706f05b59d3b20000602c55565b614ec661243e602c546135f4565b6105ec62015180601255565b50614e73670de0b6b3a7640000602255565b50614e4f620138806130c1565b50614e45620124f86130e7565b6001600160a01b039091168152602081019190915260400190565b6001600160401b0381116119495760051b60200190565b90614f3a82614f19565b614f4760405191826119ba565b8281528092614adb601f1991614f19565b90614f6282614f19565b614f6f60405191826119ba565b8281528092614f80601f1991614f19565b019060005b828110614f9157505050565b806060602080938501015201614f85565b9190811015614a9d5760051b81013590601e19813603018212156105dc5701803591906001600160401b0383116105dc5760200182360381136105dc579190565b908092918237016000815290565b8051821015614a9d5760209160051b010190565b6103e881511161506157604481511061502e578060248060046106139401518301019101614ae5565b5060405161503b81611969565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161506e81611969565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561509c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150e857505050565b6000526002602052816150ff33604060002061067e565b541061513c5760001961511533610ed184610630565b540361511f575050565b61513061513891610ed13391610630565b91825461360a565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151856143d6565b9160018060801b0395866151998551611714565b16936151db60206151ae6108aa6009546105bf565b600e54906151bd601454611714565b604051638eb22cdd60e01b81529485938492839291600484016143fc565b03915afa801561143c576151f89160009161533a575b5086613617565b8061531457506103e886985b61521e8a826152166020870151611714565b91169061443c565b1610615308576152a061528e9594939261523f6149e08b8a6152b196615358565b61524881610616565b6152538b8254613617565b90556040518a81526001600160a01b0382811698909761529b9287928b91600091600080516020615ed0833981519152919081906020820190565b0390a38a600e54896153fe565b61064a565b602854600052602052604060002090565b6152bc868254613617565b9055156152f25750600080516020615e308339815191526152e16108aa6009546105bf565b915b604051878152921691602090a4565b600080516020615e3083398151915290916152e3565b50600096505050505050565b6153346103e89161387b61532e6125f66020870151611714565b8a6135ae565b98615204565b615352915060203d811161254e5761253f81836119ba565b386151f1565b919061537c9061536661434a565b5060018060801b0391828092168286511661443c565b168352615392816020850193168284511661443c565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b156153c957565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461547f575060206154399161541e6108aa6009546105bf565b6040518080958194627eeac760e11b83523060048401614efe565b03915afa92831561143c576105ec9361545a92600091615461575b5061360a565b10156153c2565b615479915060203d811161254e5761253f81836119ba565b38615454565b919092506154916108aa6009546105bf565b803b156105dc576154bf936000809460405196879586948593630208d92960e11b8552309060048601615398565b03925af1801561143c576154d05750565b80612dcf6105ec92611936565b6001600160801b03918216908216039190821161358c57565b156154fd57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156f1576155526143d6565b9461555d8651611714565b61557060206151ae6108aa6009546105bf565b03915afa91821561143c5785916000936156d1575b50169061559191613617565b61559b90836135ae565b90602087019182516155ac90611714565b6155b590611714565b6155be916135d7565b9687946155ca83610616565b858154906155d79161360a565b90556040518581526001600160a01b0393841694906000908690600080516020615ed083398151915290602090a3818716835161561390611714565b9061561d916154dd565b6156279084614372565b818616815161563590611714565b9061563f916154dd565b6156499082614372565b5161565390611714565b166103e81115615662906154f6565b61566b906148f0565b604051928352841691600080516020615e7083398151915290602090a4600954615694906105bf565b61569d906105bf565b90600e5490823b156105dc576154bf9260009283879360405196879586948593630208d92960e11b85523060048601615398565b6156ea91935060203d811161254e5761253f81836119ba565b9138615585565b50600093505050565b6025546001600160801b0394939192919060801c156156f15761571b6143d6565b906157268251611714565b61573960206151ae6108aa6009546105bf565b03915afa91821561143c57889160009361590f575b50169061575a91613617565b61576490826135ae565b6020830190815161577490611714565b61577d90611714565b615786916135d7565b96879361579287610616565b8481549061579f9161360a565b90556040518481526001600160a01b03888116949093916000908690600080516020615ed083398151915290602090a381871683516157dd90611714565b906157e7916154dd565b6157f19084614372565b81861681516157ff90611714565b90615809916154dd565b6158139082614372565b5161581d90611714565b166103e8111561582c906154f6565b615835906148f0565b604051928352841691600080516020615e7083398151915290602090a460095461585e906105bf565b615867906105bf565b90600e5490823b156105dc5761589b9260009283889360405196879586948593630208d92960e11b85523060048601615398565b03925af1801561143c576158fc575b506158b48161064a565b6158cb602854809290600052602052604060002090565b548411156158e557506158e26152a060009261064a565b55565b6125096158f19261064a565b61513883825461360a565b80612dcf61590992611936565b386158aa565b61592891935060203d811161254e5761253f81836119ba565b913861574e565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105dc570160208101919035906001600160401b0382116105dc5781360383136105dc57565b9060606159d86106139380356159b9816105cb565b6001600160a01b03168452602081810135908501526040810190615972565b9190928160408201520191615951565b908135815261ffff806159fd60208501611c1a565b166020830152615a0f60408401611c1a565b16604082015260c06060830135615a25816105cb565b6001600160a01b03908116606084015281615a75615a5a615a496080880188615972565b60e0608089015260e0880191615951565b615a6760a0880188615972565b9087830360a0890152615951565b940135615a81816105cb565b1691015290565b606060c435615a96816105cb565b6001600160a01b0390811683528060e435615ab0816105cb565b1660208401528061010435615ac4816105cb565b16604084015261012435615ad7816105cb565b16910152565b60609081813591615aed836105cb565b6001600160a01b039283168552826020820135615b09816105cb565b166020860152826040820135615b1e816105cb565b1660408601520135615ad7816105cb565b81835290916001600160fb1b0383116105dc5760209260051b809284830137010190565b9082818152602080910193818360051b82010194846000925b858410615b7d575050505050505090565b909192939495968580615ba5600193601f19868203018852615b9f8c88615972565b90615951565b990194019401929594939190615b6c565b98979592969391949096604051976020906367dd0da360e11b828b01528060c48b0160a060248d01525260e48a019b9160005b828110615c555750505050936107ec93615c34615c43948a9894615c246147349d9e611e829c9a602319988d60448b82860301910152615b2f565b91868b84030160648c0152615b53565b92878403016084880152615951565b6001600160a01b0390921660a4840152565b9091929c82808f9260019335615c6a816105cb565b848060a01b03168152019e01910192919092615be9565b15615c8857565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b908160209103126105dc575161061381610824565b15615cda57565b60405162461bcd60e51b815260206004820152601660248201527514d1d30e881314481b9bdd081a5b9a5d185b1a5e995960521b6044820152606490fd5b6035546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b9115615d4a57565b61214f615d5683615005565b60405162461bcd60e51b8152602060048201529182916024830190610725565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6032546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6034546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a2756fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2666e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a641142288be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212201d475f623f9f2dd29517348e035a8b767eff1e759b069657a51ee85a1b63ae7864736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630996efb7146105a15780630c4e84f01461059c57806318160ddd146105975780631c9e379b146105925780631da8bf101461058d5780631ee9c8f21461058857806323b872dd1461058357806325384fd81461057e5780632a9399d914610579578063313ce56714610574578063331960ff1461056f57806334d441d01461056a5780633644e5151461056557806337b6b7b91461056057806338d52e0f1461055b5780633ba0b9a9146105565780633f741adb1461055157806340626d8b1461054c57806344de240a14610547578063473e3ce71461054257806348e4163e1461053d5780634d7f2a34146105385780634ddf47d4146105335780634e71e0c81461052e5780635224372c14610529578063529898f21461052457806352f353eb1461051f578063551402321461051a57806355c2ab9414610515578063579354621461051057806358db9afe1461050b5780635d5f73ef146105065780635dfe04e8146105015780636587adb8146104fc5780636c3d8b8f146104f757806370a08231146104f257806372778547146104ed57806374645ff3146104e85780637dc0d1d0146104e35780637ecebe00146104de5780637fa0b84e146104d9578063821226e8146104d45780638285ef40146104cf5780638c5d0ed3146104ca5780638da5cb5b146104c5578063910dd7c8146104c0578063959916dc146104bb57806395d89b41146104b657806399a97028146104b15780639c5d7192146104ac5780639e15e89f146104a7578063a28e6b82146104a2578063a9059cbb1461049d578063aa7d966514610498578063accfde4a14610493578063ae70702e1461048e578063af405b4c14610489578063b0e21e8a14610484578063b25ea8fb1461047f578063b27c0e741461047a578063bb4cfe3b14610475578063bf0b895814610470578063c23ea21f1461046b578063c861a52614610466578063cce19f8114610461578063cd0211eb1461045c578063ce8849ed14610457578063cfba1b4614610452578063d49dffa71461044d578063d505accf14610448578063d8dfeb4514610443578063dd62ed3e1461043e578063de40657714610439578063e0996cb614610434578063e30c39781461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063f42760b71461041b578063f496696714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e57612fac565b612f79565b612f60565b612f37565b612eed565b612ce1565b612cc3565b612ca5565b612c87565b612c03565b612bda565b612bbc565b612b93565b612b63565b612b3a565b612a9e565b6129bb565b612926565b6128fd565b612896565b61285b565b612832565b612809565b612757565b612739565b6126ff565b612672565b612654565b612560565b612481565b6121c9565b61202c565b611e87565b611ddd565b611d9f565b611d81565b611d56565b611cc1565b611ca4565b611c29565b611bc5565b611ba7565b611b74565b611b3c565b611b12565b611ad5565b611aac565b6119dd565b6118a7565b61182c565b611803565b6117ba565b611720565b6116eb565b611648565b61162a565b6115ff565b6115d6565b6115ad565b611583565b611523565b61147c565b61124a565b61122c565b6111ef565b6111d1565b6111b3565b611195565b611171565b611153565b61112a565b61110c565b6110e9565b6110cb565b6110ad565b61100c565b610f34565b610ede565b610dcc565b610cd1565b610bc8565b610b3b565b610b1a565b610a23565b610999565b610937565b61082e565b61075b565b6106d9565b610695565b6001600160a01b031690565b6001600160a01b038116036105dc57565b600080fd5b35906105ec826105cb565b565b60409060031901126105dc57600435610606816105cb565b90602435610613816105cb565b90565b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260276020526040902090565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b346105dc5760206106c56106a8366105ee565b6001600160a01b039091166000908152600384526040902061067e565b54604051908152f35b60009103126105dc57565b346105dc5760003660031901126105dc5760406106f4613a2d565b825191151582526020820152f35b60005b8381106107155750506000910152565b8181015183820152602001610705565b9060209161073e81518092818552858086019101610702565b601f01601f1916010190565b906020610613928181520190610725565b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261079981611969565b51915afa6107a5614a27565b91501561080a576107ec6107fa6107be61080693614b43565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614a10565b03601f1981018352826119ba565b6040519182918261074a565b0390f35b506108066107ec6107fa61081c614a57565b6107be565b80fd5b801515036105dc57565b346105dc5760603660031901126105dc5760043561084b816105cb565b6024359061085882610824565b6044359161086583610824565b6005546001600160a01b03919061087f9083163314612fca565b1561091e57811691821590811591610916575b50156108d9576108c7916108af6108aa6005546105bf565b6105bf565b600080516020615e90833981519152600080a3613015565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610892565b60068054919092166001600160a01b0319909116179055005b346105dc5760403660031901126105dc57610961600435610957816105cb565b60243590336142d9565b602060405160018152f35b9181601f840112156105dc578235916001600160401b0383116105dc57602083818601950101116105dc57565b346105dc576101803660031901126105dc576024356109b7816105cb565b604435906001600160401b0382116105dc576109da61001992369060040161096c565b90606435926109e8846105cb565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435613037565b6004359060098210156105dc57565b346105dc5760403660031901126105dc57610a3c610a14565b602435610a4881610824565b6008546001600160a01b03163303610ade57610acd82610a7c610a77610a706100199661188e565b5460ff1690565b151590565b610a8b8415159182141561351d565b610a97610a708361188e565b610aa08361187f565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461188e565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105dc5760003660031901126105dc57602060255460801c604051908152f35b346105dc5760203660031901126105dc57600435610b58816105cb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105dc57565b60e09060031901126105dc57600435610b9b816105cb565b90602435610ba8816105cb565b906044359060643590608435610bbd81610b78565b9060a4359060c43590565b346105dc57610bd636610b83565b9592809594959291924211610c8c5761001996610c8793610c7493610c67878a610c5f8b6107ec610c6c99610c0a86614264565b60405195869460208601988991959493909260c09360e0840197600080516020615eb083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061420f565b614197565b91909161407c565b6001600160a01b03838116911614614017565b61428c565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105dc5760c03660031901126105dc57600435610cee816105cb565b608435610cfa816105cb565b60a435906001600160401b0382116105dc5761080692610d7c610d81926107ec610d2b610d9096369060040161096c565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615951565b615d18565b60208082518301019101613b62565b6040519081529081906020820190565b60609060031901126105dc57600435610db8816105cb565b90602435610dc5816105cb565b9060443590565b346105dc57610e14600080516020615ed0833981519152610dec36610da0565b9291939083610e23575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610e2c85610616565b54610e3985821015613e14565b6001600160a01b038281169186918816839003610e59575b505050610df6565b610e87610e8c93610e73610e6c8b610630565b339061067e565b548460018201610eb4575b50501515613e59565b61360a565b610e9586610616565b55610e9f81610616565b610eaa858254613617565b9055388481610e51565b81610e8782610ec4941015613e9e565b610ed633610ed18d610630565b61067e565b553884610e7e565b346105dc5760003660031901126105dc576033546040516001600160a01b039091168152602090f35b908160609103126105dc5790565b908160e09103126105dc5790565b60809060a31901126105dc5760a490565b610120806003193601126105dc57600435610f4e816105cb565b60443590610f5b82610824565b6001600160401b03906064358281116105dc57610f7c903690600401610f07565b936084359283116105dc576107ec61100161001996610fef610fa5610d7c973690600401610f15565b91610faf36610f23565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159a4565b8581036023190160a4870152906159e8565b9160c4840190615add565b346105dc5760008060031936011261082157808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261104a81611969565b51915afa90611057614a27565b91806110a2575b15611096576020828051810103126108215750602061080691015161108281610b78565b60405160ff90911681529081906020820190565b50506108066012611082565b50602082511461105e565b346105dc5760003660031901126105dc576020601354604051908152f35b346105dc5760003660031901126105dc576020601954604051908152f35b346105dc5760003660031901126105dc576020611104613cfa565b604051908152f35b346105dc5760003660031901126105dc576020601254604051908152f35b346105dc5760003660031901126105dc57600d546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601154604051908152f35b346105dc5760603660031901126105dc5760206111046044356024356004356136c4565b346105dc5760003660031901126105dc576020601654604051908152f35b346105dc5760003660031901126105dc576020600e54604051908152f35b346105dc5760003660031901126105dc576020601554604051908152f35b346105dc5760203660031901126105dc5760043561120c816105cb565b60018060a01b031660005260176020526020604060002054604051908152f35b346105dc5760003660031901126105dc576020602a54604051908152f35b346105dc5760203660031901126105dc576004356001600160401b0381116105dc5761127a90369060040161096c565b9060ff602354166114415761129191810190614c41565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561143c57806113e29f8180916113576113dd9f8f90848f61132a826113a09f94819560009161140e575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b61134061133b6108aa600a546105bf565b613015565b1615159182611402575b826113f4575b5050614cf1565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d91565b610019600160ff196023541617602355565b9091501615158f8490611350565b8d82161515925061134a565b61142f915060203d8111611435575b61142781836119ba565b810190614cdc565b38611307565b503d61141d565b61399b565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105dc57600080600319360112610821576006546001600160a01b0316338190036114df57806114cc916114b56108aa6005546105bf565b600080516020615e908339815191528580a3613015565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105dc5761155e6107ec61155961153a36610da0565b6040516314890dcb60e21b60208201529485939092906024850161592f565b615db1565b6040818051810103126105dc5780604060208193015191015182519182526020820152f35b346105dc5760003660031901126105dc576020602154604051908152f35b6001600160401b031690565b346105dc5760003660031901126105dc576030546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040805191901c6001600160401b03168152602090f35b346105dc5760003660031901126105dc576020601c54604051908152f35b346105dc5760a03660031901126105dc57600435611665816105cb565b606435611671816105cb565b608435906001600160401b0382116105dc5761080692610d7c610d81926107ec6116a2610d9096369060040161096c565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615951565b346105dc5760003660031901126105dc576032546040516001600160a01b039091168152602090f35b6001600160801b031690565b346105dc5760003660031901126105dc5761173961432b565b506080611744614455565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b60809060031901126105dc57600435611799816105cb565b906024356117a6816105cb565b906044356117b381610824565b9060643590565b346105dc5760206111046117cd36611781565b926007600093929352600786526117ec60ff6040600020541615615095565b6117f684826150d2565b6117fe614917565b615178565b346105dc5760003660031901126105dc57600a546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611849816105cb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561188957565b611869565b6009811015611889576000526007602052604060002090565b346105dc5760203660031901126105dc576118c0610a14565b6009811015611889576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611916575b602083101461190057565b634e487b7160e01b600052602260045260246000fd5b91607f16916118f5565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161194957604052565b611920565b606081019081106001600160401b0382111761194957604052565b604081019081106001600160401b0382111761194957604052565b60c081019081106001600160401b0382111761194957604052565b60e081019081106001600160401b0382111761194957604052565b601f909101601f19168101906001600160401b0382119082101761194957604052565b346105dc5760008060031936011261082157604051816010546119ff816118e6565b80845290600190818116908115611a845750600114611a3d575b61080684611a29818803826119ba565b604051918291602083526020830190610725565b6010835260209450600080516020615f108339815191525b828410611a71575050508161080693611a299282010193611a19565b8054858501870152928501928101611a55565b6108069650611a299450602092508593915060ff191682840152151560051b82010193611a19565b346105dc5760003660031901126105dc57600f546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611af2816105cb565b60018060a01b031660005260046020526020604060002054604051908152f35b346105dc5760403660031901126105dc57610961600435611b32816105cb565b602435903361428c565b346105dc5760003660031901126105dc576020602f54604051908152f35b6001600160801b0391821681529116602082015260400190565b346105dc5760003660031901126105dc5760145460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020601b54604051908152f35b346105dc5760003660031901126105dc576005546040516001600160a01b039091168152602090f35b6001600160401b03811161194957601f01601f191660200190565b6024359061ffff821682036105dc57565b359061ffff821682036105dc57565b346105dc5760403660031901126105dc576004356001600160401b0381116105dc57366023820112156105dc578060040135611c6481611bee565b90611c7260405192836119ba565b80825236602482850101116105dc57602081600092602461001996018386013783010152611c9e611c09565b90613ee5565b346105dc5760003660031901126105dc5760208054604051908152f35b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611cff81611969565b51915afa611d0b614a27565b915015611d3f576107ec6107fa611d2461080693614b43565b60405162746d2d60e81b6020820152928391602383016107e6565b506108066107ec6107fa611d51614a57565b611d24565b346105dc5760403660031901126105dc576020611104600435611d78816105cb565b60243590613c39565b346105dc5760003660031901126105dc576020602d54604051908152f35b346105dc5760403660031901126105dc576060611dca600435611dc1816105cb565b602435906137a8565b9060405192835260208301526040820152f35b346105dc5760803660031901126105dc57600435611dfa816105cb565b602435611e06816105cb565b60443590611e13826105cb565b606435926001600160401b0384116105dc576107ec611e8292611e3d61001996369060040161096c565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615951565b615ddb565b346105dc5760403660031901126105dc57600435611ea4816105cb565b6024358015801590611f4e575b611ee4575b6040519081526001600160a01b03909116903390600080516020615ed0833981519152908060208101610e14565b611eed33610616565b54611efa82821015613e14565b6001600160a01b03831690829033839003611f18575b505050611eb6565b610e87611f26931515613e59565b611f2f33610616565b55611f3982610616565b611f44828254613617565b9055388181611f10565b50336001600160a01b03831614611eb1565b9181601f840112156105dc578235916001600160401b0383116105dc576020808501948460051b0101116105dc57565b906040820191604081528151809352606081019260208093019060005b81811061201657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611fe85750505050505090565b9091929394958480612006600193601f198682030187528a51610725565b9801930193019194939290611fd8565b8251151586529484019491840191600101611fad565b346105dc576040806003193601126105dc57600480356001600160401b0381116105dc5761205d9036908301611f60565b929060243561206b81610824565b60026031541461215a57600260315561208385614f30565b9361208d86614f58565b95600090815b8181106120b4578888610806896120aa6001603155565b5192839283611f90565b82806120c183858a614fa2565b906120d08b5180938193614fe3565b0390305af46120dd614a27565b90801580612153575b61212c57829161210761210c92612100612127968e614ff1565b9015159052565b615005565b612116828c614ff1565b52612121818b614ff1565b50614255565b612093565b888661214f61213a85615005565b925162461bcd60e51b8152928392830161074a565b0390fd5b50866120e6565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105dc57565b60a435906001600160401b03821682036105dc57565b346105dc5760e03660031901126105dc576024356004356044356064356121ee61219d565b906121f76121b3565b9060c4359361221160018060a01b03600554163314612fca565b80612449575b50806123eb575b506001600160401b03918083169081612384575b505081811680612314575b505050806122dc575b5080612295575b508061225557005b80612267620186a06100199310615c81565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122a8620186a06122d6931115615c81565b80602a547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602a55565b3861224d565b8061230e91602f547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602f55565b38612246565b61237c92602e546123288282168411615c81565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602e8054600160401b600160801b03191660409290921b600160401b600160801b0316919091179055565b38808061223d565b6123e49184602e5461239c828260401c168410615c81565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a3602e80546001600160401b0319166001600160401b0392909216919091179055565b3880612232565b80612402670de0b6b3a76400006124309310615c81565b80602c547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602c55565b61244361243e602c546135f4565b602d55565b3861221e565b8061247b91602b547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602b55565b38612217565b346105dc5760403660031901126105dc5760043561249e816105cb565b6124e160243591600e548314600014612555576020602854935b6124c66108aa6009546105bf565b6040518080968194627eeac760e11b83528760048401614efe565b03915afa801561143c5761080693610d909360009261251f575b50612509612518929361064a565b90600052602052604060002090565b5490613617565b61251892506125476125099160203d811161254e575b61253f81836119ba565b810190613b62565b92506124fb565b503d612535565b6020602954936124b8565b346105dc5760008060031936011261082157610d906108069160018060a01b0361258f81600554163314612fca565b61259c81600a54166105bf565b60245490929060801c6125be575b50506125b581610616565b54903390615533565b6125c6614917565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e76125fb6125f660245460801c90565b611714565b9261260585610616565b612610858254613617565b90558416918281600080516020615ed08339815191526040518061263989829190602083019252565b0390a3602480546001600160801b0316905580a338806125aa565b346105dc5760003660031901126105dc576020601a54604051908152f35b346105dc5760403660031901126105dc5760243561268f816105cb565b6126a460018060a01b03600554163314612fca565b60008080808094600435905af16126b9614a27565b50156126c25780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105dc5760003660031901126105dc5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b346105dc5760003660031901126105dc576020601e54604051908152f35b346105dc5760403660031901126105dc576025546127a8602061277e6108aa6009546105bf565b612789601454611714565b906040518080958194638eb22cdd60e01b8352602435600484016143fc565b03915afa91821561143c576127e16127d961080694610d90946000916127eb575b506001600160801b038416613617565b6004356135ae565b9060801c906135d7565b612803915060203d811161254e5761253f81836119ba565b386127c9565b346105dc5760003660031901126105dc576026546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576034546040516001600160a01b039091168152602090f35b346105dc576100196107ec61289161287236610da0565b60405163cce19f8160e01b60208201529485939092906024850161592f565b615e05565b346105dc5760206111046128ef6128ac36611781565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261155981611984565b828082518301019101613b62565b346105dc5760003660031901126105dc576008546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc576001600160401b036004358181116105dc57612957903690600401611f60565b6024358381116105dc5761296f903690600401611f60565b6044929192358581116105dc5761298a903690600401611f60565b916064359687116105dc576129a661001997369060040161096c565b959094608435976129b6896105cb565b615bb6565b610140806003193601126105dc57600435906129d6826105cb565b606435906129e382610824565b6001600160401b03926084358481116105dc57612a04903690600401610f07565b9360a4359081116105dc57612a1d903690600401610f15565b9360803660c31901126105dc5761001994612a80612a9292610d7c9560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159a4565b8381036023190160c4850152906159e8565b6107ec60e48301615a88565b346105dc57612aac36610b83565b9592809594959291924211610c8c5761001996612b3593610c7493610c67878a610c5f8b6107ec610c6c99612ae086614264565b60405195869460208601988991959493909260c09360e0840197600080516020615e5083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6142d9565b346105dc5760003660031901126105dc57600b546040516001600160a01b039091168152602090f35b346105dc5760206106c5612b76366105ee565b6001600160a01b039091166000908152600284526040902061067e565b346105dc5760003660031901126105dc576009546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601d54604051908152f35b346105dc5760003660031901126105dc576006546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc57610019600435612c23816105cb565b60243590612c30826105cb565b60443590612c3d82610824565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128918161199f565b346105dc5760003660031901126105dc576020601f54604051908152f35b346105dc5760003660031901126105dc576020600c54604051908152f35b346105dc5760003660031901126105dc576020602c54604051908152f35b346105dc5760603660031901126105dc57600435612cfe816105cb565b60243590612d0b826105cb565b60443591612d18836105cb565b6005546001600160a01b039290612d329084163314612fca565b8281169081612e61575b505081811680612dd9575b5050811680612d5257005b604051916000917f3b9b7263cc05ae90b456a560e6740524a87c96696165f24f3aecbe42b9176f778380a2612d8b6108aa6026546105bf565b90813b15612dd55763036252c960e41b84526001600160a01b031660048401528290602490829084905af1801561143c57612dc257005b80612dcf61001992611936565b806106ce565b8280fd5b604051916000917f1602f9f47bbf51628a9becdcc4582b22b157c0cbbe8ba4473f24b151fd335fc28380a2612e126108aa6026546105bf565b90813b15612dd55763575939f960e01b84526001600160a01b031660048401528290602490829084905af1801561143c57612e4e575b80612d47565b80612dcf612e5b92611936565b38612e48565b6020600492604051938480926307be4daf60e01b82525afa91821561143c57612eb892612e9691600091612ebf575b50615cd3565b602680546001600160a01b0319166001600160a01b0392909216919091179055565b3880612d3c565b612ee0915060203d8111612ee6575b612ed881836119ba565b810190615cbe565b38612e90565b503d612ece565b346105dc576020612f30611104612f0336610da0565b90600860009593955260078652612f2260ff6040600020541615615095565b612f2a614917565b846156fa565b80926150d2565b346105dc5760003660031901126105dc576035546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc57610019614917565b346105dc5760003660031901126105dc5760255460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020602b54604051908152f35b15612fd157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906130539086163314612fca565b806132b6575b5083811661326c575b5080613237575b5050811690816131d7575b5050806131b9575b508061319b575b508061317e575b5080613154575b508061312a575b50806130f2575b50806130c6575b50806130af5750565b6105ec906130c1601e548210156134b6565b601f55565b806130d9620186a06130ec9311156132fd565b6130e7601f5482111561345c565b601e55565b386130a6565b80613124916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861309f565b8061313c620186a061314e93106132fd565b613149601b5482116132fd565b601c55565b38613098565b80613166620186a061317893106132fd565b613173601c5482106132fd565b601b55565b38613091565b80613190620186a061319593106132fd565b601d55565b3861308a565b806131ae620186a06131b39311156132fd565b601a55565b38613083565b806131cc620186a06131d19311156132fd565b601955565b3861307c565b613230916131e96108aa6008546105bf565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880613074565b61324091613391565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880613069565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138613062565b806132c9620186a06132f79311156132fd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b38613059565b1561330457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f8111613349575050565b6000906010825260208220906020601f850160051c83019410613387575b601f0160051c01915b82811061337c57505050565b818155600101613370565b9092508290613367565b91906001600160401b038111611949576133b5816133b06010546118e6565b61333d565b6000601f82116001146133ef578192936000926133e4575b50508160011b916000199060031b1c191617601055565b0135905038806133cd565b6010600052601f19821693600080516020615f1083398151915291805b868110613444575083600195961061342a575b505050811b01601055565b0135600019600384901b60f8161c1916905538808061341f565b9092602060018192868601358155019401910161340c565b1561346357565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156134bd57565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561352457565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561358c57565b61355e565b90670de0b6b3a76400009182810292818404149015171561358c57565b8181029291811591840414171561358c57565b634e487b7160e01b600052601260045260246000fd5b81156135e1570490565b6135c1565b604d811161358c57600a0a90565b90670de0b6b3a764000091820391821161358c57565b9190820391821161358c57565b9190820180921161358c57565b8181039291600013801582851316918412161761358c57565b906509184e72a0009182810292818405149015171561358c57565b90670de0b6b3a76400009182810292818405149015171561358c57565b818102929160008212600160ff1b82141661358c57818405149015171561358c57565b81156135e157600160ff1b811460001983141661358c570590565b600160ff1b811461358c5760000390565b601454919291906136df906001600160801b038316906135ae565b9060801c9081156135e15761370c916136fd910493601f54906135ae565b613706836135e6565b906135d7565b908183106137a05761377161376b61376661372a613776958761360a565b9361376161375b613752601e5461374c613743866135e6565b60215490613617565b906135ae565b613706846135e6565b916135e6565b613624565b61363d565b91613658565b613698565b600081121561379a57613788906136b3565b905b808211613795575090565b905090565b9061378a565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156138d657613830906137d861434a565b506137e1614455565b50505050509490506137f4841515613b16565b60206138046108aa6009546105bf565b600c54906138118a610664565b5460405163442c159960e01b8152968793849283929160048401613b71565b03915afa92831561143c576138ad956137066125f6602061388e6138808a61387b6138726138a79c6138969a8c916138b9575b50602254620186a0900461374c565b601e54906135ae565b6135d7565b9761374c6125f68751611714565b930151611714565b908282106138b15750035b94610664565b54613b89565b9091565b9150506138a1565b6138d09150873d811161254e5761253f81836119ba565b38613863565b505080919250918190565b91908260409103126105dc57602082516138fa81610824565b92015190565b602080825260009160105491613915836118e6565b9283828401526001908181169081600014613978575060011461393a575b5050505090565b929350601060005280600020926000935b8585106139645750505060409250010138808080613933565b80548585016040015293820193810161394b565b925050506040935060ff929192191683830152151560051b010138808080613933565b6040513d6000823e3d90fd5b156139ae57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156139f157565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b613a3b6108aa600f546105bf565b6040805163d6d7d52560e01b81529291839081600081613a5d60048201613900565b03925af1801561143c576000928391613ae2575b50908215613abd57613a848215156139ea565b613a8d82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105ec42601355565b9050613ad9613ad160135460125490613617565b4211156139a7565b60115490613ab4565b9050613b0691925060403d8111613b0f575b613afe81836119ba565b8101906138e1565b91909138613a71565b503d613af4565b15613b1d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105dc575190565b60409060009294936060820195825260208201520152565b613bc56020831592613b9b8415613b16565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401613b71565b03915afa801561143c57613be591600091613bff575b50602254906135ae565b906135e15704620186a0613bfb601e54836135ae565b0491565b613c17915060203d811161254e5761253f81836119ba565b38613bdb565b9190916000838201938412911290801582169115161761358c57565b90613c4a613c68916138a784610664565b6001600160a01b039093166000908152601760205260409020909291565b5480156137a05782156137a0578281106137a05781811015613cf15782613cb1613cac613cb795610e87613706956127e16014549160018060801b038316906135ae565b613574565b9261360a565b613ce5601b5491613ce0613cd7601c5492613cd28487613624565b613675565b620186a0900590565b613c1d565b90808212613795575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613deb575b15613d55577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613de581611984565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613d2c565b15613e1b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613e6057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613ea557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105dc576020810151613f0381610824565b604082015192613f12846105cb565b606083015194613f21866105cb565b60808401519460a085015160c086015193613f3b85610b78565b60e08701519601516001600160a01b0392831698831696428310610c8c57613feb95613fdf8a8c610c5f81996107ec613fe4998f8f60001461400257600080516020615e50833981519152965b613f9187614264565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614063565b1614614017565b15613ff9576105ec926142d9565b6105ec9261428c565b600080516020615eb083398151915296613f88565b1561401e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106139391610c6c93614197565b6005111561188957565b61408581614072565b8061408d5750565b61409681614072565b600181036140de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6140e781614072565b600281036141345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614140600392614072565b1461414757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116142035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561143c5781516001600160a01b038116156141fd579190565b50600190565b50505050600090600390565b614217613cfa565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176119495760405251902090565b600019811461358c5760010190565b6001600160a01b0316600090815260046020526040902080549061428782614255565b905590565b60018060a01b0380911691826000526003602052836142af82604060002061067e565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b038091169384600052600283528561431f82604060002061067e565b556040519586521693a3565b604051906143388261194e565b60006040838281528260208201520152565b6040519061435782611969565b60006020838281520152565b6001600160401b039091169052565b6001600160801b039091169052565b6040519061438e8261194e565b816040602454600180831b03808216845281831c16602084015260801c910152565b604051906143bd82611969565b6014546001600160801b038116835260801c6020830152565b604051906143e382611969565b6025546001600160801b038116835260801c6020830152565b9081526001600160801b0390911660208201526001604082015260600190565b9081526001600160801b0390911660208201526000604082015260600190565b6001600160801b03918216908216019190821161358c57565b61445d61432b565b5061446661434a565b5061446f61434a565b50614478614381565b906144816143b0565b9061448a6143d6565b90600061449b6108aa6009546105bf565b90600e54906144ca60206144af8751611714565b6040518093819263442c159960e01b8352876004840161441c565b0381875afa801561143c576144f5916000916148af575b506144ef6125f68951611714565b90613617565b9384614895576000925b839461451f61451961451460208d01516115a1565b6115a1565b4261360a565b94851561486b57506001600160401b039061453f42831660208d01614363565b60208a01516001600160801b039790889061455990611714565b16156148135750858a5161456c90611714565b61457590611714565b8c51614580906115a1565b614589906115a1565b614592916135ae565b9061459c916135ae565b670de0b6b3a76400009004978789168b516145b690611714565b906145c09161443c565b6145ca908c614372565b601a546145d7908a6135ae565b620186a0900460208c01516145eb90611714565b6145f490611714565b6145fd916135ae565b90614607916135d7565b96871660408c0181815161461a90611714565b906146249161443c565b61462d91614372565b60208a0190815161463d90611714565b906146479161443c565b61465091614372565b885161465b90611714565b60405163442c159960e01b8152938491829161467b91906004840161441c565b03815a93602094fa91821561143c578a926146a6916000916147f4575b506144ef6125f68c51611714565b806147da57506000945b602b548681811015614741579361387b61470d936146fb6145146147066147006146ed8861387b6146e86147139d9e6145149c61360a565b613591565b946146fb602f5496806135ae565b6135ae565b84613617565b94516115a1565b8a614363565b61471d89516115a1565b614728602e546115a1565b91808316911610614737575b50565b6105ec9089614363565b919050602c54808311614756575b5050505050565b6147c8946146fb61451461479961479361478561477c6146e861387b986147a09b61360a565b602d54906135d7565b966146fb602f5498806135ae565b86613617565b92516115a1565b602e546147b89060401c6001600160401b03166115a1565b8082116147d2575b501689614363565b873880808061474f565b9050386147c0565b6147ee9061387b6146e86125f68d51611714565b946146b0565b61480d915060203d60201161254e5761253f81836119ba565b38614698565b999a9650509350509350935061482982516115a1565b6148346030546115a1565b91808316911603614856575b50939261484b6143d6565b926000926000929190565b81614862929450614363565b60019138614840565b99975050509550505050509161487f6143b0565b916148886143d6565b9160009160009190600090565b6148a98561387b6146e86125f68b51611714565b926144ff565b6148c8915060203d60201161254e5761253f81836119ba565b386144e1565b602480546001600160401b0319166001600160401b0392909216919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105ec6149b96149e0614928614455565b9397949593909290156149e55750505060018060401b0360305416600080600080516020615ef08339815191526020604051838152a45b8051614973906001600160401b03166148ce565b6020810151602480546040938401516001600160401b039091169290931b600160401b600160801b03169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6148f0565b83516040519384526001600160401b031692600080516020615ef083398151915290602090a461495f565b90614a2360209282815194859201610702565b0190565b3d15614a52573d90614a3882611bee565b91614a4660405193846119ba565b82523d6000602084013e565b606090565b60405190614a6482611969565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a9d570160200190565b614a76565b60ff1660ff811461358c5760010190565b90614abd82611bee565b614aca60405191826119ba565b8281528092614adb601f1991611bee565b0190602036910137565b6020818303126105dc578051906001600160401b0382116105dc570181601f820112156105dc578051614b1781611bee565b92614b2560405194856119ba565b818452602082840101116105dc576106139160208085019101610702565b805160408110614b6157508060208061061393518301019101614ae5565b602092908303614c36576000805b60ff81168581109081614c14575b5015614b9157614b8c90614aa2565b614b6f565b92614b9f60ff809516614ab3565b92825b85811687811080614bf5575b15614bea579081614bdf614bd6614bc8614be59588614a8c565b516001600160f81b03191690565b871a9188614a8c565b53614aa2565b614ba2565b505094505050905090565b506001600160f81b0319614c0c614bc88387614a8c565b161515614bae565b6001600160f81b03199150614c2d90614bc89087614a8c565b16151538614b7d565b915050610613614a57565b90816101a09103126105dc578035614c58816105cb565b916020820135614c67816105cb565b916040810135614c76816105cb565b91614c83606083016105e1565b91614c90608082016105e1565b91614c9d60a083016105e1565b9160c081013591614cb060e083016105e1565b9161010081013591614cc561012083016105e1565b916101408101359161018061016083013592013590565b908160209103126105dc5751610613816105cb565b15614cf857565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d3457565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b602e80546001600160801b0319166c49d482460000000000097343e017908190556b0a9456c7acbaf3a129576cd1602b1b602f55614df490614dd2906115a1565b603080546001600160401b0319166001600160401b0392909216919091179055565b614e07614e026030546115a1565b6148ce565b614e0f613a2d565b5050614e1c6103e8601955565b614e266000601a55565b614e306032602055565b614e3b612ee0602155565b8015614ef157601e555b8015614ee457601f555b614e5e601f54601e5410614d2d565b614e696161a8602a55565b8015614ed2576022555b614e7f62013880601b55565b614e8b62015f90601c55565b614e96612710601d55565b614ea7670429d069189e0000602b55565b614eb86706f05b59d3b20000602c55565b614ec661243e602c546135f4565b6105ec62015180601255565b50614e73670de0b6b3a7640000602255565b50614e4f620138806130c1565b50614e45620124f86130e7565b6001600160a01b039091168152602081019190915260400190565b6001600160401b0381116119495760051b60200190565b90614f3a82614f19565b614f4760405191826119ba565b8281528092614adb601f1991614f19565b90614f6282614f19565b614f6f60405191826119ba565b8281528092614f80601f1991614f19565b019060005b828110614f9157505050565b806060602080938501015201614f85565b9190811015614a9d5760051b81013590601e19813603018212156105dc5701803591906001600160401b0383116105dc5760200182360381136105dc579190565b908092918237016000815290565b8051821015614a9d5760209160051b010190565b6103e881511161506157604481511061502e578060248060046106139401518301019101614ae5565b5060405161503b81611969565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161506e81611969565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561509c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150e857505050565b6000526002602052816150ff33604060002061067e565b541061513c5760001961511533610ed184610630565b540361511f575050565b61513061513891610ed13391610630565b91825461360a565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151856143d6565b9160018060801b0395866151998551611714565b16936151db60206151ae6108aa6009546105bf565b600e54906151bd601454611714565b604051638eb22cdd60e01b81529485938492839291600484016143fc565b03915afa801561143c576151f89160009161533a575b5086613617565b8061531457506103e886985b61521e8a826152166020870151611714565b91169061443c565b1610615308576152a061528e9594939261523f6149e08b8a6152b196615358565b61524881610616565b6152538b8254613617565b90556040518a81526001600160a01b0382811698909761529b9287928b91600091600080516020615ed0833981519152919081906020820190565b0390a38a600e54896153fe565b61064a565b602854600052602052604060002090565b6152bc868254613617565b9055156152f25750600080516020615e308339815191526152e16108aa6009546105bf565b915b604051878152921691602090a4565b600080516020615e3083398151915290916152e3565b50600096505050505050565b6153346103e89161387b61532e6125f66020870151611714565b8a6135ae565b98615204565b615352915060203d811161254e5761253f81836119ba565b386151f1565b919061537c9061536661434a565b5060018060801b0391828092168286511661443c565b168352615392816020850193168284511661443c565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b156153c957565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461547f575060206154399161541e6108aa6009546105bf565b6040518080958194627eeac760e11b83523060048401614efe565b03915afa92831561143c576105ec9361545a92600091615461575b5061360a565b10156153c2565b615479915060203d811161254e5761253f81836119ba565b38615454565b919092506154916108aa6009546105bf565b803b156105dc576154bf936000809460405196879586948593630208d92960e11b8552309060048601615398565b03925af1801561143c576154d05750565b80612dcf6105ec92611936565b6001600160801b03918216908216039190821161358c57565b156154fd57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156f1576155526143d6565b9461555d8651611714565b61557060206151ae6108aa6009546105bf565b03915afa91821561143c5785916000936156d1575b50169061559191613617565b61559b90836135ae565b90602087019182516155ac90611714565b6155b590611714565b6155be916135d7565b9687946155ca83610616565b858154906155d79161360a565b90556040518581526001600160a01b0393841694906000908690600080516020615ed083398151915290602090a3818716835161561390611714565b9061561d916154dd565b6156279084614372565b818616815161563590611714565b9061563f916154dd565b6156499082614372565b5161565390611714565b166103e81115615662906154f6565b61566b906148f0565b604051928352841691600080516020615e7083398151915290602090a4600954615694906105bf565b61569d906105bf565b90600e5490823b156105dc576154bf9260009283879360405196879586948593630208d92960e11b85523060048601615398565b6156ea91935060203d811161254e5761253f81836119ba565b9138615585565b50600093505050565b6025546001600160801b0394939192919060801c156156f15761571b6143d6565b906157268251611714565b61573960206151ae6108aa6009546105bf565b03915afa91821561143c57889160009361590f575b50169061575a91613617565b61576490826135ae565b6020830190815161577490611714565b61577d90611714565b615786916135d7565b96879361579287610616565b8481549061579f9161360a565b90556040518481526001600160a01b03888116949093916000908690600080516020615ed083398151915290602090a381871683516157dd90611714565b906157e7916154dd565b6157f19084614372565b81861681516157ff90611714565b90615809916154dd565b6158139082614372565b5161581d90611714565b166103e8111561582c906154f6565b615835906148f0565b604051928352841691600080516020615e7083398151915290602090a460095461585e906105bf565b615867906105bf565b90600e5490823b156105dc5761589b9260009283889360405196879586948593630208d92960e11b85523060048601615398565b03925af1801561143c576158fc575b506158b48161064a565b6158cb602854809290600052602052604060002090565b548411156158e557506158e26152a060009261064a565b55565b6125096158f19261064a565b61513883825461360a565b80612dcf61590992611936565b386158aa565b61592891935060203d811161254e5761253f81836119ba565b913861574e565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105dc570160208101919035906001600160401b0382116105dc5781360383136105dc57565b9060606159d86106139380356159b9816105cb565b6001600160a01b03168452602081810135908501526040810190615972565b9190928160408201520191615951565b908135815261ffff806159fd60208501611c1a565b166020830152615a0f60408401611c1a565b16604082015260c06060830135615a25816105cb565b6001600160a01b03908116606084015281615a75615a5a615a496080880188615972565b60e0608089015260e0880191615951565b615a6760a0880188615972565b9087830360a0890152615951565b940135615a81816105cb565b1691015290565b606060c435615a96816105cb565b6001600160a01b0390811683528060e435615ab0816105cb565b1660208401528061010435615ac4816105cb565b16604084015261012435615ad7816105cb565b16910152565b60609081813591615aed836105cb565b6001600160a01b039283168552826020820135615b09816105cb565b166020860152826040820135615b1e816105cb565b1660408601520135615ad7816105cb565b81835290916001600160fb1b0383116105dc5760209260051b809284830137010190565b9082818152602080910193818360051b82010194846000925b858410615b7d575050505050505090565b909192939495968580615ba5600193601f19868203018852615b9f8c88615972565b90615951565b990194019401929594939190615b6c565b98979592969391949096604051976020906367dd0da360e11b828b01528060c48b0160a060248d01525260e48a019b9160005b828110615c555750505050936107ec93615c34615c43948a9894615c246147349d9e611e829c9a602319988d60448b82860301910152615b2f565b91868b84030160648c0152615b53565b92878403016084880152615951565b6001600160a01b0390921660a4840152565b9091929c82808f9260019335615c6a816105cb565b848060a01b03168152019e01910192919092615be9565b15615c8857565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b908160209103126105dc575161061381610824565b15615cda57565b60405162461bcd60e51b815260206004820152601660248201527514d1d30e881314481b9bdd081a5b9a5d185b1a5e995960521b6044820152606490fd5b6035546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b9115615d4a57565b61214f615d5683615005565b60405162461bcd60e51b8152602060048201529182916024830190610725565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6032546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6034546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a2756fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2666e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a641142288be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212201d475f623f9f2dd29517348e035a8b767eff1e759b069657a51ee85a1b63ae7864736f6c63430008120033", + "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556001603055615e7792836200020c843960805183613c1d015260a05183613cd8015260c05183613be7015260e05183613c6c01525182613c9201525181613c490152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122036134da85b19eec4fc6e752a4452a9413fb537a5645d67f1b136ba7d90aa7af864736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122036134da85b19eec4fc6e752a4452a9413fb537a5645d67f1b136ba7d90aa7af864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Test.json b/src/artifacts/tapioca-bar/Test.json index ee63b49c..72ce89fa 100644 --- a/src/artifacts/tapioca-bar/Test.json +++ b/src/artifacts/tapioca-bar/Test.json @@ -17,8 +17,8 @@ "type": "function" } ], - "bytecode": "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea2646970667358221220c28fd35c78247af01bc5bac2850840981ff2ca4ef5d18879bf8f176b70c067cc64736f6c63430008120033", - "deployedBytecode": "0x6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea2646970667358221220c28fd35c78247af01bc5bac2850840981ff2ca4ef5d18879bf8f176b70c067cc64736f6c63430008120033", + "bytecode": "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033", + "deployedBytecode": "0x6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/USDO.json b/src/artifacts/tapioca-bar/USDO.json index 2c114da1..aa1a4dde 100644 --- a/src/artifacts/tapioca-bar/USDO.json +++ b/src/artifacts/tapioca-bar/USDO.json @@ -30,15 +30,35 @@ "name": "_leverageModule", "type": "address" }, + { + "internalType": "address payable", + "name": "_leverageDestinationModule", + "type": "address" + }, { "internalType": "address payable", "name": "_marketModule", "type": "address" }, + { + "internalType": "address payable", + "name": "_marketDestinationModule", + "type": "address" + }, { "internalType": "address payable", "name": "_optionsModule", "type": "address" + }, + { + "internalType": "address payable", + "name": "_optionsDestinationModule", + "type": "address" + }, + { + "internalType": "address payable", + "name": "_genericModule", + "type": "address" } ], "stateMutability": "nonpayable", @@ -100,63 +120,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -549,6 +512,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + } + ], + "name": "addFlashloanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1045,7 +1021,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -1150,72 +1126,14 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "flashFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC3156FlashBorrower", - "name": "receiver", - "type": "address" - }, - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flashLoan", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], - "name": "flashMintFee", + "name": "flashLoanHelper", "outputs": [ { - "internalType": "uint256", + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -1316,6 +1234,197 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IUSDOBase.ILeverageSwapData", + "name": "swapData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "srcExtraGasLimit", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "lzSrcChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "dstAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "srcAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageLZData", + "name": "lzData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "swapper", + "type": "address" + }, + { + "internalType": "address", + "name": "magnetar", + "type": "address" + }, + { + "internalType": "address", + "name": "tOft", + "type": "address" + }, + { + "internalType": "address", + "name": "srcMarket", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageExternalContractsData", + "name": "externalData", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "airdropAdapterParams", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bool", + "name": "permitAll", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "actionType", + "type": "uint16" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" + }, + { + "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" + } + ], + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + } + ], + "name": "initMultiHopBuy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, { "inputs": [ { @@ -1340,19 +1449,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "leverageModule", - "outputs": [ - { - "internalType": "contract USDOLeverageModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "lzEndpoint", @@ -1394,51 +1490,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "marketModule", - "outputs": [ - { - "internalType": "contract USDOMarketModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "maxFlashLoan", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1541,19 +1592,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "optionsModule", - "outputs": [ - { - "internalType": "contract USDOOptionsModule", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "owner", @@ -1863,7 +1901,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2172,7 +2210,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2450,6 +2488,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "name": "setCluster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -2494,25 +2545,12 @@ { "inputs": [ { - "internalType": "uint256", - "name": "_val", - "type": "uint256" - } - ], - "name": "setFlashMintFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_val", - "type": "uint256" + "internalType": "address", + "name": "_helper", + "type": "address" } ], - "name": "setMaxFlashMintable", + "name": "setFlashloanHelper", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -2854,7 +2892,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2981,8 +3019,8 @@ "type": "receive" } ], - "bytecode": "0x6101c08060405234620008125760e0816200649d803803809162000024828562000833565b83398101031262000812576200003a8162000857565b6020820151916001600160a01b0383168303620008125760408101516001600160a01b038116908190036200081257620000776060830162000857565b93620000866080840162000857565b90620000a360c06200009b60a0870162000857565b950162000857565b9260405191620000b38362000817565b60048352635553444f60e01b80602085015260405197620000d48962000817565b60018952603160f81b60208a015260405190620000f18262000817565b60048252826020830152604051926200010a8462000817565b6004845260208401526200011e336200086c565b6001600160a01b0316608052600860a0528051906001600160401b0382116200056157600b5490600182811c9216801562000807575b6020831014620006dd5781601f84931162000795575b50602090601f83116001146200070a57600092620006fe575b50508160011b916000199060031b1c191617600b555b8051906001600160401b0382116200056157600c5490600182811c92168015620006f3575b6020831014620006dd5781601f8493116200066b575b50602090601f8311600114620005dc57600092620005d0575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa908115620005c45760009162000577575b5061ffff1680600052600f6020526040600020336000526020526040600020600160ff1982541617905560005260106020526040600020336000526020526040600020600160ff19825416179055600a60125569152d02c7e14af680000060135560e05260018060a01b0319600d541617600d55602081519101209360208151910120846101605280610180524661012052604051946000805160206200647d8339815191526020870152604086015260608501524660808501523060a085015260a084528360c081011060018060401b0360c086011117620005615760c08401604090815284516020808701919091206101005230610140526000805160206200647d8339815191526101a052601780546001600160a01b039485166001600160a01b03199182168117909255601880549786169782168817905560198054968616969091168617905560009081526014909152818120805460ff1990811660019081179092559582528282208054871682179055938152908120805490941690921790925554339116036200051957506001600160a01b03811615620004c557620003f0906200086c565b60ff19601b5416601b55604051615bc99081620008b4823960805181818161060c015281816108cf01528181610a0b01528181610cd501528181610eeb0152818161242e01528181612725015281816131900152818161426301528181614d4d015261500c015260a05181611ae3015260c05181818161519c015281816152d00152818161552701526155ac015260e05181612b7f0152610100518161390f015261012051816139ca015261014051816138d90152610160518161395e0152610180518161398401526101a0518161393b0152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b60c060649162461bcd60e51b82820152602060c4820152602060e48201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657261010482015201fd5b634e487b7160e01b600052604160045260246000fd5b6020813d602011620005bb575b81620005936020938362000833565b81010312620005b757519061ffff82168203620005b4575061ffff62000243565b80fd5b5080fd5b3d915062000584565b6040513d6000823e3d90fd5b015190503880620001ed565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f19841685106200064f576001945083601f1981161062000635575b505050811b01600c5562000203565b015160001960f88460031b161c1916905538808062000626565b8181015183556020948501946001909301929091019062000609565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c810160208510620006d5575b90849392915b601f830160051c82018110620006c5575050620001d4565b60008155859450600101620006ad565b5080620006a7565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001be565b01519050388062000183565b600b60009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99350601f198516905b8181106200077c575090846001959493921062000762575b505050811b01600b5562000199565b015160001960f88460031b161c1916905538808062000753565b929360206001819287860151815501950193016200073b565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c810160208510620007ff575b90849392915b601f830160051c82018110620007ef5750506200016a565b60008155859450600101620007d7565b5080620007d1565b91607f169162000154565b600080fd5b604081019081106001600160401b038211176200056157604052565b601f909101601f19168101906001600160401b038211908210176200056157604052565b51906001600160a01b03821682036200081257565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461054057806301ffc9a71461053b57806306fdde031461053657806307e0db1714610531578063095ea7b31461052c5780630df374831461052757806310ddb1371461052257806316d995a91461051d57806318160ddd1461048c5780631d2a0e3d1461051857806323b872dd14610513578063313ce5671461050e5780633644e51514610509578063365260b41461050457806339509351146104ff5780633d8b38f6146104fa5780633f1f4fa4146104f557806340c10f19146104f057806342d65a8d146104eb57806344770515146104e65780634c42899a146104e65780635b8c41e6146104e15780635c975abb146104dc5780635cffe9de146104d7578063613255ab146104d257806366ad5c8a146104cd578063695ef6bf146104c857806370a08231146104c3578063715018a6146104be5780637533d788146104b957806376203b48146104b4578063796fd43a146104af5780637ecebe00146104aa578063857749b0146104a557806389dd5602146104a05780638cfd8f5c1461049b5780638da5cb5b146104965780639169d59e146104915780639358928b1461048c578063940a1dc014610487578063950c8a7414610482578063952168c51461047d57806395d89b41146104785780639bdb9812146104735780639d3f4d1a1461046e5780639d554eac146104695780639dc29fac146104645780639f38369a1461045f578063a457c2d71461045a578063a4c51df514610455578063a6c3d16514610450578063a9059cbb1461044b578063b02f69a214610446578063b25ea8fb14610441578063b353aaa71461043c578063ba03a8d714610437578063baf3292d14610432578063c056a8de1461042d578063c446183414610428578063cbed8b9c14610423578063ce8849ed1461041e578063cfd8b3d814610419578063d1deba1f14610414578063d505accf1461040f578063d9d98ce41461040a578063dbd01de114610405578063dd62ed3e14610400578063de406577146103fb578063df2a5b3b146103f6578063e6a20ae6146103f1578063e78eb946146103ec578063eab45d9c146103e7578063eaffd49a146103e2578063eb8d72b7146103dd578063ec6d062b146103d8578063ed629c5c146103d3578063f00c298d146103ce578063f2fde38b146103c9578063f5b33dfa146103c4578063f5ecbdbc146103bf578063f8974de0146103ba578063fa74f0b5146103b55763fc0c546a0361000e576132eb565b613273565b6131fa565b613126565b6130fd565b613048565b612fd6565b612fb3565b612f7b565b612e52565b612dc9565b612d6b565b612cc6565b612c9b565b612bae565b612b69565b612b1f565b612af6565b612acb565b61296a565b61280f565b6127e6565b6127bd565b6126d1565b6126b4565b612574565b6124e0565b6124a8565b612418565b6123d5565b61232e565b6122e4565b612182565b6120f1565b612051565b611fae565b611f52565b611ef8565b611eda565b611e8f565b611deb565b611cc8565b611c6e565b611c50565b610ac4565b611bb8565b611b8f565b611b30565b611b07565b611ac9565b611a8c565b611903565b6116e6565b61168f565b61155b565b61151e565b61143b565b611385565b61135f565b611155565b611132565b6110de565b610f52565b610ed1565b610e6e565b610e35565b610dd9565b610d51565b610c4f565b610bd2565b610bb6565b610b76565b610ae2565b610a6c565b6109e2565b6109a3565b61096e565b6108a6565b6107c6565b610709565b6105f5565b61ffff81160361055157565b600080fd5b359061056182610545565b565b9181601f84011215610551578235916001600160401b038311610551576020838186019501011161055157565b906080600319830112610551576004356105a981610545565b916001600160401b039060243582811161055157816105ca91600401610563565b9390939260443581811681036105515792606435918211610551576105f191600401610563565b9091565b346105515761060336610590565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106c45761068961069192610019976106826106686106638a61ffff166000526001602052604060002090565b611674565b80519081841491826106ba575b5081610697575b5061472b565b3691611010565b923691611010565b9261482b565b90506106a4368486611010565b602081519101209060208151910120143861067c565b1515915038610675565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105515760203660031901126105515760043563ffffffff60e01b811680910361055157602090631f7ecdf760e01b811490811561074e575b506040519015158152f35b6301ffc9a760e01b14905038610743565b600091031261055157565b60005b83811061077d5750506000910152565b818101518382015260200161076d565b906020916107a68151809281855285808601910161076a565b601f01601f1916010190565b9060206107c392818152019061078d565b90565b34610551576000806003193601126108a35760405181600b546107e8816115a4565b8084529060019081811690811561087b5750600114610822575b61081e8461081281880382610fd2565b604051918291826107b2565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b828410610868575050508161081e936108129282010193610802565b805485850187015292850192810161084c565b61081e96506108129450602092508593915060ff191682840152151560051b82010193610802565b80fd5b3461055157600060203660031901126108a3576004356108c581610545565b6108cd613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561093c57610930575080f35b61093990610f84565b80f35b613852565b5080fd5b6001600160a01b0381160361055157565b6064359061056182610945565b359061056182610945565b346105515760403660031901126105515761099860043561098e81610945565b602435903361351f565b602060405160018152f35b346105515760403660031901126105515761ffff6004356109c381610545565b6109cb613306565b166000526003602052602435604060002055600080f35b3461055157600060203660031901126108a357600435610a0181610545565b610a09613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561093c57610930575080f35b3461055157602036600319011261055157600435610a88613306565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610abc60405192839283610c3e565b0390a1601355005b34610551576000366003190112610551576020600a54604051908152f35b3461055157602036600319011261055157600435610afe613306565b620f4240811015610b45577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610b3d60405192839283610c3e565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b3461055157606036600319011261055157610998600435610b9681610945565b602435610ba281610945565b60443591610bb1833383613620565b613450565b3461055157600036600319011261055157602060405160128152f35b34610551576000366003190112610551576020610bed6138d6565b604051908152f35b60643590811515820361055157565b60243590811515820361055157565b60a43590811515820361055157565b60043590811515820361055157565b3590811515820361055157565b908152602081019190915260400190565b346105515760a036600319011261055157600435610c6c81610545565b610c74610bf5565b90608435906001600160401b03821161055157610c9a6106826040933690600401610563565b90610cd1610cb4610cac604435615525565b6024356155e1565b928451958694859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561093c576000908192610d20575b5061081e60405192839283610c3e565b9050610d43915060403d8111610d4a575b610d3b8183610fd2565b810190614ece565b9038610d10565b503d610d31565b3461055157604036600319011261055157600435610d6e81610945565b336000526009602052610d85816040600020612491565b546024358101809111610d9c57610998913361351f565b61335e565b90604060031983011261055157600435610dba81610545565b91602435906001600160401b038211610551576105f191600401610563565b3461055157602061ffff610e26610def36610da1565b9390911660005260018452610e11610e186040600020604051928380926115de565b0382610fd2565b848151910120923691611010565b82815191012014604051908152f35b346105515760203660031901126105515761ffff600435610e5581610545565b1660005260036020526020604060002054604051908152f35b3461055157604036600319011261055157610019600435610e8e81610945565b610e9d60ff6011541615614431565b610ea561424e565b600052600f602052610ec860ff610ec160406000203390612491565b5416613aa1565b60243590614577565b3461055157610edf36610da1565b9190610ee9613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561055157604051928380926342d65a8d60e01b825281610f4060009889978894600485016147bc565b03925af1801561093c57610930575080f35b3461055157600036600319011261055157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610f9757604052565b610f6e565b60c081019081106001600160401b03821117610f9757604052565b604081019081106001600160401b03821117610f9757604052565b601f909101601f19168101906001600160401b03821190821017610f9757604052565b6001600160401b038111610f9757601f01601f191660200190565b92919261101c82610ff5565b9161102a6040519384610fd2565b829481845281830111610551578281602093846000960137010152565b60606003198201126105515760043561105f81610545565b916001600160401b03916024359083821161055157806023830112156105515781602461109193600401359101611010565b9160443590811681036105515790565b6020906110bb92826040519483868095519384920161076a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461055157602061112961ffff61111b836110f836611047565b94909116600052600582526040600020826040519483868095519384920161076a565b8201908152030190206110c7565b54604051908152f35b3461055157600036600319011261055157602060ff601154166040519015158152f35b346105515760803660031901126105515760043561117281610945565b6024359061117f82610945565b604435906064356001600160401b0381116105515760206111a584923690600401610563565b9490936111b760ff6011541615614431565b6001600160a01b031695338703611336575b6111e46111df6111db601b5460ff1690565b1590565b6144b3565b6111f6600160ff19601b541617601b55565b6112098261120261438d565b10156144f2565b61123f61121683836143ce565b968796611223858b614577565b6040516323e30c8b60e01b815298899586953360048801614544565b03816000885af193841561093c576112d0836112d6936112907f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd96112ed996112e899600091611308575b5014613a66565b6112b76112a5306112a08761245d565b612491565b546112b08484613390565b111561446c565b6112cb6112c48383613390565b3086613620565b613390565b9061460c565b6112e08130614577565b601a54613390565b601a55565b6112fc60ff19601b5416601b55565b60405160018152602090f35b611329915060203d811161132f575b6113218183610fd2565b810190614535565b38611289565b503d611317565b61134f82611347336112a08b61245d565b54101561446c565b61135a823389613620565b6111c9565b346105515760203660031901126105515761137b600435610945565b6020610bed61438d565b346105515761139336610590565b91929493903033036113b7576106896113b192610019973691611010565b926149b2565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126105515760c490565b60609060a31901126105515760a490565b908160609103126105515790565b60a03660031901126105515760043561145381610945565b60243561145f81610545565b604435916084356001600160401b03811161055157602061ffff611496600080516020615ad483398151915293369060040161142d565b9361150985356114a581610945565b6114c361068286890135986114b98a610945565b6040810190614ccb565b6114cd818a61543d565b6114e26114db6064356155aa565b50856157b2565b976114ee891515614f28565b6115006114fa8a615525565b8c6155e1565b9234938b614fc8565b6040519485526001600160a01b0316941692a4005b346105515760203660031901126105515760043561153b81610945565b60018060a01b031660005260086020526020604060002054604051908152f35b34610551576000806003193601126108a357611575613306565b80546001600160a01b03198116825581906001600160a01b0316600080516020615b348339815191528280a380f35b90600182811c921680156115d4575b60208310146115be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916115b3565b90600092918054916115ef836115a4565b9182825260019384811690816000146116515750600114611611575b50505050565b90919394506000526020928360002092846000945b83861061163d57505050500101903880808061160b565b805485870183015294019385908201611626565b9294505050602093945060ff191683830152151560051b0101903880808061160b565b9061056161168892604051938480926115de565b0383610fd2565b346105515760203660031901126105515761ffff6004356116af81610545565b16600052600160205261081e610e116116d26040600020604051928380926115de565b60405191829160208352602083019061078d565b60e0366003190112610551576004356116fe81610945565b60243561170a81610545565b604435916001600160401b03906084358281116105515761172f903690600401610563565b91909260a43591818316918284036105515760c4359081116105515761175990369060040161142d565b9261179084359561176987610945565b61178861177e6020880135976114b989610945565b9990923691611010565b973691611010565b9460ff6006541660001461188257602286511061183e57856020956115006115099461180c8c6117f961ffff9a8b6022600080516020615ad48339815191529f0151931660005260028d526117f360406000206001600052602052604060002090565b54613390565b90611805821515615492565b10156154db565b61182161181a6064356155aa565b50886157b2565b9a61182d8c1515614f28565b8d6118378d615525565b903361566f565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516118af57600080516020615ad48339815191529460209461ffff946115006115099461180c565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6003196101003682018113610551576024359161191f83610945565b604435926001600160401b038085116105515760e085600401938636030112610551576064359081116105515761195a90369060040161142d565b9160803660831901126105515761001994611a8793611a5c611a5160c4611a4a611a6d966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356119c481610545565b166101448a01526119e860448801356119dc81610545565b61ffff166101648b0152565b611a026119f760648901610963565b6101848b0190611b82565b611a36611a2b8a6101a460e0611a1b60848d0187613b03565b92909301526102048d0191613ae2565b9160a4890190613b03565b8a830361012319016101c48c015290613ae2565b9401610963565b6101e4860190611b82565b838203602319016084850152613f31565b611a7960a48301613f65565b03601f198101835282610fd2565b614224565b3461055157602036600319011261055157600435611aa981610945565b60018060a01b031660005260156020526020604060002054604051908152f35b3461055157600036600319011261055157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610551576000366003190112610551576019546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435611b5281610545565b61ffff60243591611b6283610545565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610551576000366003190112610551576000546040516001600160a01b039091168152602090f35b3461055157604036600319011261055157600435611bd581610945565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611c00610c04565b92611c09613306565b611c1161424e565b60005260108252611c3b84611c2a836040600020612491565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610551576000366003190112610551576020601254604051908152f35b34610551576000366003190112610551576004546040516001600160a01b039091168152602090f35b9181601f84011215610551578235916001600160401b038311610551576020808501946101a0850201011161055157565b60a036600319011261055157600435611ce081610545565b6001600160401b039060243582811161055157611d01903690600401610563565b909160643584811161055157611d1b90369060040161142d565b93608435908111610551576100199461ffff94611de694611dd7611d76611d49611a79963690600401611c97565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613ae2565b60443560648801526060611dc760231996878a85030160848b01528035611d9c81610945565b6001600160a01b0390811685526020820135611db781610945565b1660208501526040810190613b03565b9190928160408201520191613ae2565b928584030160a4860152613b35565b61414f565b34610551576000806003193601126108a35760405181600c54611e0d816115a4565b8084529060019081811690811561087b5750600114611e365761081e8461081281880382610fd2565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611e7c575050508161081e936108129282010193610802565b8054858501870152928501928101611e60565b3461055157602060ff611ece61ffff61111b84611eab36611047565b94909116600052600782526040600020826040519483868095519384920161076a565b54166040519015158152f35b34610551576000366003190112610551576020601354604051908152f35b34610551576000806003193601126108a357611f12613306565b601a5480611f1e575080f35b30825260086020526040822054818110611f4d5750805b808203918211610d9c5761093991601a553333613450565b611f35565b3461055157604036600319011261055157610019600435611f7281610945565b611f8160ff6011541615614431565b611f8961424e565b6000526010602052611fa560ff610ec160406000203390612491565b6024359061460c565b346105515760203660031901126105515761ffff600435611fce81610545565b166000526001602052610e11611fee6040600020604051928380926115de565b80511561200c576108128161200661081e935161470d565b9061588c565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346105515760403660031901126105515760043561206e81610945565b60243590336000526009602052612089816040600020612491565b549180831061209e576112fc9203903361351f565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105515760e03660031901126105515760043561210e81610545565b6001600160401b03906064358281116105515761212f903690600401610563565b608492919235848116810361055157612146610c13565b9160c43595861161055157612162612172963690600401610563565b9590946044359060243590614cfd565b9061081e60405192839283610c3e565b346105515761219036610da1565b90612199613306565b604051926020928083858701376121c56034868381013060601b88820152036014810188520186610fd2565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610f9757612202836121fc86546115a4565b866147d7565b80601f841160011461226057509180809261224f9695948a9b600080516020615af48339815191529b94612255575b50501b916000199060031b1c19161790555b604051938493846147bc565b0390a180f35b015192503880612231565b91939498601f19841661227887600052602060002090565b938a905b8282106122cd57505091600080516020615af4833981519152999a9593918561224f989694106122b4575b505050811b019055612243565b015160001960f88460031b161c191690553880806122a7565b80888697829497870151815501960194019061227c565b346105515760403660031901126105515761099860043561230481610945565b6024359033613450565b6101e090608319011261055157608490565b908160a09103126105515790565b6102c03660031901126105515760043561234781610945565b60243561235381610945565b6044359161236083610545565b612368610956565b926123723661230e565b6001600160401b03946102643586811161055157612394903690600401611c97565b92909161028435888111610551576123b0903690600401612320565b946102a435988911610551576123cd610019993690600401610563565b98909761402d565b34610551576040366003190112610551576024356123f281610945565b6123fa613306565b61093960008080808095600435905af1612412613a36565b50613a66565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260096020526040902090565b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461055157604036600319011261055157602060ff611ece6024356124cc81610945565b600435600052600f84526040600020612491565b34610551576020366003190112610551577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561252081610945565b612528613306565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261055157600490565b60c0906101231901126105515761012490565b610220806003193601126105515761258b36612550565b6125943661140b565b9161259e36612561565b906001600160401b03906101e435828111610551576125c1903690600401611c97565b9091610204938435908111610551576125de903690600401610563565b94909560405198899863602b546f60e11b60208b015280356125ff81610945565b6001600160a01b0390811660248c015280602083013561261e81610945565b1660448c0152604082013560648c0152606082013560848c0152608082013561264681610945565b1660a48b015260a0013560c48a015260e4890161266291613c55565b610144880161267091613c8d565b86015261024485019061268292613b35565b906023198483030161022485015261269992613ae2565b03601f19810182526126ab9082610fd2565b6100199061414f565b346105515760003660031901126105515760206040516127108152f35b34610551576080366003190112610551576004356126ee81610545565b6024356126fa81610545565b6064356001600160401b03811161055157612719903690600401610563565b9092612723613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610551576000809461279a604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613ae2565b03925af1801561093c576127aa57005b806127b761001992610f84565b8061075f565b3461055157600036600319011261055157600e546040516001600160a01b039091168152602090f35b34610551576000366003190112610551576018546040516001600160a01b039091168152602090f35b61281836610590565b9161ffff8694929616600052600560205261284c81604060002060206040518092878b8337878201908152030190206110c7565b549182156128fb576128ea84836128e37fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128cf846128ca8e8a8f6128f69f908f6128b0906128a36128c49436908d611010565b6020815191012014614c3e565b61ffff166000526005602052604060002090565b91614c25565b6110c7565b556128db36878d611010565b933691611010565b91886149b2565b60405195869586614c94565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff8216820361055157565b359060ff8216820361055157565b346105515760e03660031901126105515760043561298781610945565b60243561299381610945565b60443590606435926129a361294c565b93804211612a8657612a6e612a8191612a4861001997612a566129e18760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610fd2565b612a6960c4359360a435935190206139f0565b6136fc565b6001600160a01b038381169116146136b0565b61351f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610551576040366003190112610551576020610bed600435612aed81610945565b602435906143ce565b3461055157600036600319011261055157600d546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435612b4181610945565b60243590612b4e82610945565b6001600160a01b031660009081526009845260409020612491565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461055157606036600319011261055157600435612bcb81610545565b602435612bd781610545565b60443591612be3613306565b8215612c5e576128f67f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612c388560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461055157600036600319011261055157602060405160018152f35b90816101c09103126105515790565b61014036600319011261055157600435612cdf81610945565b602435612ceb81610945565b60443591612cf883610545565b612d00610956565b6001600160401b03939060843585811161055157612d22903690600401610563565b90612d2c3661141c565b926101043588811161055157612d46903690600401612cb7565b946101243598891161055157612d63610019993690600401611c97565b989097613e4f565b34610551576020366003190112610551577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612da7610c22565b612daf613306565b151560ff196006541660ff821617600655604051908152a1005b346105515761010036600319011261055157600435612de781610545565b6001600160401b039060243582811161055157612e08903690600401610563565b919060443590848216820361055157608435612e2381610945565b60c43595861161055157612e3e610019963690600401610563565b94909360e4359660a4359460643593614df4565b3461055157612e6036610da1565b9190612e6a613306565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610f9757612ea687612ea085546115a4565b856147d7565b8590601f8811600114612efb575091868087989361224f95600080516020615b748339815191529993612ef0575b501b906000198460031b1c1916179055604051938493846147bc565b880135925038612ed4565b90601f198816612f1085600052602060002090565b9288905b828210612f6457505091889391600080516020615b74833981519152989961224f969410612f4a575b505082811b019055612243565b870135600019600386901b60f8161c191690553880612f3d565b808685968294968c01358155019501930190612f14565b3461055157604036600319011261055157602060ff611ece602435612f9f81610945565b600435600052601084526040600020612491565b3461055157600036600319011261055157602060ff600654166040519015158152f35b3461055157604036600319011261055157600435612ff381610945565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b9602061301e610c04565b92613027613306565b61302f61424e565b600052600f8252611c3b84611c2a836040600020612491565b346105515760203660031901126105515760043561306581610945565b61306d613306565b6001600160a01b0390811680156130a957600080546001600160a01b0319811683178255909216600080516020615b348339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610551576000366003190112610551576017546040516001600160a01b039091168152602090f35b346105515760803660031901126105515760043561314381610545565b6024359061315082610545565b61315b604435610945565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c5761081e916000916131d9575b50604051918291826107b2565b6131f4913d8091833e6131ec8183610fd2565b810190614786565b386131cc565b3461055157602036600319011261055157613213610c22565b61322860018060a01b03600e54163314613aa1565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346105515760203660031901126105515760043561329081610945565b613298613306565b6001600160a01b03908116906132af821515613aa1565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b34610551576000366003190112610551576020604051308152f35b6000546001600160a01b0316330361331a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d9c57565b6051019081605111610d9c57565b91908201809211610d9c57565b156133a457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156133fc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134cc576134b182600080516020615b54833981519152946134c794169661348a88151561339d565b6134ab8461349783612477565b546134a4828210156133f5565b0391612477565b55612477565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156135cf57821693841561357f578061356e7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946112a06134c79561245d565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613640816040600020612491565b5492600184016136505750505050565b80841061366b5761366293039161351f565b3880808061160b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156136b757565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107c3939161370b9361385e565b919091613733565b6005111561371d57565b634e487b7160e01b600052602160045260246000fd5b61373c81613713565b806137445750565b61374d81613713565b600181036137995760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6137a281613713565b600281036137ef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137fb600392613713565b1461380257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561093c5781516001600160a01b038116156138c4579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139c7575b15613931577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526139c181610f9c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613908565b6139f86138d6565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610f975760405251902090565b3d15613a61573d90613a4782610ff5565b91613a556040519384610fd2565b82523d6000602084013e565b606090565b15613a6d57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b15613aa857565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e1982360301811215610551570160208101919035906001600160401b03821161055157813603831361055157565b9190808252602080920192916000905b828210613b53575050505090565b9091929380613b6d600192613b6788610c31565b15159052565b613b83613b7b848801610c31565b151582850152565b613b9b6040613b93818901610c31565b151590830152565b613bb56060613bab818901610556565b61ffff1690830152565b613bce6080613bc5818901610963565b90830190611b82565b613bde60a0613b93818901610c31565b613bee60c0613bc5818901610963565b613bfe60e0613bc5818901610963565b61010080870135908201526101208087013590820152613c2e610140613c2581890161295c565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613b45565b6040809161ffff8135613c6781610545565b1684526020810135613c7881610945565b6001600160a01b031660208501520135910152565b60a08091613c9a81610c31565b151584526020810135613cac81610945565b600180841b03809116602086015261ffff6040830135613ccb81610545565b166040860152606082013560608601526080820135613ce981610945565b1660808501520135910152565b60408091613d0381610c31565b151584526020810135613c7881610945565b9035609e1982360301811215610551570190565b9060a0613d7e6107c393613d3c81610c31565b1515845260208101356020850152613d5660408201610c31565b1515604085015261ffff6060820135613d6e81610545565b1660608501526080810190613b03565b9190928160808201520191613ae2565b906107c391613da082613b6783610c31565b60208101356020830152613dc2613db960408301610c31565b15156040840152565b60608101356060830152613de4613ddb60808301610c31565b15156080840152565b60a081013560a0830152613dfe60c0830160c08301613cf6565b613e0f610120808401908301613cf6565b613e32610180613e2181840184613d15565b906101c08091860152840190613d29565b91613e436101a09283810190613d15565b91818403910152613d29565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613eaa91610164890191613ae2565b93818135613eb781610945565b1660c4880152816020820135613ecc81610945565b1660e488015260400135613edf81610945565b16610104860152602319928386820301610124870152613efe91613d8e565b9184830301610144850152613f1292613b35565b03601f1981018252613f249082610fd2565b613f2d906141fa565b5050565b906060611dc76107c3938035613f4681610945565b6001600160a01b03168452602081810135908501526040810190613b03565b6060608435613f7381610945565b6001600160a01b0390811683528060a435613f8d81610945565b1660208401528060c435613fa081610945565b16604084015260e435613fb281610945565b16910152565b35906001600160801b038216820361055157565b60808091613fd981610c31565b151584526020810135613feb81610945565b6001600160a01b031660208501526000196001831b018061400e60408401613fb8565b16604086015261402060608301613fb8565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff90921660648201529181166084830152909687969594909392909161407c82610c31565b151560a4890152602082013560c4890152604082013560e489015260608201356140a581610945565b166101048801526140b860808201610963565b61012488016140c691611b82565b6140d260a08201610c31565b151561014488015260c08101356101648801526140f6610184880160e08301613fcc565b6141099061022488019061018001613cf6565b61028486016102c090526102e486019061412292613b35565b916023199283868203016102a487015261413b91613d29565b91848303016102c4850152613f1292613ae2565b6019546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b908215806141b4575b61418857565b61379561419483614315565b60405162461bcd60e51b815260206004820152918291602483019061078d565b506001614182565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6017546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c576000906142a4575b61ffff91501690565b6020823d82116142d8575b816142bc60209383610fd2565b810103126108a3575061ffff90516142d381610545565b61429b565b3d91506142af565b909291926142ed81610ff5565b916142fb6040519384610fd2565b82948284528282011161055157602061056193019061076a565b604481511061436657600481015181019060208160248401930312610551576024810151906001600160401b038211610551570190806043830112156105515760248201516107c3926044016142e0565b5060405161437381610fb7565b600a8152695553444f3a206461746160b01b602082015290565b600a5460135490818111156143a0575090565b905090565b81810292918115918404141715610d9c57565b634e487b7160e01b600052601260045260246000fd5b306001600160a01b03909116036143f4576143f0620f424091601254906143a5565b0490565b60405162461bcd60e51b81526020600482015260156024820152741554d113ce881d1bdad95b881b9bdd081d985b1a59605a1b6044820152606490fd5b1561443857565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b1561447357565b60405162461bcd60e51b81526020600482015260186024820152771554d113ce881c995c185e481b9bdd08185c1c1c9bdd995960421b6044820152606490fd5b156144ba57565b60405162461bcd60e51b815260206004820152601060248201526f5553444f3a207265656e7472616e637960801b6044820152606490fd5b156144f957565b60405162461bcd60e51b81526020600482015260146024820152735553444f3a20616d6f756e7420746f6f2062696760601b6044820152606490fd5b90816020910312610551575190565b91926107c396949160a094600180871b038092168552166020840152604083015260608201528160808201520191613ae2565b6001600160a01b038116919082156145c757600a5490828201809211610d9c576000926145b8602092600080516020615b5483398151915294600a55612477565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156146be5761462681612477565b5483811061466e5783600080516020615b54833981519152926146506000966134c7940391612477565b5561465e81600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610d9c57565b605019810191908211610d9c57565b1561473257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610551578051906001600160401b03821161055157019080601f830112156105515781516107c3926020016142e0565b60409061ffff6107c395931681528160208201520191613ae2565b90601f81116147e557505050565b600091825260208220906020601f850160051c83019410614821575b601f0160051c01915b82811061481657505050565b81815560010161480a565b9092508290614801565b92909161488f5a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061488982612a4861486860a483018a61078d565b6001600160401b03881660648401528281036023190160848401528861078d565b30615a88565b93901561489e575b5050505050565b6148a7946148b1565b3880808080614897565b919361494f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561495d939561ffff815160208301209616958660005260056020526149158361111b60208b6040600020826040519483868095519384920161076a565b55614932604051978897885260a0602089015260a088019061078d565b6001600160401b039092166040870152858203606087015261078d565b90838203608085015261078d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a0604082018190526107c394926149949183019061078d565b6001600160401b03909316606082015280830360809091015261078d565b9291906149be83615a3b565b6103068103614a06575060185461056194908190614a01906001600160a01b0316611a7987878760405196879563100b652360e01b602088015260248701614962565b614bc7565b6103078103614a4e575060175461056194908190614a49906001600160a01b0316611a79878787604051968795634dd8df6360e11b602088015260248701614962565b614bf6565b6103058103614a7e575060405163163b7bd360e21b60208201526105619490614a0181611a7987602483016107b2565b6103098103614ac6575060195461056194908190614ac1906001600160a01b0316611a798787876040519687956381618d0560e01b602088015260248701614962565b614b6c565b61030a03614af45760405163af2ee97560e01b60208201526105619490614ac181611a7987602483016107b2565b614b06614b00846159e0565b60ff1690565b80614b17575050506105619161513d565b600103614b275761056193615284565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b93158080614bbf575b614bb35761489e575050505050565b61379561419486614315565b506000614ba4565b60185491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b60175491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b6020919283604051948593843782019081520301902090565b15614c4557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614cb79398979698168452608060208501526080840191613ae2565b6001600160401b0390951660408201520152565b903590601e198136030182121561055157018035906001600160401b0382116105515760200191813603831361055157565b949195989790611837614d26604099614d1e614d2c97614d49993691611010565b943691611010565b97615525565b928451968794859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561093c576000908193614d8c57509190565b90506105f191925060403d8111610d4a57610d3b8183610fd2565b939694916107c398969361ffff614dcc9316865260c0602087015260c0860191613ae2565b6001600160401b0390961660408401526060830152608082015280840360a090910152613ae2565b91969792989594939094303303614e8957614e109085306157d8565b60405181815290946001600160a01b03169390849061ffff851690600080516020615b1483398151915290602090a3833b15610551576000988995614e6c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614da7565b0393f1801561093c57614e7c5750565b806127b761056192610f84565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610551576020825192015190565b91926107c3959361ffff614f139316845260018060a01b0316602084015260a0604084015260a083019061078d565b9215156060820152608081840391015261078d565b15614f2f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614f956107c397959361ffff614fa39416865260c0602087015260c086019061078d565b90848203604086015261078d565b6001600160a01b0391821660608401529316608082015280830360a09091015261078d565b94614ff19193929561ffff81166000526001602052614ff86040600020604051948580926115de565b0384610fd2565b8251156150705761500a8551826150ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156105515760009661505f91604051998a988997889662c5803160e81b885260048801614f70565b03925af1801561093c57614e7c5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615133575b116150ef57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506150e8565b9060ff615149826159e0565b1615806151ec575b61515a90615628565b61516c61516682615990565b91615a2b565b6001600160a01b0390818316156151e2575b600080516020615b148339815191529160209161ffff91906151ca907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166143a5565b946151d58682614577565b60405195865216941692a3565b61dead925061517e565b508051602914615151565b989796929361522160e0979361ffff6152569894168c5260208c61010091829101528c019061078d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261078d565b930152565b6152736040929594939560608352606083019061078d565b94600180841b031660208201520152565b909161528f846156d9565b90916152c06152b9876128ca6152b38b61ffff166000526007602052604060002090565b8c6110a1565b5460ff1690565b916001600160401b03916152f7907f00000000000000000000000000000000000000000000000000000000000000009084166143a5565b9288888b83156153f3575b505050853b156153a857946153499694614889948a94612a48948d996000146153a15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016151f7565b901561539657509061539161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461525b565b0390a2565b9261056194926148b1565b169261532a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061495d915050565b906128ca615428926154228961540d615435979b30614577565b9961ffff166000526007602052604060002090565b906110a1565b805460ff19166001179055565b88888b615302565b60065460ff161561548a57602282511061183e5761ffff60226105619301519116600052600260205261547d604060002060008052602052604060002090565b5490611805821515615492565b50516118af57565b1561549957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b156154e257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156155a5576001600160401b03919004818111615563571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b6143b8565b7f000000000000000000000000000000000000000000000000000000000000000080156155a557810690818103908111610d9c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610f975760405290565b1561562f57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926107c394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526156c9815180926020868601910161076a565b8101036051810184520182610fd2565b906156f1600160ff6156ea856159e0565b1614615628565b6156fa82615990565b9061570483615a2b565b90604984511061577557604984015193605181511061573957615736605182015191615730815161471c565b9061590c565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107c39082906001600160a01b038116331461460c576157d3823383613620565b61460c565b6107c39183916001600160a01b038116308114159081615804575b501561345057610bb1833383613620565b9050331415386157f3565b1561581657565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561585357565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6158a08261589981613374565b101561580f565b6158ad828251101561584c565b816158c5575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106158f95750508252601f01601f191660405290565b90928351815260208091019301906158e1565b6159198261589981613374565b61592e815161592784613382565b111561584c565b81615946575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061597d5750508252601f01601f191660405290565b9092835181526020809101930190615965565b60218151106159a357602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106159f0576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615739576029015190565b6020815110615a4b576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615a9c87610f9c565b6096875282602088019560a036883760208451940192f1903d9060968211615aca575b6000908286523e9190565b60969150615abf56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220d7826c45684a8e683ff61ce287071db64113d91ea67e98910fb88887d7e1a92064736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461054057806301ffc9a71461053b57806306fdde031461053657806307e0db1714610531578063095ea7b31461052c5780630df374831461052757806310ddb1371461052257806316d995a91461051d57806318160ddd1461048c5780631d2a0e3d1461051857806323b872dd14610513578063313ce5671461050e5780633644e51514610509578063365260b41461050457806339509351146104ff5780633d8b38f6146104fa5780633f1f4fa4146104f557806340c10f19146104f057806342d65a8d146104eb57806344770515146104e65780634c42899a146104e65780635b8c41e6146104e15780635c975abb146104dc5780635cffe9de146104d7578063613255ab146104d257806366ad5c8a146104cd578063695ef6bf146104c857806370a08231146104c3578063715018a6146104be5780637533d788146104b957806376203b48146104b4578063796fd43a146104af5780637ecebe00146104aa578063857749b0146104a557806389dd5602146104a05780638cfd8f5c1461049b5780638da5cb5b146104965780639169d59e146104915780639358928b1461048c578063940a1dc014610487578063950c8a7414610482578063952168c51461047d57806395d89b41146104785780639bdb9812146104735780639d3f4d1a1461046e5780639d554eac146104695780639dc29fac146104645780639f38369a1461045f578063a457c2d71461045a578063a4c51df514610455578063a6c3d16514610450578063a9059cbb1461044b578063b02f69a214610446578063b25ea8fb14610441578063b353aaa71461043c578063ba03a8d714610437578063baf3292d14610432578063c056a8de1461042d578063c446183414610428578063cbed8b9c14610423578063ce8849ed1461041e578063cfd8b3d814610419578063d1deba1f14610414578063d505accf1461040f578063d9d98ce41461040a578063dbd01de114610405578063dd62ed3e14610400578063de406577146103fb578063df2a5b3b146103f6578063e6a20ae6146103f1578063e78eb946146103ec578063eab45d9c146103e7578063eaffd49a146103e2578063eb8d72b7146103dd578063ec6d062b146103d8578063ed629c5c146103d3578063f00c298d146103ce578063f2fde38b146103c9578063f5b33dfa146103c4578063f5ecbdbc146103bf578063f8974de0146103ba578063fa74f0b5146103b55763fc0c546a0361000e576132eb565b613273565b6131fa565b613126565b6130fd565b613048565b612fd6565b612fb3565b612f7b565b612e52565b612dc9565b612d6b565b612cc6565b612c9b565b612bae565b612b69565b612b1f565b612af6565b612acb565b61296a565b61280f565b6127e6565b6127bd565b6126d1565b6126b4565b612574565b6124e0565b6124a8565b612418565b6123d5565b61232e565b6122e4565b612182565b6120f1565b612051565b611fae565b611f52565b611ef8565b611eda565b611e8f565b611deb565b611cc8565b611c6e565b611c50565b610ac4565b611bb8565b611b8f565b611b30565b611b07565b611ac9565b611a8c565b611903565b6116e6565b61168f565b61155b565b61151e565b61143b565b611385565b61135f565b611155565b611132565b6110de565b610f52565b610ed1565b610e6e565b610e35565b610dd9565b610d51565b610c4f565b610bd2565b610bb6565b610b76565b610ae2565b610a6c565b6109e2565b6109a3565b61096e565b6108a6565b6107c6565b610709565b6105f5565b61ffff81160361055157565b600080fd5b359061056182610545565b565b9181601f84011215610551578235916001600160401b038311610551576020838186019501011161055157565b906080600319830112610551576004356105a981610545565b916001600160401b039060243582811161055157816105ca91600401610563565b9390939260443581811681036105515792606435918211610551576105f191600401610563565b9091565b346105515761060336610590565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106c45761068961069192610019976106826106686106638a61ffff166000526001602052604060002090565b611674565b80519081841491826106ba575b5081610697575b5061472b565b3691611010565b923691611010565b9261482b565b90506106a4368486611010565b602081519101209060208151910120143861067c565b1515915038610675565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105515760203660031901126105515760043563ffffffff60e01b811680910361055157602090631f7ecdf760e01b811490811561074e575b506040519015158152f35b6301ffc9a760e01b14905038610743565b600091031261055157565b60005b83811061077d5750506000910152565b818101518382015260200161076d565b906020916107a68151809281855285808601910161076a565b601f01601f1916010190565b9060206107c392818152019061078d565b90565b34610551576000806003193601126108a35760405181600b546107e8816115a4565b8084529060019081811690811561087b5750600114610822575b61081e8461081281880382610fd2565b604051918291826107b2565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b828410610868575050508161081e936108129282010193610802565b805485850187015292850192810161084c565b61081e96506108129450602092508593915060ff191682840152151560051b82010193610802565b80fd5b3461055157600060203660031901126108a3576004356108c581610545565b6108cd613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561093c57610930575080f35b61093990610f84565b80f35b613852565b5080fd5b6001600160a01b0381160361055157565b6064359061056182610945565b359061056182610945565b346105515760403660031901126105515761099860043561098e81610945565b602435903361351f565b602060405160018152f35b346105515760403660031901126105515761ffff6004356109c381610545565b6109cb613306565b166000526003602052602435604060002055600080f35b3461055157600060203660031901126108a357600435610a0181610545565b610a09613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561093c57610930575080f35b3461055157602036600319011261055157600435610a88613306565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610abc60405192839283610c3e565b0390a1601355005b34610551576000366003190112610551576020600a54604051908152f35b3461055157602036600319011261055157600435610afe613306565b620f4240811015610b45577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610b3d60405192839283610c3e565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b3461055157606036600319011261055157610998600435610b9681610945565b602435610ba281610945565b60443591610bb1833383613620565b613450565b3461055157600036600319011261055157602060405160128152f35b34610551576000366003190112610551576020610bed6138d6565b604051908152f35b60643590811515820361055157565b60243590811515820361055157565b60a43590811515820361055157565b60043590811515820361055157565b3590811515820361055157565b908152602081019190915260400190565b346105515760a036600319011261055157600435610c6c81610545565b610c74610bf5565b90608435906001600160401b03821161055157610c9a6106826040933690600401610563565b90610cd1610cb4610cac604435615525565b6024356155e1565b928451958694859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561093c576000908192610d20575b5061081e60405192839283610c3e565b9050610d43915060403d8111610d4a575b610d3b8183610fd2565b810190614ece565b9038610d10565b503d610d31565b3461055157604036600319011261055157600435610d6e81610945565b336000526009602052610d85816040600020612491565b546024358101809111610d9c57610998913361351f565b61335e565b90604060031983011261055157600435610dba81610545565b91602435906001600160401b038211610551576105f191600401610563565b3461055157602061ffff610e26610def36610da1565b9390911660005260018452610e11610e186040600020604051928380926115de565b0382610fd2565b848151910120923691611010565b82815191012014604051908152f35b346105515760203660031901126105515761ffff600435610e5581610545565b1660005260036020526020604060002054604051908152f35b3461055157604036600319011261055157610019600435610e8e81610945565b610e9d60ff6011541615614431565b610ea561424e565b600052600f602052610ec860ff610ec160406000203390612491565b5416613aa1565b60243590614577565b3461055157610edf36610da1565b9190610ee9613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561055157604051928380926342d65a8d60e01b825281610f4060009889978894600485016147bc565b03925af1801561093c57610930575080f35b3461055157600036600319011261055157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610f9757604052565b610f6e565b60c081019081106001600160401b03821117610f9757604052565b604081019081106001600160401b03821117610f9757604052565b601f909101601f19168101906001600160401b03821190821017610f9757604052565b6001600160401b038111610f9757601f01601f191660200190565b92919261101c82610ff5565b9161102a6040519384610fd2565b829481845281830111610551578281602093846000960137010152565b60606003198201126105515760043561105f81610545565b916001600160401b03916024359083821161055157806023830112156105515781602461109193600401359101611010565b9160443590811681036105515790565b6020906110bb92826040519483868095519384920161076a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461055157602061112961ffff61111b836110f836611047565b94909116600052600582526040600020826040519483868095519384920161076a565b8201908152030190206110c7565b54604051908152f35b3461055157600036600319011261055157602060ff601154166040519015158152f35b346105515760803660031901126105515760043561117281610945565b6024359061117f82610945565b604435906064356001600160401b0381116105515760206111a584923690600401610563565b9490936111b760ff6011541615614431565b6001600160a01b031695338703611336575b6111e46111df6111db601b5460ff1690565b1590565b6144b3565b6111f6600160ff19601b541617601b55565b6112098261120261438d565b10156144f2565b61123f61121683836143ce565b968796611223858b614577565b6040516323e30c8b60e01b815298899586953360048801614544565b03816000885af193841561093c576112d0836112d6936112907f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd96112ed996112e899600091611308575b5014613a66565b6112b76112a5306112a08761245d565b612491565b546112b08484613390565b111561446c565b6112cb6112c48383613390565b3086613620565b613390565b9061460c565b6112e08130614577565b601a54613390565b601a55565b6112fc60ff19601b5416601b55565b60405160018152602090f35b611329915060203d811161132f575b6113218183610fd2565b810190614535565b38611289565b503d611317565b61134f82611347336112a08b61245d565b54101561446c565b61135a823389613620565b6111c9565b346105515760203660031901126105515761137b600435610945565b6020610bed61438d565b346105515761139336610590565b91929493903033036113b7576106896113b192610019973691611010565b926149b2565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126105515760c490565b60609060a31901126105515760a490565b908160609103126105515790565b60a03660031901126105515760043561145381610945565b60243561145f81610545565b604435916084356001600160401b03811161055157602061ffff611496600080516020615ad483398151915293369060040161142d565b9361150985356114a581610945565b6114c361068286890135986114b98a610945565b6040810190614ccb565b6114cd818a61543d565b6114e26114db6064356155aa565b50856157b2565b976114ee891515614f28565b6115006114fa8a615525565b8c6155e1565b9234938b614fc8565b6040519485526001600160a01b0316941692a4005b346105515760203660031901126105515760043561153b81610945565b60018060a01b031660005260086020526020604060002054604051908152f35b34610551576000806003193601126108a357611575613306565b80546001600160a01b03198116825581906001600160a01b0316600080516020615b348339815191528280a380f35b90600182811c921680156115d4575b60208310146115be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916115b3565b90600092918054916115ef836115a4565b9182825260019384811690816000146116515750600114611611575b50505050565b90919394506000526020928360002092846000945b83861061163d57505050500101903880808061160b565b805485870183015294019385908201611626565b9294505050602093945060ff191683830152151560051b0101903880808061160b565b9061056161168892604051938480926115de565b0383610fd2565b346105515760203660031901126105515761ffff6004356116af81610545565b16600052600160205261081e610e116116d26040600020604051928380926115de565b60405191829160208352602083019061078d565b60e0366003190112610551576004356116fe81610945565b60243561170a81610545565b604435916001600160401b03906084358281116105515761172f903690600401610563565b91909260a43591818316918284036105515760c4359081116105515761175990369060040161142d565b9261179084359561176987610945565b61178861177e6020880135976114b989610945565b9990923691611010565b973691611010565b9460ff6006541660001461188257602286511061183e57856020956115006115099461180c8c6117f961ffff9a8b6022600080516020615ad48339815191529f0151931660005260028d526117f360406000206001600052602052604060002090565b54613390565b90611805821515615492565b10156154db565b61182161181a6064356155aa565b50886157b2565b9a61182d8c1515614f28565b8d6118378d615525565b903361566f565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516118af57600080516020615ad48339815191529460209461ffff946115006115099461180c565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6003196101003682018113610551576024359161191f83610945565b604435926001600160401b038085116105515760e085600401938636030112610551576064359081116105515761195a90369060040161142d565b9160803660831901126105515761001994611a8793611a5c611a5160c4611a4a611a6d966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356119c481610545565b166101448a01526119e860448801356119dc81610545565b61ffff166101648b0152565b611a026119f760648901610963565b6101848b0190611b82565b611a36611a2b8a6101a460e0611a1b60848d0187613b03565b92909301526102048d0191613ae2565b9160a4890190613b03565b8a830361012319016101c48c015290613ae2565b9401610963565b6101e4860190611b82565b838203602319016084850152613f31565b611a7960a48301613f65565b03601f198101835282610fd2565b614224565b3461055157602036600319011261055157600435611aa981610945565b60018060a01b031660005260156020526020604060002054604051908152f35b3461055157600036600319011261055157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610551576000366003190112610551576019546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435611b5281610545565b61ffff60243591611b6283610545565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610551576000366003190112610551576000546040516001600160a01b039091168152602090f35b3461055157604036600319011261055157600435611bd581610945565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611c00610c04565b92611c09613306565b611c1161424e565b60005260108252611c3b84611c2a836040600020612491565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610551576000366003190112610551576020601254604051908152f35b34610551576000366003190112610551576004546040516001600160a01b039091168152602090f35b9181601f84011215610551578235916001600160401b038311610551576020808501946101a0850201011161055157565b60a036600319011261055157600435611ce081610545565b6001600160401b039060243582811161055157611d01903690600401610563565b909160643584811161055157611d1b90369060040161142d565b93608435908111610551576100199461ffff94611de694611dd7611d76611d49611a79963690600401611c97565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613ae2565b60443560648801526060611dc760231996878a85030160848b01528035611d9c81610945565b6001600160a01b0390811685526020820135611db781610945565b1660208501526040810190613b03565b9190928160408201520191613ae2565b928584030160a4860152613b35565b61414f565b34610551576000806003193601126108a35760405181600c54611e0d816115a4565b8084529060019081811690811561087b5750600114611e365761081e8461081281880382610fd2565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611e7c575050508161081e936108129282010193610802565b8054858501870152928501928101611e60565b3461055157602060ff611ece61ffff61111b84611eab36611047565b94909116600052600782526040600020826040519483868095519384920161076a565b54166040519015158152f35b34610551576000366003190112610551576020601354604051908152f35b34610551576000806003193601126108a357611f12613306565b601a5480611f1e575080f35b30825260086020526040822054818110611f4d5750805b808203918211610d9c5761093991601a553333613450565b611f35565b3461055157604036600319011261055157610019600435611f7281610945565b611f8160ff6011541615614431565b611f8961424e565b6000526010602052611fa560ff610ec160406000203390612491565b6024359061460c565b346105515760203660031901126105515761ffff600435611fce81610545565b166000526001602052610e11611fee6040600020604051928380926115de565b80511561200c576108128161200661081e935161470d565b9061588c565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346105515760403660031901126105515760043561206e81610945565b60243590336000526009602052612089816040600020612491565b549180831061209e576112fc9203903361351f565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105515760e03660031901126105515760043561210e81610545565b6001600160401b03906064358281116105515761212f903690600401610563565b608492919235848116810361055157612146610c13565b9160c43595861161055157612162612172963690600401610563565b9590946044359060243590614cfd565b9061081e60405192839283610c3e565b346105515761219036610da1565b90612199613306565b604051926020928083858701376121c56034868381013060601b88820152036014810188520186610fd2565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610f9757612202836121fc86546115a4565b866147d7565b80601f841160011461226057509180809261224f9695948a9b600080516020615af48339815191529b94612255575b50501b916000199060031b1c19161790555b604051938493846147bc565b0390a180f35b015192503880612231565b91939498601f19841661227887600052602060002090565b938a905b8282106122cd57505091600080516020615af4833981519152999a9593918561224f989694106122b4575b505050811b019055612243565b015160001960f88460031b161c191690553880806122a7565b80888697829497870151815501960194019061227c565b346105515760403660031901126105515761099860043561230481610945565b6024359033613450565b6101e090608319011261055157608490565b908160a09103126105515790565b6102c03660031901126105515760043561234781610945565b60243561235381610945565b6044359161236083610545565b612368610956565b926123723661230e565b6001600160401b03946102643586811161055157612394903690600401611c97565b92909161028435888111610551576123b0903690600401612320565b946102a435988911610551576123cd610019993690600401610563565b98909761402d565b34610551576040366003190112610551576024356123f281610945565b6123fa613306565b61093960008080808095600435905af1612412613a36565b50613a66565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260096020526040902090565b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461055157604036600319011261055157602060ff611ece6024356124cc81610945565b600435600052600f84526040600020612491565b34610551576020366003190112610551577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561252081610945565b612528613306565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261055157600490565b60c0906101231901126105515761012490565b610220806003193601126105515761258b36612550565b6125943661140b565b9161259e36612561565b906001600160401b03906101e435828111610551576125c1903690600401611c97565b9091610204938435908111610551576125de903690600401610563565b94909560405198899863602b546f60e11b60208b015280356125ff81610945565b6001600160a01b0390811660248c015280602083013561261e81610945565b1660448c0152604082013560648c0152606082013560848c0152608082013561264681610945565b1660a48b015260a0013560c48a015260e4890161266291613c55565b610144880161267091613c8d565b86015261024485019061268292613b35565b906023198483030161022485015261269992613ae2565b03601f19810182526126ab9082610fd2565b6100199061414f565b346105515760003660031901126105515760206040516127108152f35b34610551576080366003190112610551576004356126ee81610545565b6024356126fa81610545565b6064356001600160401b03811161055157612719903690600401610563565b9092612723613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610551576000809461279a604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613ae2565b03925af1801561093c576127aa57005b806127b761001992610f84565b8061075f565b3461055157600036600319011261055157600e546040516001600160a01b039091168152602090f35b34610551576000366003190112610551576018546040516001600160a01b039091168152602090f35b61281836610590565b9161ffff8694929616600052600560205261284c81604060002060206040518092878b8337878201908152030190206110c7565b549182156128fb576128ea84836128e37fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128cf846128ca8e8a8f6128f69f908f6128b0906128a36128c49436908d611010565b6020815191012014614c3e565b61ffff166000526005602052604060002090565b91614c25565b6110c7565b556128db36878d611010565b933691611010565b91886149b2565b60405195869586614c94565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff8216820361055157565b359060ff8216820361055157565b346105515760e03660031901126105515760043561298781610945565b60243561299381610945565b60443590606435926129a361294c565b93804211612a8657612a6e612a8191612a4861001997612a566129e18760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610fd2565b612a6960c4359360a435935190206139f0565b6136fc565b6001600160a01b038381169116146136b0565b61351f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610551576040366003190112610551576020610bed600435612aed81610945565b602435906143ce565b3461055157600036600319011261055157600d546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435612b4181610945565b60243590612b4e82610945565b6001600160a01b031660009081526009845260409020612491565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461055157606036600319011261055157600435612bcb81610545565b602435612bd781610545565b60443591612be3613306565b8215612c5e576128f67f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612c388560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461055157600036600319011261055157602060405160018152f35b90816101c09103126105515790565b61014036600319011261055157600435612cdf81610945565b602435612ceb81610945565b60443591612cf883610545565b612d00610956565b6001600160401b03939060843585811161055157612d22903690600401610563565b90612d2c3661141c565b926101043588811161055157612d46903690600401612cb7565b946101243598891161055157612d63610019993690600401611c97565b989097613e4f565b34610551576020366003190112610551577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612da7610c22565b612daf613306565b151560ff196006541660ff821617600655604051908152a1005b346105515761010036600319011261055157600435612de781610545565b6001600160401b039060243582811161055157612e08903690600401610563565b919060443590848216820361055157608435612e2381610945565b60c43595861161055157612e3e610019963690600401610563565b94909360e4359660a4359460643593614df4565b3461055157612e6036610da1565b9190612e6a613306565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610f9757612ea687612ea085546115a4565b856147d7565b8590601f8811600114612efb575091868087989361224f95600080516020615b748339815191529993612ef0575b501b906000198460031b1c1916179055604051938493846147bc565b880135925038612ed4565b90601f198816612f1085600052602060002090565b9288905b828210612f6457505091889391600080516020615b74833981519152989961224f969410612f4a575b505082811b019055612243565b870135600019600386901b60f8161c191690553880612f3d565b808685968294968c01358155019501930190612f14565b3461055157604036600319011261055157602060ff611ece602435612f9f81610945565b600435600052601084526040600020612491565b3461055157600036600319011261055157602060ff600654166040519015158152f35b3461055157604036600319011261055157600435612ff381610945565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b9602061301e610c04565b92613027613306565b61302f61424e565b600052600f8252611c3b84611c2a836040600020612491565b346105515760203660031901126105515760043561306581610945565b61306d613306565b6001600160a01b0390811680156130a957600080546001600160a01b0319811683178255909216600080516020615b348339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610551576000366003190112610551576017546040516001600160a01b039091168152602090f35b346105515760803660031901126105515760043561314381610545565b6024359061315082610545565b61315b604435610945565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c5761081e916000916131d9575b50604051918291826107b2565b6131f4913d8091833e6131ec8183610fd2565b810190614786565b386131cc565b3461055157602036600319011261055157613213610c22565b61322860018060a01b03600e54163314613aa1565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346105515760203660031901126105515760043561329081610945565b613298613306565b6001600160a01b03908116906132af821515613aa1565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b34610551576000366003190112610551576020604051308152f35b6000546001600160a01b0316330361331a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d9c57565b6051019081605111610d9c57565b91908201809211610d9c57565b156133a457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156133fc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134cc576134b182600080516020615b54833981519152946134c794169661348a88151561339d565b6134ab8461349783612477565b546134a4828210156133f5565b0391612477565b55612477565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156135cf57821693841561357f578061356e7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946112a06134c79561245d565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613640816040600020612491565b5492600184016136505750505050565b80841061366b5761366293039161351f565b3880808061160b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156136b757565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107c3939161370b9361385e565b919091613733565b6005111561371d57565b634e487b7160e01b600052602160045260246000fd5b61373c81613713565b806137445750565b61374d81613713565b600181036137995760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6137a281613713565b600281036137ef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137fb600392613713565b1461380257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561093c5781516001600160a01b038116156138c4579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139c7575b15613931577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526139c181610f9c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613908565b6139f86138d6565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610f975760405251902090565b3d15613a61573d90613a4782610ff5565b91613a556040519384610fd2565b82523d6000602084013e565b606090565b15613a6d57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b15613aa857565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e1982360301811215610551570160208101919035906001600160401b03821161055157813603831361055157565b9190808252602080920192916000905b828210613b53575050505090565b9091929380613b6d600192613b6788610c31565b15159052565b613b83613b7b848801610c31565b151582850152565b613b9b6040613b93818901610c31565b151590830152565b613bb56060613bab818901610556565b61ffff1690830152565b613bce6080613bc5818901610963565b90830190611b82565b613bde60a0613b93818901610c31565b613bee60c0613bc5818901610963565b613bfe60e0613bc5818901610963565b61010080870135908201526101208087013590820152613c2e610140613c2581890161295c565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613b45565b6040809161ffff8135613c6781610545565b1684526020810135613c7881610945565b6001600160a01b031660208501520135910152565b60a08091613c9a81610c31565b151584526020810135613cac81610945565b600180841b03809116602086015261ffff6040830135613ccb81610545565b166040860152606082013560608601526080820135613ce981610945565b1660808501520135910152565b60408091613d0381610c31565b151584526020810135613c7881610945565b9035609e1982360301811215610551570190565b9060a0613d7e6107c393613d3c81610c31565b1515845260208101356020850152613d5660408201610c31565b1515604085015261ffff6060820135613d6e81610545565b1660608501526080810190613b03565b9190928160808201520191613ae2565b906107c391613da082613b6783610c31565b60208101356020830152613dc2613db960408301610c31565b15156040840152565b60608101356060830152613de4613ddb60808301610c31565b15156080840152565b60a081013560a0830152613dfe60c0830160c08301613cf6565b613e0f610120808401908301613cf6565b613e32610180613e2181840184613d15565b906101c08091860152840190613d29565b91613e436101a09283810190613d15565b91818403910152613d29565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613eaa91610164890191613ae2565b93818135613eb781610945565b1660c4880152816020820135613ecc81610945565b1660e488015260400135613edf81610945565b16610104860152602319928386820301610124870152613efe91613d8e565b9184830301610144850152613f1292613b35565b03601f1981018252613f249082610fd2565b613f2d906141fa565b5050565b906060611dc76107c3938035613f4681610945565b6001600160a01b03168452602081810135908501526040810190613b03565b6060608435613f7381610945565b6001600160a01b0390811683528060a435613f8d81610945565b1660208401528060c435613fa081610945565b16604084015260e435613fb281610945565b16910152565b35906001600160801b038216820361055157565b60808091613fd981610c31565b151584526020810135613feb81610945565b6001600160a01b031660208501526000196001831b018061400e60408401613fb8565b16604086015261402060608301613fb8565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff90921660648201529181166084830152909687969594909392909161407c82610c31565b151560a4890152602082013560c4890152604082013560e489015260608201356140a581610945565b166101048801526140b860808201610963565b61012488016140c691611b82565b6140d260a08201610c31565b151561014488015260c08101356101648801526140f6610184880160e08301613fcc565b6141099061022488019061018001613cf6565b61028486016102c090526102e486019061412292613b35565b916023199283868203016102a487015261413b91613d29565b91848303016102c4850152613f1292613ae2565b6019546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b908215806141b4575b61418857565b61379561419483614315565b60405162461bcd60e51b815260206004820152918291602483019061078d565b506001614182565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6017546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c576000906142a4575b61ffff91501690565b6020823d82116142d8575b816142bc60209383610fd2565b810103126108a3575061ffff90516142d381610545565b61429b565b3d91506142af565b909291926142ed81610ff5565b916142fb6040519384610fd2565b82948284528282011161055157602061056193019061076a565b604481511061436657600481015181019060208160248401930312610551576024810151906001600160401b038211610551570190806043830112156105515760248201516107c3926044016142e0565b5060405161437381610fb7565b600a8152695553444f3a206461746160b01b602082015290565b600a5460135490818111156143a0575090565b905090565b81810292918115918404141715610d9c57565b634e487b7160e01b600052601260045260246000fd5b306001600160a01b03909116036143f4576143f0620f424091601254906143a5565b0490565b60405162461bcd60e51b81526020600482015260156024820152741554d113ce881d1bdad95b881b9bdd081d985b1a59605a1b6044820152606490fd5b1561443857565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b1561447357565b60405162461bcd60e51b81526020600482015260186024820152771554d113ce881c995c185e481b9bdd08185c1c1c9bdd995960421b6044820152606490fd5b156144ba57565b60405162461bcd60e51b815260206004820152601060248201526f5553444f3a207265656e7472616e637960801b6044820152606490fd5b156144f957565b60405162461bcd60e51b81526020600482015260146024820152735553444f3a20616d6f756e7420746f6f2062696760601b6044820152606490fd5b90816020910312610551575190565b91926107c396949160a094600180871b038092168552166020840152604083015260608201528160808201520191613ae2565b6001600160a01b038116919082156145c757600a5490828201809211610d9c576000926145b8602092600080516020615b5483398151915294600a55612477565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156146be5761462681612477565b5483811061466e5783600080516020615b54833981519152926146506000966134c7940391612477565b5561465e81600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610d9c57565b605019810191908211610d9c57565b1561473257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610551578051906001600160401b03821161055157019080601f830112156105515781516107c3926020016142e0565b60409061ffff6107c395931681528160208201520191613ae2565b90601f81116147e557505050565b600091825260208220906020601f850160051c83019410614821575b601f0160051c01915b82811061481657505050565b81815560010161480a565b9092508290614801565b92909161488f5a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061488982612a4861486860a483018a61078d565b6001600160401b03881660648401528281036023190160848401528861078d565b30615a88565b93901561489e575b5050505050565b6148a7946148b1565b3880808080614897565b919361494f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561495d939561ffff815160208301209616958660005260056020526149158361111b60208b6040600020826040519483868095519384920161076a565b55614932604051978897885260a0602089015260a088019061078d565b6001600160401b039092166040870152858203606087015261078d565b90838203608085015261078d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a0604082018190526107c394926149949183019061078d565b6001600160401b03909316606082015280830360809091015261078d565b9291906149be83615a3b565b6103068103614a06575060185461056194908190614a01906001600160a01b0316611a7987878760405196879563100b652360e01b602088015260248701614962565b614bc7565b6103078103614a4e575060175461056194908190614a49906001600160a01b0316611a79878787604051968795634dd8df6360e11b602088015260248701614962565b614bf6565b6103058103614a7e575060405163163b7bd360e21b60208201526105619490614a0181611a7987602483016107b2565b6103098103614ac6575060195461056194908190614ac1906001600160a01b0316611a798787876040519687956381618d0560e01b602088015260248701614962565b614b6c565b61030a03614af45760405163af2ee97560e01b60208201526105619490614ac181611a7987602483016107b2565b614b06614b00846159e0565b60ff1690565b80614b17575050506105619161513d565b600103614b275761056193615284565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b93158080614bbf575b614bb35761489e575050505050565b61379561419486614315565b506000614ba4565b60185491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b60175491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b6020919283604051948593843782019081520301902090565b15614c4557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614cb79398979698168452608060208501526080840191613ae2565b6001600160401b0390951660408201520152565b903590601e198136030182121561055157018035906001600160401b0382116105515760200191813603831361055157565b949195989790611837614d26604099614d1e614d2c97614d49993691611010565b943691611010565b97615525565b928451968794859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561093c576000908193614d8c57509190565b90506105f191925060403d8111610d4a57610d3b8183610fd2565b939694916107c398969361ffff614dcc9316865260c0602087015260c0860191613ae2565b6001600160401b0390961660408401526060830152608082015280840360a090910152613ae2565b91969792989594939094303303614e8957614e109085306157d8565b60405181815290946001600160a01b03169390849061ffff851690600080516020615b1483398151915290602090a3833b15610551576000988995614e6c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614da7565b0393f1801561093c57614e7c5750565b806127b761056192610f84565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610551576020825192015190565b91926107c3959361ffff614f139316845260018060a01b0316602084015260a0604084015260a083019061078d565b9215156060820152608081840391015261078d565b15614f2f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614f956107c397959361ffff614fa39416865260c0602087015260c086019061078d565b90848203604086015261078d565b6001600160a01b0391821660608401529316608082015280830360a09091015261078d565b94614ff19193929561ffff81166000526001602052614ff86040600020604051948580926115de565b0384610fd2565b8251156150705761500a8551826150ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156105515760009661505f91604051998a988997889662c5803160e81b885260048801614f70565b03925af1801561093c57614e7c5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615133575b116150ef57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506150e8565b9060ff615149826159e0565b1615806151ec575b61515a90615628565b61516c61516682615990565b91615a2b565b6001600160a01b0390818316156151e2575b600080516020615b148339815191529160209161ffff91906151ca907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166143a5565b946151d58682614577565b60405195865216941692a3565b61dead925061517e565b508051602914615151565b989796929361522160e0979361ffff6152569894168c5260208c61010091829101528c019061078d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261078d565b930152565b6152736040929594939560608352606083019061078d565b94600180841b031660208201520152565b909161528f846156d9565b90916152c06152b9876128ca6152b38b61ffff166000526007602052604060002090565b8c6110a1565b5460ff1690565b916001600160401b03916152f7907f00000000000000000000000000000000000000000000000000000000000000009084166143a5565b9288888b83156153f3575b505050853b156153a857946153499694614889948a94612a48948d996000146153a15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016151f7565b901561539657509061539161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461525b565b0390a2565b9261056194926148b1565b169261532a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061495d915050565b906128ca615428926154228961540d615435979b30614577565b9961ffff166000526007602052604060002090565b906110a1565b805460ff19166001179055565b88888b615302565b60065460ff161561548a57602282511061183e5761ffff60226105619301519116600052600260205261547d604060002060008052602052604060002090565b5490611805821515615492565b50516118af57565b1561549957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b156154e257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156155a5576001600160401b03919004818111615563571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b6143b8565b7f000000000000000000000000000000000000000000000000000000000000000080156155a557810690818103908111610d9c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610f975760405290565b1561562f57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926107c394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526156c9815180926020868601910161076a565b8101036051810184520182610fd2565b906156f1600160ff6156ea856159e0565b1614615628565b6156fa82615990565b9061570483615a2b565b90604984511061577557604984015193605181511061573957615736605182015191615730815161471c565b9061590c565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107c39082906001600160a01b038116331461460c576157d3823383613620565b61460c565b6107c39183916001600160a01b038116308114159081615804575b501561345057610bb1833383613620565b9050331415386157f3565b1561581657565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561585357565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6158a08261589981613374565b101561580f565b6158ad828251101561584c565b816158c5575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106158f95750508252601f01601f191660405290565b90928351815260208091019301906158e1565b6159198261589981613374565b61592e815161592784613382565b111561584c565b81615946575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061597d5750508252601f01601f191660405290565b9092835181526020809101930190615965565b60218151106159a357602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106159f0576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615739576029015190565b6020815110615a4b576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615a9c87610f9c565b6096875282602088019560a036883760208451940192f1903d9060968211615aca575b6000908286523e9190565b60969150615abf56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220d7826c45684a8e683ff61ce287071db64113d91ea67e98910fb88887d7e1a92064736f6c63430008120033", + "bytecode": "0x6101c06040523462000b7d5761016062006906803803809162000025826101c062000b9e565b6101c0391262000b7d576200003c6101c062000bc2565b6101e051906001600160a01b038216820362000b7d57610200516001600160a01b038116810362000b7d576200007461022062000bc2565b926200008261024062000bc2565b916200009061026062000bc2565b6200009d61028062000bc2565b91620000ab6102a062000bc2565b93620000b96102c062000bc2565b95620000c76102e062000bc2565b91620000d561030062000bc2565b9360405191620000e58362000b82565b60048352635553444f60e01b60208401526040519a620001058c62000b82565b60018c52603160f81b60208d0152604051620001218162000b82565b60048152635553444f60e01b602082015260405191620001418362000b82565b60048352635553444f60e01b60208401526200015d3362000bd7565b6001600160a01b0316608052600860a0528051906001600160401b038211620008c857600b5490600182811c9216801562000b72575b602083101462000a445781601f84931162000b00575b50602090601f831160011462000a715760009262000a65575b50508160011b916000199060031b1c191617600b555b8051906001600160401b038211620008c857600c5490600182811c9216801562000a5a575b602083101462000a445781601f849311620009d2575b50602090601f8311600114620009435760009262000937575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa9081156200092b57600091620008de575b5061ffff1680600052600f60205260406000203360005260205260406000209060ff19916001838254161790556000526010602052604060002033600052602052600160406000209182541617905560e05260018060a01b031660018060a01b0319600d541617600d5560208151910120976020815191012088610160528061018052466101205260405198600080516020620068e683398151915260208b015260408a015260608901524660808901523060a089015260a088528760c081011060018060401b0360c08a011117620008c85760c08801604081905288516020808b0191909120610100523061014052600080516020620068e68339815191526101a052601580546001600160a01b039485166001600160a01b031991821681179092556016805498861698821689179055601780549986169982168a179055601880549a86169a82168b179055601980549b86169b82168c179055601a805496861696821687179055601b805497909516968116871790945560129091527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3805484169095179094557f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4805483169098179097557f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc805482169092179091557f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2805482169092179091557f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a805482169092179091557fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0538054821690921790915560056000527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746805490911690911790556200053e9062000b82565b600560c082015260e0810163100b652360e01b8152610306600052601c8060205260c06040600020930151916008831015620008b25783549264ffffffff00948592519160d89560ff938464ffffffffff199687928a1c169316911617179055604051620005ac8162000b82565b6003815260208101634dd8df6360e11b81526103076000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620005fa8162000b82565b60058152602081016313030a6160e31b81526103056000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006488162000b82565b6003815260208101631007cea560e31b81526103046000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006968162000b82565b60078152602081016381618d0560e01b81526103096000528460205260406000209151906008821015620008b257848489855493518a1c16931691161717905560405194620006e58662000b82565b600186526020860193630cef3d9360e31b855261030a60005260205260406000209551946008861015620008b25786549451901c1693169116171790553360018060a01b0360005416036200086e576001600160a01b038116156200081a576200074f9062000bd7565b604051615cc7908162000c1f82396080518181816105bc0152818161087f015281816109c801528181610bd401528181611100015281816123c00152818161267e015281816130da015281816144d101528181614e800152615150015260a05181611a2c015260c0518181816152f70152818161541d0152818161568e0152615728015260e05181612a9c015261010051816138a00152610120518161395b0152610140518161386a015261016051816138ef0152610180518161391501526101a051816138cc0152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6020813d60201162000922575b81620008fa6020938362000b9e565b810103126200091e57519061ffff821682036200091b575061ffff62000282565b80fd5b5080fd5b3d9150620008eb565b6040513d6000823e3d90fd5b0151905038806200022c565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f1984168510620009b6576001945083601f198116106200099c575b505050811b01600c5562000242565b015160001960f88460031b161c191690553880806200098d565b8181015183556020948501946001909301929091019062000970565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c81016020851062000a3c575b90849392915b601f830160051c8201811062000a2c57505062000213565b6000815585945060010162000a14565b508062000a0e565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001fd565b015190503880620001c2565b600b600090815293507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db991905b601f198416851062000ae4576001945083601f1981161062000aca575b505050811b01600b55620001d8565b015160001960f88460031b161c1916905538808062000abb565b8181015183556020948501946001909301929091019062000a9e565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c81016020851062000b6a575b90849392915b601f830160051c8201811062000b5a575050620001a9565b6000815585945060010162000b42565b508062000b3c565b91607f169162000193565b600080fd5b604081019081106001600160401b03821117620008c857604052565b601f909101601f19168101906001600160401b03821190821017620008c857604052565b51906001600160a01b038216820362000b7d57565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104f057806301ffc9a7146104eb57806306fdde03146104e657806307e0db17146104e1578063095ea7b3146104dc5780630df37483146104d757806310ddb137146104d2578063147b6228146104cd57806318160ddd1461044157806323b872dd146104c8578063313ce567146104c35780633644e515146104be578063365260b4146104b957806339509351146104b45780633bdd4a43146104af5780633d8b38f6146104aa5780633f1f4fa4146104a557806340c10f19146104a057806342d65a8d1461049b578063437be6221461049657806344770515146104915780634c42899a146104915780635128e83d1461048c5780635b8c41e6146104875780635c975abb1461048257806366ad5c8a1461047d578063695ef6bf1461047857806370a0823114610473578063715018a61461046e5780637533d7881461046957806376203b4814610464578063796fd43a1461045f5780637ecebe001461045a578063857749b0146104555780638cfd8f5c146104505780638da5cb5b1461044b5780639169d59e146104465780639358928b14610441578063950c8a741461043c578063952168c51461043757806395d89b41146104325780639bdb98121461042d5780639d554eac146104285780639dc29fac146104235780639f38369a1461041e578063a457c2d714610419578063a4c51df514610414578063a6c3d1651461040f578063a9059cbb1461040a578063b02f69a214610405578063b25ea8fb14610400578063b28de4c5146103fb578063b353aaa7146103f6578063ba03a8d7146103f1578063baf3292d146103ec578063c056a8de146103e7578063c4461834146103e2578063cbed8b9c146103dd578063ce8849ed146103d8578063d1deba1f146103d3578063d505accf146103ce578063dbd01de1146103c9578063dd62ed3e146103c4578063de406577146103bf578063df2a5b3b146103ba578063e6a20ae6146103b5578063e78eb946146103b0578063eab45d9c146103ab578063eaffd49a146103a6578063eb8d72b7146103a1578063ec6d062b1461039c578063ed629c5c14610397578063f00c298d14610392578063f2fde38b1461038d578063f5ecbdbc14610388578063f8974de014610383578063fa74f0b51461037e5763fc0c546a0361000e5761320c565b6131bd565b613144565b613070565b612fa9565b612f26565b612f03565b612eb9565b612d6f565b612ce6565b612c88565b612be3565b612bb8565b612acb565b612a86565b612a2c565b612a03565b6128a2565b61273f565b612716565b61262a565b61260d565b6124cd565b612439565b6123ef565b6123aa565b612381565b61230a565b612263565b612219565b612096565b612003565b611f45565b611ea2565b611e36565b611ddc565b611d91565b611ced565b611bca565b611b70565b610a68565b611acb565b611aa2565b611a50565b611a12565b6119d5565b6118ff565b6116e1565b61168a565b611544565b611507565b611424565b61139e565b61137b565b611314565b6111fc565b6111e0565b611167565b6110e6565b611073565b61103a565b610fde565b610f08565b610c52565b610b4e565b610ae2565b610ac6565b610a86565b610a29565b61099f565b610960565b61092b565b610856565b610776565b6106b9565b6105a5565b61ffff81160361050157565b600080fd5b3590610511826104f5565b565b9181601f84011215610501578235916001600160401b038311610501576020838186019501011161050157565b90608060031983011261050157600435610559816104f5565b916001600160401b0390602435828111610501578161057a91600401610513565b9390939260443581811681036105015792606435918211610501576105a191600401610513565b9091565b34610501576105b336610540565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106745761063961064192610019976106326106186106138a61ffff166000526001602052604060002090565b61166f565b805190818414918261066a575b5081610647575b5061481f565b369161125e565b92369161125e565b9261491f565b905061065436848661125e565b602081519101209060208151910120143861062c565b1515915038610625565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105015760203660031901126105015760043563ffffffff60e01b811680910361050157602090631f7ecdf760e01b81149081156106fe575b506040519015158152f35b6301ffc9a760e01b149050386106f3565b600091031261050157565b60005b83811061072d5750506000910152565b818101518382015260200161071d565b906020916107568151809281855285808601910161071a565b601f01601f1916010190565b90602061077392818152019061073d565b90565b34610501576000806003193601126108535760405181600b546107988161159f565b8084529060019081811690811561082b57506001146107d2575b6107ce846107c281880382610d6d565b60405191829182610762565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061081857505050816107ce936107c292820101936107b2565b80548585018701529285019281016107fc565b6107ce96506107c29450602092508593915060ff191682840152151560051b820101936107b2565b80fd5b34610501576000602036600319011261085357600435610875816104f5565b61087d613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108ec576108e0575080f35b6108e990610d1f565b80f35b6137e3565b5080fd5b6001600160a01b0381160361050157565b60043590610511826108f5565b60643590610511826108f5565b3590610511826108f5565b346105015760403660031901126105015761095560043561094b816108f5565b6024359033613479565b602060405160018152f35b346105015760403660031901126105015761ffff600435610980816104f5565b610988613227565b166000526003602052602435604060002055600080f35b346105015760006020366003190112610853576004356109be816104f5565b6109c6613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108ec576108e0575080f35b3461050157602036600319011261050157610a4f60018060a01b03601e541633146139f8565b601d546004358101809111610a6357601d55005b61327f565b34610501576000366003190112610501576020600a54604051908152f35b3461050157606036600319011261050157610955600435610aa6816108f5565b602435610ab2816108f5565b60443591610ac18333836135a4565b613371565b3461050157600036600319011261050157602060405160128152f35b34610501576000366003190112610501576020610afd613867565b604051908152f35b60643590811515820361050157565b60243590811515820361050157565b60a43590811515820361050157565b60043590811515820361050157565b3590811515820361050157565b346105015760a036600319011261050157600435610b6b816104f5565b610b73610b05565b90608435906001600160401b03821161050157610b996106326040933690600401610513565b90610bd0610bb3610bab60443561568c565b60243561575d565b928451958694859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108ec576000908192610c21575b50604080519182526020820192909252f35b9050610c44915060403d8111610c4b575b610c3c8183610d6d565b810190615012565b9038610c0f565b503d610c32565b3461050157604036600319011261050157600435610c6f816108f5565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610a63576109559133613479565b60609060c31901126105015760c490565b60609060a31901126105015760a490565b908160609103126105015790565b908160e09103126105015790565b60809060a31901126105015760a490565b608090608319011261050157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d3257604052565b610d09565b60c081019081106001600160401b03821117610d3257604052565b604081019081106001600160401b03821117610d3257604052565b90601f801991011681019081106001600160401b03821117610d3257604052565b604051906101a082018281106001600160401b03821117610d3257604052565b6084359060ff8216820361050157565b359060ff8216820361050157565b81601f82011215610501578035906001600160401b038211610d32576040805193602091610dff838660051b0187610d6d565b84865282860191836101a080970286010194818611610501578401925b858410610e2d575050505050505090565b868483031261050157848791610e41610d8e565b610e4a87610b41565b8152610e57838801610b41565b83820152610e66868801610b41565b868201526060610e77818901610506565b908201526080610e88818901610920565b9082015260a0610e99818901610b41565b9082015260c0610eaa818901610920565b9082015260e0610ebb818901610920565b9082015261010080880135908201526101208088013590820152610140610ee3818901610dbe565b9082015261016080880135908201526101808088013590820152815201930192610e1c565b61016036600319011261050157610f1d610906565b6001600160401b039060643582811161050157610f3e903690600401610ccb565b60843583811161050157610f56903690600401610cd9565b90610f6036610ce7565b6101243585811161050157610f79903690600401610513565b9390926101443596871161050157610f98610019973690600401610dcc565b956044359060243590613bc8565b90604060031983011261050157600435610fbf816104f5565b91602435906001600160401b038211610501576105a191600401610513565b3461050157602061ffff61102b610ff436610fa6565b939091166000526001845261101661101d6040600020604051928380926115d9565b0382610d6d565b84815191012092369161125e565b82815191012014604051908152f35b346105015760203660031901126105015761ffff60043561105a816104f5565b1660005260036020526020604060002054604051908152f35b3461050157604036600319011261050157610019600435611093816108f5565b6110a260ff60115416156145fb565b6110aa6144bc565b600052600f6020526110dd60ff6110d660406000203360018060a01b0316600052602052604060002090565b54166139f8565b60243590614636565b34610501576110f436610fa6565b91906110fe613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561050157604051928380926342d65a8d60e01b82528161115560009889978894600485016148b0565b03925af180156108ec576108e0575080f35b3461050157602036600319011261050157600435611184816108f5565b6001600160a01b031680156111a957600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b3461050157600036600319011261050157602060405160008152f35b3461050157602036600319011261050157600435611219816108f5565b611221613227565b601e80546001600160a01b0319166001600160a01b0392909216919091179055005b6001600160401b038111610d3257601f01601f191660200190565b92919261126a82611243565b916112786040519384610d6d565b829481845281830111610501578281602093846000960137010152565b6060600319820112610501576004356112ad816104f5565b916024356001600160401b03928382116105015780602383011215610501578160246112de9360040135910161125e565b9160443590811681036105015790565b60209061130892826040519483868095519384920161071a565b82019081520301902090565b3461050157602061137261ffff6113518361132e36611295565b94909116600052600582526040600020826040519483868095519384920161071a565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b3461050157600036600319011261050157602060ff601154166040519015158152f35b34610501576113ac36610540565b91929493903033036113d0576106396113ca9261001997369161125e565b92614ae7565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126105015760043561143c816108f5565b602435611448816104f5565b604435916084356001600160401b03811161050157602061ffff61147f600080516020615c52833981519152933690600401610ccb565b936114f2853561148e816108f5565b6114ac61063286890135986114a28a6108f5565b6040810190614dfe565b6114b6818a615589565b6114cb6114c4606435615726565b5085615930565b976114d789151561506c565b6114e96114e38a61568c565b8c61575d565b9234938b61510c565b6040519485526001600160a01b0316941692a4005b3461050157602036600319011261050157600435611524816108f5565b60018060a01b031660005260086020526020604060002054604051908152f35b34610501576000806003193601126108535761155e613227565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156115cf575b60208310146115b957565b634e487b7160e01b600052602260045260246000fd5b91607f16916115ae565b90600092918054916115ea8361159f565b91828252600193848116908160001461164c575060011461160c575b50505050565b90919394506000526020928360002092846000945b838610611638575050505001019038808080611606565b805485870183015294019385908201611621565b9294505050602093945060ff191683830152151560051b01019038808080611606565b9061051161168392604051938480926115d9565b0383610d6d565b346105015760203660031901126105015761ffff6004356116aa816104f5565b1660005260016020526107ce6110166116cd6040600020604051928380926115d9565b60405191829160208352602083019061073d565b60e0366003190112610501576004356116f9816108f5565b602435611705816104f5565b604435916001600160401b03906084358281116105015761172a903690600401610513565b91909260a43591818316918284036105015760c43590811161050157611754903690600401610ccb565b9261178b843595611764876108f5565b6117836117796020880135976114a2896108f5565b999092369161125e565b97369161125e565b9460ff6006541660001461187e57602286511061183957856020956114e96114f2946118078c6117f461ffff9a8b6022600080516020615c528339815191529f0151931660005260028d526117ee60406000206001600052602052604060002090565b546132b1565b906118008215156155de565b101561562a565b61181c611815606435615726565b5088615930565b9a6118288c151561506c565b8d6118328d61568c565b90336157ea565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516118ab57600080516020615c528339815191529460209461ffff946114e96114f294611807565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b61010080600319360112610501576024359061191a826108f5565b6001600160401b036044358181116105015761193a903690600401610cd9565b9260643591821161050157610019936119c26119b76119606119d0953690600401610ccb565b6119a561196c36610cf8565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b031660448901526064880152610124870190613abf565b85810360231901608487015290613a8b565b9160a4840190613b70565b03601f198101835282610d6d565b6142ed565b34610501576020366003190112610501576004356119f2816108f5565b60018060a01b031660005260136020526020604060002054604051908152f35b3461050157600036600319011261050157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610501576040366003190112610501576020611372600435611a72816104f5565b61ffff60243591611a82836104f5565b166000526002835260406000209061ffff16600052602052604060002090565b34610501576000366003190112610501576000546040516001600160a01b039091168152602090f35b3461050157604036600319011261050157600435611ae8816108f5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611b13610b14565b92611b1c613227565b611b246144bc565b60009081526010835260408082206001600160a01b03841683526020529020611b5b9085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610501576000366003190112610501576004546040516001600160a01b039091168152602090f35b9181601f84011215610501578235916001600160401b038311610501576020808501946101a0850201011161050157565b60a036600319011261050157600435611be2816104f5565b6001600160401b039060243582811161050157611c03903690600401610513565b909160643584811161050157611c1d903690600401610ccb565b93608435908111610501576100199461ffff94611ce894611cd9611c78611c4b6119c2963690600401611b99565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613a6a565b60443560648801526060611cc960231996878a85030160848b01528035611c9e816108f5565b6001600160a01b0390811685526020820135611cb9816108f5565b1660208501526040810190613a39565b9190928160408201520191613a6a565b928584030160a4860152613e00565b61445f565b34610501576000806003193601126108535760405181600c54611d0f8161159f565b8084529060019081811690811561082b5750600114611d38576107ce846107c281880382610d6d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611d7e57505050816107ce936107c292820101936107b2565b8054858501870152928501928101611d62565b3461050157602060ff611dd061ffff61135184611dad36611295565b94909116600052600782526040600020826040519483868095519384920161071a565b54166040519015158152f35b346105015760008060031936011261085357611df6613227565b601d5480611e02575080f35b30825260086020526040822054818110611e315750805b808203918211610a63576108e991601d553333613371565b611e19565b3461050157604036600319011261050157610019600435611e56816108f5565b611e6560ff60115416156145fb565b611e6d6144bc565b6000526010602052611e9960ff6110d660406000203360018060a01b0316600052602052604060002090565b602435906146de565b346105015760203660031901126105015761ffff600435611ec2816104f5565b166000526001602052611016611ee26040600020604051928380926115d9565b805115611f00576107c281611efa6107ce9351614801565b90615a0a565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461050157604036600319011261050157600435611f62816108f5565b60243590336000526009602052611f8f8160406000209060018060a01b0316600052602052604060002090565b5491808310611fb057611fa492039033613479565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105015760e036600319011261050157600435612020816104f5565b6001600160401b039060643582811161050157612041903690600401610513565b608492919235848116810361050157612058610b23565b9160c43595861161050157612074612084963690600401610513565b9590946044359060243590614e30565b60408051928352602083019190915290f35b34610501576120a436610fa6565b906120ad613227565b604051926020928083858701376120d96034868381013060601b88820152036014810188520186610d6d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d32576121138361210d865461159f565b866148cb565b80601f84116001146121835750918080926121729695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612178575b50501b916000199060031b1c19161790555b604051938493846148b0565b0390a180f35b015192503880612154565b91939498601f19841661219b87600052602060002090565b938a905b828210612202575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185612172989694106121e9575b505050811b019055612166565b015160001960f88460031b161c191690553880806121dc565b80888697829497870151815501960194019061219f565b3461050157604036600319011261050157610955600435612239816108f5565b6024359033613371565b6101e090608319011261050157608490565b908160a09103126105015790565b6102c03660031901126105015760043561227c816108f5565b602435612288816108f5565b60443591612295836104f5565b61229d610913565b926122a736612243565b6001600160401b039461026435868111610501576122c9903690600401611b99565b92909161028435888111610501576122e5903690600401612255565b946102a43598891161050157612302610019993690600401610513565b989097613f8b565b3461050157604036600319011261050157602435612327816108f5565b61232f613227565b60008080808094600435905af16123446139c8565b501561234d5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b3461050157600036600319011261050157601e546040516001600160a01b039091168152602090f35b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157604036600319011261050157602060ff611dd0602435612413816108f5565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b34610501576020366003190112610501577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612479816108f5565b612481613227565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261050157600490565b60c0906101231901126105015761012490565b61022080600319360112610501576124e4366124a9565b6124ed36610ca9565b916124f7366124ba565b906001600160401b03906101e4358281116105015761251a903690600401611b99565b909161020493843590811161050157612537903690600401610513565b94909560405198899863602b546f60e11b60208b01528035612558816108f5565b6001600160a01b0390811660248c0152806020830135612577816108f5565b1660448c0152604082013560648c0152606082013560848c0152608082013561259f816108f5565b1660a48b015260a0013560c48a015260e489016125bb91614261565b61014488016125c991614284565b8601526102448501906125db92613e00565b90602319848303016102248501526125f292613a6a565b03601f19810182526126049082610d6d565b610019906143b9565b346105015760003660031901126105015760206040516127108152f35b3461050157608036600319011261050157600435612647816104f5565b602435612653816104f5565b6064356001600160401b03811161050157612672903690600401610513565b909261267c613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561050157600080946126f3604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613a6a565b03925af180156108ec5761270357005b8061271061001992610d1f565b8061070f565b3461050157600036600319011261050157600e546040516001600160a01b039091168152602090f35b61274836610540565b9161ffff8694929616600052600560205261278f81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156128515761284084836128397fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128258461280d8e8a8f61284c9f908f6127f3906127e66128079436908d61125e565b6020815191012014614d71565b61ffff166000526005602052604060002090565b91614d58565b906001600160401b0316600052602052604060002090565b5561283136878d61125e565b93369161125e565b9188614ae7565b60405195869586614dc7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346105015760e0366003190112610501576004356128bf816108f5565b6024356128cb816108f5565b60443590606435926128db610dae565b938042116129be576129a66129b9916129806100199761298e6129198760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610d6d565b6129a160c4359360a43593519020613981565b613688565b6001600160a01b0383811691161461363c565b613479565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050157600036600319011261050157600d546040516001600160a01b039091168152602090f35b34610501576040366003190112610501576020611372600435612a4e816108f5565b60243590612a5b826108f5565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157606036600319011261050157600435612ae8816104f5565b602435612af4816104f5565b60443591612b00613227565b8215612b7b5761284c7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612b558560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461050157600036600319011261050157602060405160018152f35b90816101c09103126105015790565b61014036600319011261050157600435612bfc816108f5565b602435612c08816108f5565b60443591612c15836104f5565b612c1d610913565b6001600160401b03939060843585811161050157612c3f903690600401610513565b90612c4936610cba565b926101043588811161050157612c63903690600401612bd4565b946101243598891161050157612c80610019993690600401611b99565b98909761419e565b34610501576020366003190112610501577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612cc4610b32565b612ccc613227565b151560ff196006541660ff821617600655604051908152a1005b346105015761010036600319011261050157600435612d04816104f5565b6001600160401b039060243582811161050157612d25903690600401610513565b919060443590848216820361050157608435612d40816108f5565b60c43595861161050157612d5b610019963690600401610513565b94909360e4359660a4359460643593614f26565b3461050157612d7d36610fa6565b9190612d87613227565b60009161ffff81168352600160209080825260408520916001600160401b038711610d3257612dc087612dba855461159f565b856148cb565b8590601f8811600114612e275750918680879893612172957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612e1c575b501b906000198460031b1c1916179055604051938493846148b0565b880135925038612e00565b90601f198816612e3c85600052602060002090565b9288905b828210612ea2575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899612172969410612e88575b505082811b019055612166565b870135600019600386901b60f8161c191690553880612e7b565b808685968294968c01358155019501930190612e40565b3461050157604036600319011261050157602060ff611dd0602435612edd816108f5565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b3461050157600036600319011261050157602060ff600654166040519015158152f35b3461050157604036600319011261050157600435612f43816108f5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612f6e610b14565b92612f77613227565b612f7f6144bc565b6000908152600f835260408082206001600160a01b03841683526020529020611b5b908590611b4a565b3461050157602036600319011261050157600435612fc6816108f5565b612fce613227565b6001600160a01b03908116801561301c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346105015760803660031901126105015760043561308d816104f5565b6024359061309a826104f5565b6130a56044356108f5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec576107ce91600091613123575b5060405191829182610762565b61313e913d8091833e6131368183610d6d565b81019061487a565b38613116565b346105015760203660031901126105015761315d610b32565b61317260018060a01b03600e541633146139f8565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b34610501576020366003190112610501576004356131da816108f5565b6131e2613227565b6001600160a01b03166131f68115156139f8565b600e80546001600160a01b031916919091179055005b34610501576000366003190112610501576020604051308152f35b6000546001600160a01b0316330361323b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610a6357565b6051019081605111610a6357565b91908201809211610a6357565b156132c557565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561331d57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134265761340b82600080516020615c72833981519152946134219416966133ab8815156132be565b6001600160a01b03811660009081526008602052604090206133f0908590546133d682821015613316565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561355357821693841561350357806134f27f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946134db6134219560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016135dc5750505050565b8084106135f7576135ee930391613479565b38808080611606565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561364357565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107739391613697936137ef565b9190916136c4565b634e487b7160e01b600052602160045260246000fd5b600511156136bf57565b61369f565b6136cd816136b5565b806136d55750565b6136de816136b5565b6001810361372a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b613733816136b5565b600281036137805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061378c6003926136b5565b1461379357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161385b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108ec5781516001600160a01b03811615613855579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613958575b156138c2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261395281610d37565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613899565b613989613867565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610d325760405251902090565b3d156139f3573d906139d982611243565b916139e76040519384610d6d565b82523d6000602084013e565b606090565b156139ff57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156105015701602081359101916001600160401b03821161050157813603831361050157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611cc9610773938035613aa0816108f5565b6001600160a01b03168452602081810135908501526040810190613a39565b9061077390823581526020830135613ad6816104f5565b61ffff80911660208301526040840135613aef816104f5565b1660408201526060830135613b03816108f5565b6001600160a01b0316606082015260c080613b53613b38613b276080880188613a39565b60e0608088015260e0870191613a6a565b613b4560a0880188613a39565b9086830360a0880152613a6a565b94013591613b60836108f5565b6001600160a01b03909216910152565b60609081813591613b80836108f5565b6001600160a01b039283168552826020820135613b9c816108f5565b166020860152826040820135613bb1816108f5565b1660408601520135613bc2816108f5565b16910152565b939490929596613c4d929897613c3d613c32613c1f60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613a8b565b6023198d8203810160a48f015299613abf565b9360c48c0190613b70565b868a8403016101448b0152613a6a565b92868403016101648701528180865194858152019501936000915b848310613c9057505050505050906119d081613c8c9303601f198101835282610d6d565b5050565b909192939495846101a06001928951613cab82825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613c68565b35906001600160801b038216820361050157565b60808091613d7881610b41565b151584526020810135613d8a816108f5565b6001600160a01b031660208501526000196001831b0180613dad60408401613d57565b166040860152613dbf60608301613d57565b1660608501520135910152565b60408091613dd981610b41565b151584526020810135613deb816108f5565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613e1e575050505090565b9091929380613e38600192613e3288610b41565b15159052565b613e4e613e46848801610b41565b151582850152565b613e666040613e5e818901610b41565b151590830152565b613e806060613e76818901610506565b61ffff1690830152565b613e9f6080613e90818901610920565b6001600160a01b031690830152565b613eaf60a0613e5e818901610b41565b613ebf60c0613e90818901610920565b613ecf60e0613e90818901610920565b61010080870135908201526101208087013590820152613eff610140613ef6818901610dbe565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613e10565b9060a0613f7b61077393613f3981610b41565b1515845260208101356020850152613f5360408201610b41565b1515604085015261ffff6060820135613f6b816104f5565b1660608501526080810190613a39565b9190928160808201520191613a6a565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613fda82610b41565b151560a4890152602082013560c4890152604082013560e48901526060820135614003816108f5565b1661010488015261401660808201610920565b6001600160a01b031661012488015261403160a08201610b41565b151561014488015260c0810135610164880152614055610184880160e08301613d6b565b6140689061022488019061018001613dcc565b61028486016102c090526102e486019061408192613e00565b916023199283868203016102a487015261409a91613f26565b91848303016102c48501526140ae92613a6a565b03601f19810182526140c09082610d6d565b613c8c9061440c565b9035609e1982360301811215610501570190565b90610773916140ef82613e3283610b41565b6020810135602083015261411161410860408301610b41565b15156040840152565b6060810135606083015261413361412a60808301610b41565b15156080840152565b60a081013560a083015261414d60c0830160c08301613dcc565b61415e610120808401908301613dcc565b614181610180614170818401846140c9565b906101c08091860152840190613f26565b916141926101a092838101906140c9565b91818403910152613f26565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a48301529096879695909390926141f991610164890191613a6a565b93818135614206816108f5565b1660c488015281602082013561421b816108f5565b1660e48801526040013561422e816108f5565b1661010486015260231992838682030161012487015261424d916140dd565b91848303016101448501526140ae92613e00565b6040809161ffff8135614273816104f5565b1684526020810135613deb816108f5565b60a0809161429181610b41565b1515845260208101356142a3816108f5565b600180841b03809116602086015261ffff60408301356142c2816104f5565b1660408601526060820135606086015260808201356142e0816108f5565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b90821580614373575b61434f57565b61372661435b83614583565b60405162461bcd60e51b815291829160048301610762565b506001614349565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600811156136bf57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec57600090614512575b61ffff91501690565b6020823d8211614546575b8161452a60209383610d6d565b81010312610853575061ffff9051614541816104f5565b614509565b3d915061451d565b9092919261455b81611243565b916145696040519384610d6d565b82948284528282011161050157602061051193019061071a565b60448151106145d457600481015181019060208160248401930312610501576024810151906001600160401b038211610501570190806043830112156105015760248201516107739260440161454e565b506040516145e181610d52565b600a8152695553444f3a206461746160b01b602082015290565b1561460257565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b6001600160a01b0381169190821561469957600a5490828201809211610a635760009261468a602092600080516020615c7283398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156147b2576001600160a01b0381166000908152600860205260409020548381106147625783600080516020615c728339815191529261474460009661342194039160018060a01b03166000526008602052604060002090565b5561475281600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610a6357565b605019810191908211610a6357565b1561482657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610501578051906001600160401b03821161050157019080601f830112156105015781516107739260200161454e565b60409061ffff61077395931681528160208201520191613a6a565b90601f81116148d957505050565b600091825260208220906020601f850160051c83019410614915575b601f0160051c01915b82811061490a57505050565b8181556001016148fe565b90925082906148f5565b9290916149835a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061497d8261298061495c60a483018a61073d565b6001600160401b03881660648401528281036023190160848401528861073d565b30615c06565b939015614992575b5050505050565b61499b946149a5565b388080808061498b565b9193614a427fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614a50939561ffff81516020830120961695866000526005602052614a098361135160208b6040600020826040519483868095519384920161071a565b556001600160401b03614a2e604051988998895260a060208a015260a089019061073d565b92166040870152858203606087015261073d565b90838203608085015261073d565b0390a1565b90604051604081018181106001600160401b03821117610d325760405280925460ff81169060088210156136bf5790825260d81b6001600160e01b03191660209190910152565b91610773959361ffff614ad3926001600160401b039460018060a01b0316865216602085015260a0604085015260a084019061073d565b93166060820152608081840391015261073d565b929190614af383615bb9565b614b11614b0a82600052601c602052604060002090565b5460ff1690565b614b1a816144b2565b15614c735793614b3f614b3a61051196600052601c602052604060002090565b614a55565b8051614b4a816144b2565b60208201516001600160e01b03191691805190614b66826144b2565b614b6f826144b2565b600091600503614bbe575050601854614bb990614b9c906001600160a01b03165b6001600160a01b031690565b925b61298088888888604051988996602088015260248701614a9c565b614ce8565b60038151614bcb816144b2565b614bd4816144b2565b03614bfa575050601654614bb990614bf4906001600160a01b0316614b90565b92614b9e565b60078151614c07816144b2565b614c10816144b2565b03614c35575050601a54614bb990614c30906001600160a01b0316614b90565b614bf4565b60019051614c42816144b2565b614c4b816144b2565b03614c6a5750601b54614bb990614c30906001600160a01b0316614b90565b614bb990614bf4565b50614c86614c8084615b5e565b60ff1690565b80614c975750505061051191615281565b600103614ca757610511936153d8565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b949293919460088110156136bf576000908152601260205260409020546001600160a01b0316801561437b57816000929160208493519201905af492614d2c6139c8565b93158080614d50575b614d4457614992575050505050565b61372661435b86614583565b506000614d35565b6020919283604051948593843782019081520301902090565b15614d7857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91614df39060609461ffff6001600160401b039499989799168552608060208601526080850191613a6a565b951660408201520152565b903590601e198136030182121561050157018035906001600160401b0382116105015760200191813603831361050157565b949195989790611832614e59604099614e51614e5f97614e7c99369161125e565b94369161125e565b9761568c565b928451968794859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108ec576000908193614ebf57509190565b90506105a191925060403d8111610c4b57610c3c8183610d6d565b93969491614f089061077399979461ffff6001600160401b039416875260c0602088015260c0870191613a6a565b961660408401526060830152608082015260a0818503910152613a6a565b91969792989594939094303303614fcd57614f42908530615956565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b15610501576000988995614fb0936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614eda565b0393f180156108ec57614fc05750565b8061271061051192610d1f565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610501576020825192015190565b9192610773959361ffff6150579316845260018060a01b0316602084015260a0604084015260a083019061073d565b9215156060820152608081840391015261073d565b1561507357565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b926150d961077397959361ffff6150e79416865260c0602087015260c086019061073d565b90848203604086015261073d565b6001600160a01b0391821660608401529316608082015280830360a09091015261073d565b946151359193929561ffff8116600052600160205261513c6040600020604051948580926115d9565b0384610d6d565b8251156151b45761514e855182615212565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b15610501576000966151a391604051998a988997889662c5803160e81b8852600488016150b4565b03925af180156108ec57614fc05750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615277575b1161523357565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061522c565b9060ff61528d82615b5e565b16158061533f575b61529e906157a3565b6152b06152aa82615b0e565b91615ba9565b6001600160a01b039081831615615335575b61ffff7fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf9261531d6020936001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615713565b946153288682614636565b60405195865216941692a3565b61dead92506152c2565b508051602914615295565b98979692936001600160401b0361537c60e0989461ffff6153a89995168d5260208d61010091829101528d019061073d565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261073d565b930152565b6001600160401b036153cd6040939695949660608452606084019061073d565b951660208201520152565b90916153e384615857565b909161540d614b0a8761280d6154078b61ffff166000526007602052604060002090565b8c6112ee565b916154436001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615713565b9288888b831561553f575b505050853b156154f45794615495969461497d948a94612980948d996000146154ed5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a0161534a565b90156154e25750906154dd61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884969751910120906040519485941696846153ad565b0390a2565b9261051194926149a5565b1692615476565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614a50915050565b9061280d6155749261556e89615559615581979b30614636565b9961ffff166000526007602052604060002090565b906112ee565b805460ff19166001179055565b88888b61544e565b60065460ff16156155d65760228251106118395761ffff6022610511930151911660005260026020526155c9604060002060008052602052604060002090565b54906118008215156155de565b50516118ab57565b156155e557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561563157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561570e57046001600160401b03908181116156c9571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615676565b81810292918115918404141715610a6357565b7f0000000000000000000000000000000000000000000000000000000000000000801561570e57810690818103908111610a635791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d325760405290565b156157aa57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261077394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615847815180926020868601910161071a565b8101036051810184520182610d6d565b9061586f600160ff61586885615b5e565b16146157a3565b61587882615b0e565b9061588283615ba9565b9060498451106158f35760498401519360518151106158b7576158b46051820151916158ae8151614810565b90615a8a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107739082906001600160a01b03811633146146de576159518233836135a4565b6146de565b6107739183916001600160a01b038116308114159081615982575b501561337157610ac18333836135a4565b905033141538615971565b1561599457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156159d157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615a1e82615a1781613295565b101561598d565b615a2b82825110156159ca565b81615a43575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615a775750508252601f01601f191660405290565b9092835181526020809101930190615a5f565b615a9782615a1781613295565b615aac8151615aa5846132a3565b11156159ca565b81615ac4575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615afb5750508252601f01601f191660405290565b9092835181526020809101930190615ae3565b6021815110615b2157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615b6e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106158b7576029015190565b6020815110615bc9576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615c1a87610d37565b6096875282602088019560a036883760208451940192f1903d9060968211615c48575b6000908286523e9190565b60969150615c3d56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f8feeeb8e841d40e147a6be7966cfb580d6048a6df1e487071e5b48e8e2e1a164736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104f057806301ffc9a7146104eb57806306fdde03146104e657806307e0db17146104e1578063095ea7b3146104dc5780630df37483146104d757806310ddb137146104d2578063147b6228146104cd57806318160ddd1461044157806323b872dd146104c8578063313ce567146104c35780633644e515146104be578063365260b4146104b957806339509351146104b45780633bdd4a43146104af5780633d8b38f6146104aa5780633f1f4fa4146104a557806340c10f19146104a057806342d65a8d1461049b578063437be6221461049657806344770515146104915780634c42899a146104915780635128e83d1461048c5780635b8c41e6146104875780635c975abb1461048257806366ad5c8a1461047d578063695ef6bf1461047857806370a0823114610473578063715018a61461046e5780637533d7881461046957806376203b4814610464578063796fd43a1461045f5780637ecebe001461045a578063857749b0146104555780638cfd8f5c146104505780638da5cb5b1461044b5780639169d59e146104465780639358928b14610441578063950c8a741461043c578063952168c51461043757806395d89b41146104325780639bdb98121461042d5780639d554eac146104285780639dc29fac146104235780639f38369a1461041e578063a457c2d714610419578063a4c51df514610414578063a6c3d1651461040f578063a9059cbb1461040a578063b02f69a214610405578063b25ea8fb14610400578063b28de4c5146103fb578063b353aaa7146103f6578063ba03a8d7146103f1578063baf3292d146103ec578063c056a8de146103e7578063c4461834146103e2578063cbed8b9c146103dd578063ce8849ed146103d8578063d1deba1f146103d3578063d505accf146103ce578063dbd01de1146103c9578063dd62ed3e146103c4578063de406577146103bf578063df2a5b3b146103ba578063e6a20ae6146103b5578063e78eb946146103b0578063eab45d9c146103ab578063eaffd49a146103a6578063eb8d72b7146103a1578063ec6d062b1461039c578063ed629c5c14610397578063f00c298d14610392578063f2fde38b1461038d578063f5ecbdbc14610388578063f8974de014610383578063fa74f0b51461037e5763fc0c546a0361000e5761320c565b6131bd565b613144565b613070565b612fa9565b612f26565b612f03565b612eb9565b612d6f565b612ce6565b612c88565b612be3565b612bb8565b612acb565b612a86565b612a2c565b612a03565b6128a2565b61273f565b612716565b61262a565b61260d565b6124cd565b612439565b6123ef565b6123aa565b612381565b61230a565b612263565b612219565b612096565b612003565b611f45565b611ea2565b611e36565b611ddc565b611d91565b611ced565b611bca565b611b70565b610a68565b611acb565b611aa2565b611a50565b611a12565b6119d5565b6118ff565b6116e1565b61168a565b611544565b611507565b611424565b61139e565b61137b565b611314565b6111fc565b6111e0565b611167565b6110e6565b611073565b61103a565b610fde565b610f08565b610c52565b610b4e565b610ae2565b610ac6565b610a86565b610a29565b61099f565b610960565b61092b565b610856565b610776565b6106b9565b6105a5565b61ffff81160361050157565b600080fd5b3590610511826104f5565b565b9181601f84011215610501578235916001600160401b038311610501576020838186019501011161050157565b90608060031983011261050157600435610559816104f5565b916001600160401b0390602435828111610501578161057a91600401610513565b9390939260443581811681036105015792606435918211610501576105a191600401610513565b9091565b34610501576105b336610540565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106745761063961064192610019976106326106186106138a61ffff166000526001602052604060002090565b61166f565b805190818414918261066a575b5081610647575b5061481f565b369161125e565b92369161125e565b9261491f565b905061065436848661125e565b602081519101209060208151910120143861062c565b1515915038610625565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105015760203660031901126105015760043563ffffffff60e01b811680910361050157602090631f7ecdf760e01b81149081156106fe575b506040519015158152f35b6301ffc9a760e01b149050386106f3565b600091031261050157565b60005b83811061072d5750506000910152565b818101518382015260200161071d565b906020916107568151809281855285808601910161071a565b601f01601f1916010190565b90602061077392818152019061073d565b90565b34610501576000806003193601126108535760405181600b546107988161159f565b8084529060019081811690811561082b57506001146107d2575b6107ce846107c281880382610d6d565b60405191829182610762565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061081857505050816107ce936107c292820101936107b2565b80548585018701529285019281016107fc565b6107ce96506107c29450602092508593915060ff191682840152151560051b820101936107b2565b80fd5b34610501576000602036600319011261085357600435610875816104f5565b61087d613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108ec576108e0575080f35b6108e990610d1f565b80f35b6137e3565b5080fd5b6001600160a01b0381160361050157565b60043590610511826108f5565b60643590610511826108f5565b3590610511826108f5565b346105015760403660031901126105015761095560043561094b816108f5565b6024359033613479565b602060405160018152f35b346105015760403660031901126105015761ffff600435610980816104f5565b610988613227565b166000526003602052602435604060002055600080f35b346105015760006020366003190112610853576004356109be816104f5565b6109c6613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108ec576108e0575080f35b3461050157602036600319011261050157610a4f60018060a01b03601e541633146139f8565b601d546004358101809111610a6357601d55005b61327f565b34610501576000366003190112610501576020600a54604051908152f35b3461050157606036600319011261050157610955600435610aa6816108f5565b602435610ab2816108f5565b60443591610ac18333836135a4565b613371565b3461050157600036600319011261050157602060405160128152f35b34610501576000366003190112610501576020610afd613867565b604051908152f35b60643590811515820361050157565b60243590811515820361050157565b60a43590811515820361050157565b60043590811515820361050157565b3590811515820361050157565b346105015760a036600319011261050157600435610b6b816104f5565b610b73610b05565b90608435906001600160401b03821161050157610b996106326040933690600401610513565b90610bd0610bb3610bab60443561568c565b60243561575d565b928451958694859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108ec576000908192610c21575b50604080519182526020820192909252f35b9050610c44915060403d8111610c4b575b610c3c8183610d6d565b810190615012565b9038610c0f565b503d610c32565b3461050157604036600319011261050157600435610c6f816108f5565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610a63576109559133613479565b60609060c31901126105015760c490565b60609060a31901126105015760a490565b908160609103126105015790565b908160e09103126105015790565b60809060a31901126105015760a490565b608090608319011261050157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d3257604052565b610d09565b60c081019081106001600160401b03821117610d3257604052565b604081019081106001600160401b03821117610d3257604052565b90601f801991011681019081106001600160401b03821117610d3257604052565b604051906101a082018281106001600160401b03821117610d3257604052565b6084359060ff8216820361050157565b359060ff8216820361050157565b81601f82011215610501578035906001600160401b038211610d32576040805193602091610dff838660051b0187610d6d565b84865282860191836101a080970286010194818611610501578401925b858410610e2d575050505050505090565b868483031261050157848791610e41610d8e565b610e4a87610b41565b8152610e57838801610b41565b83820152610e66868801610b41565b868201526060610e77818901610506565b908201526080610e88818901610920565b9082015260a0610e99818901610b41565b9082015260c0610eaa818901610920565b9082015260e0610ebb818901610920565b9082015261010080880135908201526101208088013590820152610140610ee3818901610dbe565b9082015261016080880135908201526101808088013590820152815201930192610e1c565b61016036600319011261050157610f1d610906565b6001600160401b039060643582811161050157610f3e903690600401610ccb565b60843583811161050157610f56903690600401610cd9565b90610f6036610ce7565b6101243585811161050157610f79903690600401610513565b9390926101443596871161050157610f98610019973690600401610dcc565b956044359060243590613bc8565b90604060031983011261050157600435610fbf816104f5565b91602435906001600160401b038211610501576105a191600401610513565b3461050157602061ffff61102b610ff436610fa6565b939091166000526001845261101661101d6040600020604051928380926115d9565b0382610d6d565b84815191012092369161125e565b82815191012014604051908152f35b346105015760203660031901126105015761ffff60043561105a816104f5565b1660005260036020526020604060002054604051908152f35b3461050157604036600319011261050157610019600435611093816108f5565b6110a260ff60115416156145fb565b6110aa6144bc565b600052600f6020526110dd60ff6110d660406000203360018060a01b0316600052602052604060002090565b54166139f8565b60243590614636565b34610501576110f436610fa6565b91906110fe613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561050157604051928380926342d65a8d60e01b82528161115560009889978894600485016148b0565b03925af180156108ec576108e0575080f35b3461050157602036600319011261050157600435611184816108f5565b6001600160a01b031680156111a957600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b3461050157600036600319011261050157602060405160008152f35b3461050157602036600319011261050157600435611219816108f5565b611221613227565b601e80546001600160a01b0319166001600160a01b0392909216919091179055005b6001600160401b038111610d3257601f01601f191660200190565b92919261126a82611243565b916112786040519384610d6d565b829481845281830111610501578281602093846000960137010152565b6060600319820112610501576004356112ad816104f5565b916024356001600160401b03928382116105015780602383011215610501578160246112de9360040135910161125e565b9160443590811681036105015790565b60209061130892826040519483868095519384920161071a565b82019081520301902090565b3461050157602061137261ffff6113518361132e36611295565b94909116600052600582526040600020826040519483868095519384920161071a565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b3461050157600036600319011261050157602060ff601154166040519015158152f35b34610501576113ac36610540565b91929493903033036113d0576106396113ca9261001997369161125e565b92614ae7565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126105015760043561143c816108f5565b602435611448816104f5565b604435916084356001600160401b03811161050157602061ffff61147f600080516020615c52833981519152933690600401610ccb565b936114f2853561148e816108f5565b6114ac61063286890135986114a28a6108f5565b6040810190614dfe565b6114b6818a615589565b6114cb6114c4606435615726565b5085615930565b976114d789151561506c565b6114e96114e38a61568c565b8c61575d565b9234938b61510c565b6040519485526001600160a01b0316941692a4005b3461050157602036600319011261050157600435611524816108f5565b60018060a01b031660005260086020526020604060002054604051908152f35b34610501576000806003193601126108535761155e613227565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156115cf575b60208310146115b957565b634e487b7160e01b600052602260045260246000fd5b91607f16916115ae565b90600092918054916115ea8361159f565b91828252600193848116908160001461164c575060011461160c575b50505050565b90919394506000526020928360002092846000945b838610611638575050505001019038808080611606565b805485870183015294019385908201611621565b9294505050602093945060ff191683830152151560051b01019038808080611606565b9061051161168392604051938480926115d9565b0383610d6d565b346105015760203660031901126105015761ffff6004356116aa816104f5565b1660005260016020526107ce6110166116cd6040600020604051928380926115d9565b60405191829160208352602083019061073d565b60e0366003190112610501576004356116f9816108f5565b602435611705816104f5565b604435916001600160401b03906084358281116105015761172a903690600401610513565b91909260a43591818316918284036105015760c43590811161050157611754903690600401610ccb565b9261178b843595611764876108f5565b6117836117796020880135976114a2896108f5565b999092369161125e565b97369161125e565b9460ff6006541660001461187e57602286511061183957856020956114e96114f2946118078c6117f461ffff9a8b6022600080516020615c528339815191529f0151931660005260028d526117ee60406000206001600052602052604060002090565b546132b1565b906118008215156155de565b101561562a565b61181c611815606435615726565b5088615930565b9a6118288c151561506c565b8d6118328d61568c565b90336157ea565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516118ab57600080516020615c528339815191529460209461ffff946114e96114f294611807565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b61010080600319360112610501576024359061191a826108f5565b6001600160401b036044358181116105015761193a903690600401610cd9565b9260643591821161050157610019936119c26119b76119606119d0953690600401610ccb565b6119a561196c36610cf8565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b031660448901526064880152610124870190613abf565b85810360231901608487015290613a8b565b9160a4840190613b70565b03601f198101835282610d6d565b6142ed565b34610501576020366003190112610501576004356119f2816108f5565b60018060a01b031660005260136020526020604060002054604051908152f35b3461050157600036600319011261050157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610501576040366003190112610501576020611372600435611a72816104f5565b61ffff60243591611a82836104f5565b166000526002835260406000209061ffff16600052602052604060002090565b34610501576000366003190112610501576000546040516001600160a01b039091168152602090f35b3461050157604036600319011261050157600435611ae8816108f5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611b13610b14565b92611b1c613227565b611b246144bc565b60009081526010835260408082206001600160a01b03841683526020529020611b5b9085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610501576000366003190112610501576004546040516001600160a01b039091168152602090f35b9181601f84011215610501578235916001600160401b038311610501576020808501946101a0850201011161050157565b60a036600319011261050157600435611be2816104f5565b6001600160401b039060243582811161050157611c03903690600401610513565b909160643584811161050157611c1d903690600401610ccb565b93608435908111610501576100199461ffff94611ce894611cd9611c78611c4b6119c2963690600401611b99565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613a6a565b60443560648801526060611cc960231996878a85030160848b01528035611c9e816108f5565b6001600160a01b0390811685526020820135611cb9816108f5565b1660208501526040810190613a39565b9190928160408201520191613a6a565b928584030160a4860152613e00565b61445f565b34610501576000806003193601126108535760405181600c54611d0f8161159f565b8084529060019081811690811561082b5750600114611d38576107ce846107c281880382610d6d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611d7e57505050816107ce936107c292820101936107b2565b8054858501870152928501928101611d62565b3461050157602060ff611dd061ffff61135184611dad36611295565b94909116600052600782526040600020826040519483868095519384920161071a565b54166040519015158152f35b346105015760008060031936011261085357611df6613227565b601d5480611e02575080f35b30825260086020526040822054818110611e315750805b808203918211610a63576108e991601d553333613371565b611e19565b3461050157604036600319011261050157610019600435611e56816108f5565b611e6560ff60115416156145fb565b611e6d6144bc565b6000526010602052611e9960ff6110d660406000203360018060a01b0316600052602052604060002090565b602435906146de565b346105015760203660031901126105015761ffff600435611ec2816104f5565b166000526001602052611016611ee26040600020604051928380926115d9565b805115611f00576107c281611efa6107ce9351614801565b90615a0a565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461050157604036600319011261050157600435611f62816108f5565b60243590336000526009602052611f8f8160406000209060018060a01b0316600052602052604060002090565b5491808310611fb057611fa492039033613479565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105015760e036600319011261050157600435612020816104f5565b6001600160401b039060643582811161050157612041903690600401610513565b608492919235848116810361050157612058610b23565b9160c43595861161050157612074612084963690600401610513565b9590946044359060243590614e30565b60408051928352602083019190915290f35b34610501576120a436610fa6565b906120ad613227565b604051926020928083858701376120d96034868381013060601b88820152036014810188520186610d6d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d32576121138361210d865461159f565b866148cb565b80601f84116001146121835750918080926121729695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612178575b50501b916000199060031b1c19161790555b604051938493846148b0565b0390a180f35b015192503880612154565b91939498601f19841661219b87600052602060002090565b938a905b828210612202575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185612172989694106121e9575b505050811b019055612166565b015160001960f88460031b161c191690553880806121dc565b80888697829497870151815501960194019061219f565b3461050157604036600319011261050157610955600435612239816108f5565b6024359033613371565b6101e090608319011261050157608490565b908160a09103126105015790565b6102c03660031901126105015760043561227c816108f5565b602435612288816108f5565b60443591612295836104f5565b61229d610913565b926122a736612243565b6001600160401b039461026435868111610501576122c9903690600401611b99565b92909161028435888111610501576122e5903690600401612255565b946102a43598891161050157612302610019993690600401610513565b989097613f8b565b3461050157604036600319011261050157602435612327816108f5565b61232f613227565b60008080808094600435905af16123446139c8565b501561234d5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b3461050157600036600319011261050157601e546040516001600160a01b039091168152602090f35b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157604036600319011261050157602060ff611dd0602435612413816108f5565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b34610501576020366003190112610501577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612479816108f5565b612481613227565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261050157600490565b60c0906101231901126105015761012490565b61022080600319360112610501576124e4366124a9565b6124ed36610ca9565b916124f7366124ba565b906001600160401b03906101e4358281116105015761251a903690600401611b99565b909161020493843590811161050157612537903690600401610513565b94909560405198899863602b546f60e11b60208b01528035612558816108f5565b6001600160a01b0390811660248c0152806020830135612577816108f5565b1660448c0152604082013560648c0152606082013560848c0152608082013561259f816108f5565b1660a48b015260a0013560c48a015260e489016125bb91614261565b61014488016125c991614284565b8601526102448501906125db92613e00565b90602319848303016102248501526125f292613a6a565b03601f19810182526126049082610d6d565b610019906143b9565b346105015760003660031901126105015760206040516127108152f35b3461050157608036600319011261050157600435612647816104f5565b602435612653816104f5565b6064356001600160401b03811161050157612672903690600401610513565b909261267c613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561050157600080946126f3604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613a6a565b03925af180156108ec5761270357005b8061271061001992610d1f565b8061070f565b3461050157600036600319011261050157600e546040516001600160a01b039091168152602090f35b61274836610540565b9161ffff8694929616600052600560205261278f81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156128515761284084836128397fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128258461280d8e8a8f61284c9f908f6127f3906127e66128079436908d61125e565b6020815191012014614d71565b61ffff166000526005602052604060002090565b91614d58565b906001600160401b0316600052602052604060002090565b5561283136878d61125e565b93369161125e565b9188614ae7565b60405195869586614dc7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346105015760e0366003190112610501576004356128bf816108f5565b6024356128cb816108f5565b60443590606435926128db610dae565b938042116129be576129a66129b9916129806100199761298e6129198760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610d6d565b6129a160c4359360a43593519020613981565b613688565b6001600160a01b0383811691161461363c565b613479565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050157600036600319011261050157600d546040516001600160a01b039091168152602090f35b34610501576040366003190112610501576020611372600435612a4e816108f5565b60243590612a5b826108f5565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157606036600319011261050157600435612ae8816104f5565b602435612af4816104f5565b60443591612b00613227565b8215612b7b5761284c7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612b558560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461050157600036600319011261050157602060405160018152f35b90816101c09103126105015790565b61014036600319011261050157600435612bfc816108f5565b602435612c08816108f5565b60443591612c15836104f5565b612c1d610913565b6001600160401b03939060843585811161050157612c3f903690600401610513565b90612c4936610cba565b926101043588811161050157612c63903690600401612bd4565b946101243598891161050157612c80610019993690600401611b99565b98909761419e565b34610501576020366003190112610501577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612cc4610b32565b612ccc613227565b151560ff196006541660ff821617600655604051908152a1005b346105015761010036600319011261050157600435612d04816104f5565b6001600160401b039060243582811161050157612d25903690600401610513565b919060443590848216820361050157608435612d40816108f5565b60c43595861161050157612d5b610019963690600401610513565b94909360e4359660a4359460643593614f26565b3461050157612d7d36610fa6565b9190612d87613227565b60009161ffff81168352600160209080825260408520916001600160401b038711610d3257612dc087612dba855461159f565b856148cb565b8590601f8811600114612e275750918680879893612172957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612e1c575b501b906000198460031b1c1916179055604051938493846148b0565b880135925038612e00565b90601f198816612e3c85600052602060002090565b9288905b828210612ea2575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899612172969410612e88575b505082811b019055612166565b870135600019600386901b60f8161c191690553880612e7b565b808685968294968c01358155019501930190612e40565b3461050157604036600319011261050157602060ff611dd0602435612edd816108f5565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b3461050157600036600319011261050157602060ff600654166040519015158152f35b3461050157604036600319011261050157600435612f43816108f5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612f6e610b14565b92612f77613227565b612f7f6144bc565b6000908152600f835260408082206001600160a01b03841683526020529020611b5b908590611b4a565b3461050157602036600319011261050157600435612fc6816108f5565b612fce613227565b6001600160a01b03908116801561301c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346105015760803660031901126105015760043561308d816104f5565b6024359061309a826104f5565b6130a56044356108f5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec576107ce91600091613123575b5060405191829182610762565b61313e913d8091833e6131368183610d6d565b81019061487a565b38613116565b346105015760203660031901126105015761315d610b32565b61317260018060a01b03600e541633146139f8565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b34610501576020366003190112610501576004356131da816108f5565b6131e2613227565b6001600160a01b03166131f68115156139f8565b600e80546001600160a01b031916919091179055005b34610501576000366003190112610501576020604051308152f35b6000546001600160a01b0316330361323b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610a6357565b6051019081605111610a6357565b91908201809211610a6357565b156132c557565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561331d57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134265761340b82600080516020615c72833981519152946134219416966133ab8815156132be565b6001600160a01b03811660009081526008602052604090206133f0908590546133d682821015613316565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561355357821693841561350357806134f27f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946134db6134219560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016135dc5750505050565b8084106135f7576135ee930391613479565b38808080611606565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561364357565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107739391613697936137ef565b9190916136c4565b634e487b7160e01b600052602160045260246000fd5b600511156136bf57565b61369f565b6136cd816136b5565b806136d55750565b6136de816136b5565b6001810361372a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b613733816136b5565b600281036137805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061378c6003926136b5565b1461379357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161385b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108ec5781516001600160a01b03811615613855579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613958575b156138c2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261395281610d37565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613899565b613989613867565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610d325760405251902090565b3d156139f3573d906139d982611243565b916139e76040519384610d6d565b82523d6000602084013e565b606090565b156139ff57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156105015701602081359101916001600160401b03821161050157813603831361050157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611cc9610773938035613aa0816108f5565b6001600160a01b03168452602081810135908501526040810190613a39565b9061077390823581526020830135613ad6816104f5565b61ffff80911660208301526040840135613aef816104f5565b1660408201526060830135613b03816108f5565b6001600160a01b0316606082015260c080613b53613b38613b276080880188613a39565b60e0608088015260e0870191613a6a565b613b4560a0880188613a39565b9086830360a0880152613a6a565b94013591613b60836108f5565b6001600160a01b03909216910152565b60609081813591613b80836108f5565b6001600160a01b039283168552826020820135613b9c816108f5565b166020860152826040820135613bb1816108f5565b1660408601520135613bc2816108f5565b16910152565b939490929596613c4d929897613c3d613c32613c1f60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613a8b565b6023198d8203810160a48f015299613abf565b9360c48c0190613b70565b868a8403016101448b0152613a6a565b92868403016101648701528180865194858152019501936000915b848310613c9057505050505050906119d081613c8c9303601f198101835282610d6d565b5050565b909192939495846101a06001928951613cab82825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613c68565b35906001600160801b038216820361050157565b60808091613d7881610b41565b151584526020810135613d8a816108f5565b6001600160a01b031660208501526000196001831b0180613dad60408401613d57565b166040860152613dbf60608301613d57565b1660608501520135910152565b60408091613dd981610b41565b151584526020810135613deb816108f5565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613e1e575050505090565b9091929380613e38600192613e3288610b41565b15159052565b613e4e613e46848801610b41565b151582850152565b613e666040613e5e818901610b41565b151590830152565b613e806060613e76818901610506565b61ffff1690830152565b613e9f6080613e90818901610920565b6001600160a01b031690830152565b613eaf60a0613e5e818901610b41565b613ebf60c0613e90818901610920565b613ecf60e0613e90818901610920565b61010080870135908201526101208087013590820152613eff610140613ef6818901610dbe565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613e10565b9060a0613f7b61077393613f3981610b41565b1515845260208101356020850152613f5360408201610b41565b1515604085015261ffff6060820135613f6b816104f5565b1660608501526080810190613a39565b9190928160808201520191613a6a565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613fda82610b41565b151560a4890152602082013560c4890152604082013560e48901526060820135614003816108f5565b1661010488015261401660808201610920565b6001600160a01b031661012488015261403160a08201610b41565b151561014488015260c0810135610164880152614055610184880160e08301613d6b565b6140689061022488019061018001613dcc565b61028486016102c090526102e486019061408192613e00565b916023199283868203016102a487015261409a91613f26565b91848303016102c48501526140ae92613a6a565b03601f19810182526140c09082610d6d565b613c8c9061440c565b9035609e1982360301811215610501570190565b90610773916140ef82613e3283610b41565b6020810135602083015261411161410860408301610b41565b15156040840152565b6060810135606083015261413361412a60808301610b41565b15156080840152565b60a081013560a083015261414d60c0830160c08301613dcc565b61415e610120808401908301613dcc565b614181610180614170818401846140c9565b906101c08091860152840190613f26565b916141926101a092838101906140c9565b91818403910152613f26565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a48301529096879695909390926141f991610164890191613a6a565b93818135614206816108f5565b1660c488015281602082013561421b816108f5565b1660e48801526040013561422e816108f5565b1661010486015260231992838682030161012487015261424d916140dd565b91848303016101448501526140ae92613e00565b6040809161ffff8135614273816104f5565b1684526020810135613deb816108f5565b60a0809161429181610b41565b1515845260208101356142a3816108f5565b600180841b03809116602086015261ffff60408301356142c2816104f5565b1660408601526060820135606086015260808201356142e0816108f5565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b90821580614373575b61434f57565b61372661435b83614583565b60405162461bcd60e51b815291829160048301610762565b506001614349565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600811156136bf57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec57600090614512575b61ffff91501690565b6020823d8211614546575b8161452a60209383610d6d565b81010312610853575061ffff9051614541816104f5565b614509565b3d915061451d565b9092919261455b81611243565b916145696040519384610d6d565b82948284528282011161050157602061051193019061071a565b60448151106145d457600481015181019060208160248401930312610501576024810151906001600160401b038211610501570190806043830112156105015760248201516107739260440161454e565b506040516145e181610d52565b600a8152695553444f3a206461746160b01b602082015290565b1561460257565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b6001600160a01b0381169190821561469957600a5490828201809211610a635760009261468a602092600080516020615c7283398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156147b2576001600160a01b0381166000908152600860205260409020548381106147625783600080516020615c728339815191529261474460009661342194039160018060a01b03166000526008602052604060002090565b5561475281600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610a6357565b605019810191908211610a6357565b1561482657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610501578051906001600160401b03821161050157019080601f830112156105015781516107739260200161454e565b60409061ffff61077395931681528160208201520191613a6a565b90601f81116148d957505050565b600091825260208220906020601f850160051c83019410614915575b601f0160051c01915b82811061490a57505050565b8181556001016148fe565b90925082906148f5565b9290916149835a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061497d8261298061495c60a483018a61073d565b6001600160401b03881660648401528281036023190160848401528861073d565b30615c06565b939015614992575b5050505050565b61499b946149a5565b388080808061498b565b9193614a427fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614a50939561ffff81516020830120961695866000526005602052614a098361135160208b6040600020826040519483868095519384920161071a565b556001600160401b03614a2e604051988998895260a060208a015260a089019061073d565b92166040870152858203606087015261073d565b90838203608085015261073d565b0390a1565b90604051604081018181106001600160401b03821117610d325760405280925460ff81169060088210156136bf5790825260d81b6001600160e01b03191660209190910152565b91610773959361ffff614ad3926001600160401b039460018060a01b0316865216602085015260a0604085015260a084019061073d565b93166060820152608081840391015261073d565b929190614af383615bb9565b614b11614b0a82600052601c602052604060002090565b5460ff1690565b614b1a816144b2565b15614c735793614b3f614b3a61051196600052601c602052604060002090565b614a55565b8051614b4a816144b2565b60208201516001600160e01b03191691805190614b66826144b2565b614b6f826144b2565b600091600503614bbe575050601854614bb990614b9c906001600160a01b03165b6001600160a01b031690565b925b61298088888888604051988996602088015260248701614a9c565b614ce8565b60038151614bcb816144b2565b614bd4816144b2565b03614bfa575050601654614bb990614bf4906001600160a01b0316614b90565b92614b9e565b60078151614c07816144b2565b614c10816144b2565b03614c35575050601a54614bb990614c30906001600160a01b0316614b90565b614bf4565b60019051614c42816144b2565b614c4b816144b2565b03614c6a5750601b54614bb990614c30906001600160a01b0316614b90565b614bb990614bf4565b50614c86614c8084615b5e565b60ff1690565b80614c975750505061051191615281565b600103614ca757610511936153d8565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b949293919460088110156136bf576000908152601260205260409020546001600160a01b0316801561437b57816000929160208493519201905af492614d2c6139c8565b93158080614d50575b614d4457614992575050505050565b61372661435b86614583565b506000614d35565b6020919283604051948593843782019081520301902090565b15614d7857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91614df39060609461ffff6001600160401b039499989799168552608060208601526080850191613a6a565b951660408201520152565b903590601e198136030182121561050157018035906001600160401b0382116105015760200191813603831361050157565b949195989790611832614e59604099614e51614e5f97614e7c99369161125e565b94369161125e565b9761568c565b928451968794859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108ec576000908193614ebf57509190565b90506105a191925060403d8111610c4b57610c3c8183610d6d565b93969491614f089061077399979461ffff6001600160401b039416875260c0602088015260c0870191613a6a565b961660408401526060830152608082015260a0818503910152613a6a565b91969792989594939094303303614fcd57614f42908530615956565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b15610501576000988995614fb0936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614eda565b0393f180156108ec57614fc05750565b8061271061051192610d1f565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610501576020825192015190565b9192610773959361ffff6150579316845260018060a01b0316602084015260a0604084015260a083019061073d565b9215156060820152608081840391015261073d565b1561507357565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b926150d961077397959361ffff6150e79416865260c0602087015260c086019061073d565b90848203604086015261073d565b6001600160a01b0391821660608401529316608082015280830360a09091015261073d565b946151359193929561ffff8116600052600160205261513c6040600020604051948580926115d9565b0384610d6d565b8251156151b45761514e855182615212565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b15610501576000966151a391604051998a988997889662c5803160e81b8852600488016150b4565b03925af180156108ec57614fc05750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615277575b1161523357565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061522c565b9060ff61528d82615b5e565b16158061533f575b61529e906157a3565b6152b06152aa82615b0e565b91615ba9565b6001600160a01b039081831615615335575b61ffff7fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf9261531d6020936001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615713565b946153288682614636565b60405195865216941692a3565b61dead92506152c2565b508051602914615295565b98979692936001600160401b0361537c60e0989461ffff6153a89995168d5260208d61010091829101528d019061073d565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261073d565b930152565b6001600160401b036153cd6040939695949660608452606084019061073d565b951660208201520152565b90916153e384615857565b909161540d614b0a8761280d6154078b61ffff166000526007602052604060002090565b8c6112ee565b916154436001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615713565b9288888b831561553f575b505050853b156154f45794615495969461497d948a94612980948d996000146154ed5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a0161534a565b90156154e25750906154dd61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884969751910120906040519485941696846153ad565b0390a2565b9261051194926149a5565b1692615476565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614a50915050565b9061280d6155749261556e89615559615581979b30614636565b9961ffff166000526007602052604060002090565b906112ee565b805460ff19166001179055565b88888b61544e565b60065460ff16156155d65760228251106118395761ffff6022610511930151911660005260026020526155c9604060002060008052602052604060002090565b54906118008215156155de565b50516118ab57565b156155e557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561563157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561570e57046001600160401b03908181116156c9571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615676565b81810292918115918404141715610a6357565b7f0000000000000000000000000000000000000000000000000000000000000000801561570e57810690818103908111610a635791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d325760405290565b156157aa57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261077394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615847815180926020868601910161071a565b8101036051810184520182610d6d565b9061586f600160ff61586885615b5e565b16146157a3565b61587882615b0e565b9061588283615ba9565b9060498451106158f35760498401519360518151106158b7576158b46051820151916158ae8151614810565b90615a8a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107739082906001600160a01b03811633146146de576159518233836135a4565b6146de565b6107739183916001600160a01b038116308114159081615982575b501561337157610ac18333836135a4565b905033141538615971565b1561599457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156159d157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615a1e82615a1781613295565b101561598d565b615a2b82825110156159ca565b81615a43575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615a775750508252601f01601f191660405290565b9092835181526020809101930190615a5f565b615a9782615a1781613295565b615aac8151615aa5846132a3565b11156159ca565b81615ac4575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615afb5750508252601f01601f191660405290565b9092835181526020809101930190615ae3565b6021815110615b2157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615b6e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106158b7576029015190565b6020815110615bc9576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615c1a87610d37565b6096875282602088019560a036883760208451940192f1903d9060968211615c48575b6000908286523e9190565b60969150615c3d56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f8feeeb8e841d40e147a6be7966cfb580d6048a6df1e487071e5b48e8e2e1a164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/USDOCommon.json b/src/artifacts/tapioca-bar/USDOCommon.json index 709c2b02..7b224c2d 100644 --- a/src/artifacts/tapioca-bar/USDOCommon.json +++ b/src/artifacts/tapioca-bar/USDOCommon.json @@ -59,63 +59,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -890,19 +833,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1063,19 +993,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { diff --git a/src/artifacts/tapioca-bar/USDOFlashloanHelper.json b/src/artifacts/tapioca-bar/USDOFlashloanHelper.json new file mode 100644 index 00000000..912fbad4 --- /dev/null +++ b/src/artifacts/tapioca-bar/USDOFlashloanHelper.json @@ -0,0 +1,330 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "USDOFlashloanHelper", + "sourceName": "contracts/usd0/USDOFlashloanHelper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IUSDO", + "name": "_usdo", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_old", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_new", + "type": "uint256" + } + ], + "name": "FlashMintFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_old", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_new", + "type": "uint256" + } + ], + "name": "MaxFlashMintUpdated", + "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" + }, + { + "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": [], + "name": "claimOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "flashFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC3156FlashBorrower", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "flashLoan", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "flashMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxFlashLoan", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxFlashMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_val", + "type": "uint256" + } + ], + "name": "setFlashMintFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_val", + "type": "uint256" + } + ], + "name": "setMaxFlashMintable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + }, + { + "internalType": "bool", + "name": "direct", + "type": "bool" + }, + { + "internalType": "bool", + "name": "renounce", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "usdo", + "outputs": [ + { + "internalType": "contract IUSDO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a0346100ed57601f61109338819003918201601f19168301916001600160401b038311848410176100f25780849260409485528339810103126100ed5780516001600160a01b039182821682036100ed57602001519182168092036100ed576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355610f8a9081610109823960805181818161039e01528181610726015281816107f60152610ab90152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212206ab66fb5145120a1f67e33766f42291e47d0e0e732f6c9dcaca0e7510ca37aad64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212206ab66fb5145120a1f67e33766f42291e47d0e0e732f6c9dcaca0e7510ca37aad64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/USDOGenericModule.json b/src/artifacts/tapioca-bar/USDOGenericModule.json new file mode 100644 index 00000000..32a31989 --- /dev/null +++ b/src/artifacts/tapioca-bar/USDOGenericModule.json @@ -0,0 +1,1783 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "USDOGenericModule", + "sourceName": "contracts/usd0/modules/USDOGenericModule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lzEndpoint", + "type": "address" + }, + { + "internalType": "contract IYieldBoxBase", + "name": "_yieldBox", + "type": "address" + }, + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CallOFTReceivedSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_reason", + "type": "bytes" + } + ], + "name": "MessageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "NonContractAddress", + "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": false, + "internalType": "bool", + "name": "oldState", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "newState", + "type": "bool" + } + ], + "name": "PausedUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ReceiveFromChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_payloadHash", + "type": "bytes32" + } + ], + "name": "RetryMessageSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SendToChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetBurnerStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_type", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_minDstGas", + "type": "uint256" + } + ], + "name": "SetMinDstGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetMinterStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "precrime", + "type": "address" + } + ], + "name": "SetPrecrime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "SetTrustedRemote", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "SetTrustedRemoteAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "SetUseCustomAdapterParams", + "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": "DEFAULT_PAYLOAD_SIZE_LIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NO_EXTRA_GAS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND_AND_CALL", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "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": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedBurner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_from", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_gasForCall", + "type": "uint256" + } + ], + "name": "callOnOFTReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cluster", + "outputs": [ + { + "internalType": "contract ICluster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "conservator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "creditedPackets", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendAndCallFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "failedMessages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "forceResumeReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + } + ], + "name": "getConfig", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + } + ], + "name": "getTrustedRemoteAddress", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "minDstGasLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "nonblockingLzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "payloadSizeLimitLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "precrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "retryMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "sendFromDestination", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_config", + "type": "bytes" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_packetType", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_minGas", + "type": "uint256" + } + ], + "name": "setMinDstGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_size", + "type": "uint256" + } + ], + "name": "setPayloadSizeLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_precrime", + "type": "address" + } + ], + "name": "setPrecrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setReceiveVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setSendVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "setTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "setTrustedRemoteAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "setUseCustomAdapterParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sharedDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "airdropAdapterParams", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ISendFrom.LzCallParams", + "name": "sendFromData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bool", + "name": "permitAll", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "actionType", + "type": "uint16" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" + }, + { + "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" + } + ], + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + } + ], + "name": "triggerSendFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "trustedRemoteLookup", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "useCustomAdapterParams", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "yieldBox", + "outputs": [ + { + "internalType": "contract IYieldBoxBase", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x61010060409080825234620004db57606081620051158038038091620000268285620004e0565b833981010312620004db5780516001600160a01b039182821691829003620004db57602080820151918483168303620004db5785015193808516809503620004db57620000726200051a565b906200007d6200051a565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e257600b54916001968784811c94168015620004d0575b89851014620004bc578190601f9485811162000468575b50899085831160011462000402578892620003f6575b5050600019600383901b1c191690871b17600b555b8051928311620003e257600c548681811c91168015620003d7575b88821014620003c35790818389959493116200036b575b508391831160011462000300576004949291869183620002f4575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ea579082918993916200029f575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551614bc990816200054c823960805181818161049d015281816107600152818161088f01528181610a0901528181610bca01528181611ac001528181611c1a015281816123dc01528181612b16015281816138030152613dd0015260a051816114b9015260c051818181610f8201528181614004015281816142850152818161445801526144f2015260e05181611ed10152f35b80929350858092503d8311620002e2575b620002bc8183620004e0565b81010312620002de575161ffff81168103620002de5787919061ffff620001c5565b5080fd5b503d620002b0565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000352575096836004981062000338575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000329565b8289015184558b978b9690940193928301920162000314565b9091929350600c86528786208380860160051c8201928a8710620003b9575b9189918b97969594930160051c01915b828110620003aa57505062000162565b8881558a96508991016200039a565b925081926200038a565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000451575050841162000437575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000428565b8385015186558d9790950194938401930162000415565b909150600b88528988208580850160051c8201928c8610620004b2575b918b91869594930160051c01915b828110620004a357505062000105565b8a81558594508b910162000493565b9250819262000485565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050457604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005045760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033957806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b5780636779ec9814610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063857749b0146103485780638cfd8f5c146103435780638da5cb5b1461033e5780639358928b14610339578063950c8a7414610334578063952168c51461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612446565b612372565b6122ab565b612288565b61223e565b6120f4565b61206b565b612009565b611fed565b611f00565b611ebb565b611e61565b611e38565b611cd5565b611cac565b611bc6565b611ba9565b611b39565b611aef565b611aaa565b611a80565b6118fd565b611866565b6117a8565b611705565b6116ba565b611616565b611581565b611558565b6108f0565b61152f565b6114dd565b61149f565b611308565b6112b1565b61116b565b61112e565b61104b565b610eda565b610e54565b610e31565b610dca565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611296565b805190818414918261054b575b5081610528575b5061370c565b3691610d0d565b923691610d0d565b92613b64565b9050610535368486610d0d565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816111c6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610cb1565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b612896565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b60243590336126b3565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f612461565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b604435916109498333836127de565b6125ab565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614456565b602435614527565b928451958694859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610cb1565b810190613f43565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c91336126b3565b6124b9565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a604060002060405192838092611200565b0382610cb1565b848151910120923691610d0d565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc8612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ad7565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b606081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b6001600160401b038111610c7657601f01601f191660200190565b929192610d1982610cf2565b91610d276040519384610cb1565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d0d565b9060606003198301126103d157600435610d78816103c5565b91602435906001600160401b0382116103d157610d9791600401610d44565b9060443561065481610410565b602090610dbe9282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e2861ffff610e0783610de436610d5f565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e6236610421565b9192949390303303610e865761051a610e8092610019973691610d0d565b92613f9d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b346103d15760a03660031901126103d157610ef66004356107d6565b610f016024356103c5565b6001600160401b036044358181116103d157610f21903690600401610d44565b50610f2d606435610410565b608435908082116103d157610f66610f4c610fa8933690600401610d44565b610f57303314612c0f565b60208082518301019101612e00565b95509692919360018060a09893981b031696805161102e575b507f000000000000000000000000000000000000000000000000000000000000000091166144dd565b90303b156103d15760405163695ef6bf60e01b815292600092849283918291610fd7918a8a8160048701612ed2565b0391305af180156107cd57611015575b50600080516020614b5483398151915261ffff6040519216918061101081906000602083019252565b0390a3005b8061102261102892610c63565b806105f0565b38610fe7565b6110379061307e565b38610f7f565b908160609103126103d15790565b60a03660031901126103d157600435611063816107d6565b60243561106f816103c5565b604435916084356001600160401b0381116103d157602061ffff6110a6600080516020614b3483398151915293369060040161103d565b9361111985356110b5816107d6565b6110d361051386890135986110c98a6107d6565b6040810190613d4e565b6110dd818a6143f1565b6110f26110eb6064356144f0565b50856146e7565b976110fe891515614168565b61111061110a8a614456565b8c614527565b9234938b6137bf565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561114b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d15760008060031936011261073457611185612461565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156111f6575b60208310146111e057565b634e487b7160e01b600052602260045260246000fd5b91607f16916111d5565b9060009291805491611211836111c6565b9182825260019384811690816000146112735750600114611233575b50505050565b90919394506000526020928360002092846000945b83861061125f57505050500101903880808061122d565b805485870183015294019385908201611248565b9294505050602093945060ff191683830152151560051b0101903880808061122d565b906103e16112aa9260405193848092611200565b0383610cb1565b346103d15760203660031901126103d15761ffff6004356112d1816103c5565b1660005260016020526106af610b536112f4604060002060405192838092611200565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611320816107d6565b60243561132c816103c5565b604435916001600160401b03906084358281116103d1576113519036906004016103e3565b91909260a43561136081610410565b60c4358281116103d15761137890369060040161103d565b90866113b0833596611389886107d6565b6113a861139e6020870135966110c9886107d6565b9a90923691610d0d565b983691610d0d565b9360ff6006541660001461141d579360209593611110846113eb600080516020614b348339815191529a958561ffff9a6111199916916139f4565b6114006113f96064356144f0565b50886146e7565b9a61140c8c1515614168565b8d6114168d614456565b90336145a1565b5050829391925161144b57600080516020614b348339815191529460209461ffff94611110611119946113eb565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e286004356114ff816103c5565b61ffff6024359161150f836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b60a03660031901126103d157600435611599816103c5565b6001600160401b036024358181116103d1576115b99036906004016103e3565b926064358381116103d1576115d290369060040161103d565b90608435948486116103d157366023870112156103d15785600401359485116103d1573660246101a08702880101116103d157602461001996019360443592612ace565b346103d1576000806003193601126107345760405181600c54611638816111c6565b8084529060019081811690811561070c5750600114611661576106af846106a381880382610cb1565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106116a757505050816106af936106a39282010193610693565b805485850187015292850192810161168b565b346103d157602060ff6116f961ffff610e07846116d636610d5f565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611725816103c5565b166000526001602052610b53611745604060002060405192838092611200565b805115611763576106a38161175d6106af9351613b46565b90614927565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356117c5816107d6565b602435903360005260096020526117f28160406000209060018060a01b0316600052602052604060002090565b549180831061181357611807920390336126b3565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611883816103c5565b6001600160401b03906064358281116103d1576118a49036906004016103e3565b6084929192356118b381610410565b60a435916118c08361096a565b60c4359586116103d1576118db6118eb9636906004016103e3565b9590946044359060243590613d80565b60408051928352602083019190915290f35b346103d15761190b36610ae3565b90611914612461565b604051926020928083858701376119406034868381013060601b88820152036014810188520186610cb1565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c765761197a8361197486546111c6565b86613af2565b80601f84116001146119ea5750918080926119d99695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946119df575b50501b916000199060031b1c19161790555b60405193849384613ad7565b0390a180f35b0151925038806119bb565b91939498601f198416611a0287600052602060002090565b938a905b828210611a69575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856119d998969410611a50575b505050811b0190556119cd565b015160001960f88460031b161c19169055388080611a43565b808886978294978701518155019601940190611a06565b346103d15760403660031901126103d15761081c600435611aa0816107d6565b60243590336125ab565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6116f9602435611b13816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611b79816107d6565b611b81612461565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611be3816103c5565b602435611bef816103c5565b6064356001600160401b0381116103d157611c0e9036906004016103e3565b9092611c18612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611c8f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916128a2565b03925af180156107cd57611c9f57005b8061102261001992610c63565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611cde36610421565b9161ffff86949296166000526005602052611d2581604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611de757611dd68483611dcf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611dbb84611da38e8a8f611de29f908f611d8990611d7c611d9d9436908d610d0d565b6020815191012014613cc1565b61ffff166000526005602052604060002090565b91613ca8565b906001600160401b0316600052602052604060002090565b55611dc736878d610d0d565b933691610d0d565b9188613f9d565b60405195869586613d17565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e28600435611e83816107d6565b60243590611e90826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f1d816103c5565b602435611f29816103c5565b60443591611f35612461565b8215611fb057611de27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611f8a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356120498161096a565b612051612461565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612089816103c5565b6001600160401b03906024358281116103d1576120aa9036906004016103e3565b9190604435906120b982610410565b6084356120c5816107d6565b60c4359586116103d1576120e06100199636906004016103e3565b94909360e4359660a4359460643593613e76565b346103d15761210236610ae3565b919061210c612461565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576121458761213f85546111c6565b85613af2565b8590601f88116001146121ac57509186808798936119d9957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936121a1575b501b906000198460031b1c191617905560405193849384613ad7565b880135925038612185565b90601f1988166121c185600052602060002090565b9288905b828210612227575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996119d996941061220d575b505082811b0190556119cd565b870135600019600386901b60f8161c191690553880612200565b808685968294968c013581550195019301906121c5565b346103d15760403660031901126103d157602060ff6116f9602435612262816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356122c8816107d6565b6122d0612461565b6001600160a01b03908116801561231e57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561238f816103c5565b6024359061239c826103c5565b6123a76044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af91600091612425575b5060405191829182610643565b612440913d8091833e6124388183610cb1565b810190613ab2565b38612418565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361247557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156124ff57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561255757565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156126605761264582600080516020614b748339815191529461265b9416966125e58815156124f8565b6001600160a01b038116600090815260086020526040902061262a9085905461261082821015612550565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561278d57821693841561273d578061272c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461271561265b9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016128165750505050565b808410612831576128289303916126b3565b3880808061122d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b51906103e1826103c5565b908160209103126103d15751610654816103c5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60ff8116036103d157565b35906103e1826128c3565b9190808252602080920192916000905b8282106128f7575050505090565b909192938061291160019261290b88610974565b15159052565b61292761291f848801610974565b151582850152565b61293f6040612937818901610974565b151590830152565b612959606061294f8189016103d6565b61ffff1690830152565b61297860806129698189016107e7565b6001600160a01b031690830152565b61298860a0612937818901610974565b61299860c06129698189016107e7565b6129a860e06129698189016107e7565b610100808701359082015261012080870135908201526129d86101406129cf8189016128ce565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906128e9565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e060608201529796959194939290808235612a3f816107d6565b1660e08a01526020820135612a53816107d6565b166101008901526040810135601e19823603018112156103d15701926020843594019484116103d15783360385136103d157612ab2612aa560c096612abf9660606101208d01526101408c01916128a2565b61ffff90941660808a0152565b87830360a08901526128d9565b930152565b35610654816107d6565b959490919392612afd612af7612aed612ae8368988610d0d565b613659565b50949150506144f0565b50614456565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd57612bb198612b76612b9e956020958a95612b8495612ba89a600091612be2575b506040519c8d96338b89016129ff565b03601f198101885287610cb1565b612b98612b92368988610d0d565b8a61396a565b01612ac4565b9134943691610d0d565b913390866137bf565b604051903391600080516020614b3483398151915261ffff3393169180612bdd81906000602083019252565b0390a4565b612c029150893d8111612c08575b612bfa8183610cb1565b810190612881565b38612b66565b503d612bf0565b15612c1657565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826107d6565b90929192612c6c81610cf2565b91612c7a6040519384610cb1565b8294828452828201116103d15760206103e19301906105fb565b9080601f830112156103d157815161065492602001612c5f565b51906103e18261096a565b51906103e1826128c3565b81601f820112156103d1578051906001600160401b038211610c76576040805193602091612cf7838660051b0187610cb1565b84865282860191836101a0809702860101948186116103d1578401925b858410612d25575050505050505090565b86848303126103d157848791612d39610cd2565b612d4287612cae565b8152612d4f838801612cae565b83820152612d5e868801612cae565b868201526060612d6f818901612876565b908201526080612d80818901612c54565b9082015260a0612d91818901612cae565b9082015260c0612da2818901612c54565b9082015260e0612db3818901612c54565b9082015261010080880151908201526101208088015190820152610140612ddb818901612cb9565b9082015261016080880151908201526101808088015190820152815201930192612d14565b91909160e0818403126103d1578051612e18816103c5565b926020820151612e27816107d6565b926040830151612e3681610410565b926060810151916001600160401b03928381116103d15782016060818603126103d15760405190612e6682610c7b565b8051612e71816107d6565b82526020810151612e81816107d6565b60208301526040810151908582116103d157612e9f91879101612c94565b604082015293612eb160808401612876565b9360a08401519081116103d15760c091612ecc918501612cc4565b92015190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b8051821015612f3e5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15612f5b57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff612fbb60209295949560408552604085019061061e565b9416910152565b60009060033d11612fcf57565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d60248401111761303d57818401948551938411613045573d8501016020848701011161303d575061065492910160200190610cb1565b949350505050565b50949350505050565b3d15613079573d9061305f82610cf2565b9161306d6040519384610cb1565b82523d6000602084013e565b606090565b9060005b82518110156133215760406130a38161309b8487612f2a565b510151151590565b156130c55750806130bf6130b960019386612f2a565b5161339e565b01613082565b60606130ef61030a61ffff6130e8846130de888b612f2a565b51015161ffff1690565b1614612f54565b6130fe60a061309b8588612f2a565b61311c60c061310d8689612f2a565b5101516001600160a01b031690565b916131ed61312f60e061310d888b612f2a565b936131df610100613140898c612f2a565b5101518a6101206131518b83612f2a565b51015161316d6101406131648d85612f2a565b51015160ff1690565b9061018061318b8d6101606131828288612f2a565b51015195612f2a565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cb1565b61321c613211613205613205608061310d8a8d612f2a565b6001600160a01b031690565b916130de878a612f2a565b90803b156103d15761324a6000929183928751948580948193631221baf960e31b835260049a8b8401612fa0565b03925af1908161330e575b50613274576001613264612fc2565b6308c379a0146132c6575b61327f575b5050506001906130bf565b61329c61329861328d61304e565b9261309b878a612f2a565b1590565b15613274576132ad6132c291613326565b925162461bcd60e51b81529283928301610643565b0390fd5b6132ce612fe0565b806132da575b5061326f565b600091506132ef6132988461309b898c612f2a565b156132d457845162461bcd60e51b81529081906132c290828701610643565b8061102261331b92610c63565b38613255565b509050565b6044815110613377576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401612c5f565b5060405161338481610c96565b600a8152695553444f3a206461746160b01b602082015290565b8051156135155760808101516133be90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906133f161014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613502575b50613481576001613471612fc2565b6308c379a0146134c5575b613484575b50565b61349c613298602061349461304e565b930151151590565b15613481576134ad6132c291613326565b60405162461bcd60e51b815291829160048301610643565b6134cd612fe0565b806134d9575b5061347c565b6020830151600092506134d35760405162461bcd60e51b81529081906132c29060048301610643565b8061102261350f92610c63565b38613462565b608081015161352e90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361356861014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613457565b156135e557565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561362657565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115613701575b50156136c457600283015193602284015193600261ffff87166001811480156136bb575b613697906135de565b6136a287151561361f565b146136aa5750565b925090506056604283015192015190565b5080821461368e565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861366a565b1561371357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261378c61065497959361ffff61379a9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946137e89193929561ffff811660005260016020526137ef604060002060405194858092611200565b0384610cb1565b82511561387457613801855182613a43565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661385691604051998a988997889662c5803160e81b885260048801613767565b03925af180156107cd576138675750565b806110226103e192610c63565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156138d957565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561392557565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106139af5761ffff60226103e193015191166000526002602052604060002061030a600052602052604060002054906139a88215156138d2565b101561391e565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b919060228151106139af57602261ffff91015192166000526002602052613a2960406000206001600052602052604060002090565b54908101809111610ade576103e1916139a88215156138d2565b61ffff166000526003602052604060002054908115613aa8575b11613a6457565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613a5d565b906020828203126103d15781516001600160401b0381116103d1576106549201612c94565b60409061ffff610654959316815281602082015201916128a2565b90601f8111613b0057505050565b600091825260208220906020601f850160051c83019410613b3c575b601f0160051c01915b828110613b3157505050565b818155600101613b25565b9092508290613b1c565b601319810191908211610ade57565b605019810191908211610ade57565b929091613bd65a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613bd082613bc2613ba160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610cb1565b30614ad6565b939015613be5575b5050505050565b613bee94613bf8565b3880808080613bde565b9193613c957fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95613ca3939561ffff81516020830120961695866000526005602052613c5c83610e0760208b604060002082604051948386809551938492016105fb565b556001600160401b03613c81604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b15613cc857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91613d439060609461ffff6001600160401b0394999897991685526080602086015260808501916128a2565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b949195989790611416613da9604099613da1613daf97613dcc993691610d0d565b943691610d0d565b97614456565b928451968794859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd576000908193613e0f57509190565b905061048291925060403d8111610a8057610a718183610cb1565b93969491613e589061065499979461ffff6001600160401b039416875260c0602088015260c08701916128a2565b961660408401526060830152608082015260a08185039101526128a2565b91969792989594939094303303613efe57613e92908530614873565b60405181815290946001600160a01b03169390849061ffff851690600080516020614b5483398151915290602090a3833b156103d1576000988995613eee936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613e2a565b0393f180156107cd576138675750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff613f889316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff613fab84614a7b565b16806141135750505060ff613fbf82614a7b565b161580614108575b613fd09061455a565b613fe2613fdc82614a2b565b91614ac6565b90916001600160a01b0391828416156140fe575b61402a906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9183169283156140b957600080516020614b548339815191529161407961ffff9261405f61405a87600a546124eb565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020614b74833981519152604051806140a489829190602083019252565b0390a36040519384521691806020810161265b565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613ff6565b508051602914613fc7565b600103614123576103e193614239565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561416f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b036141e260e0989461ffff612abf9995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b0361422e6040939695949660608452606084019061061e565b951660208201520152565b90916142448461460e565b909161427561426e87611da36142688b61ffff166000526007602052604060002090565b8c610da4565b5460ff1690565b916142ab6001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9288888b83156143a7575b505050853b1561435c57946142fd9694613bd0948a94613bc2948d996000146143555750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016141b0565b901561434a57509061434561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461420e565b0390a2565b926103e19492613bf8565b16926142de565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250613ca3915050565b90611da36143dc926143d6896143c16143e9979b30614810565b9961ffff166000526007602052604060002090565b90610da4565b805460ff19166001179055565b88888b6142b6565b60065460ff16156144385760228251106139af5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906139a88215156138d2565b505161144b57565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156144d857046001600160401b0390818111614493571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614440565b81810292918115918404141715610ade57565b7f000000000000000000000000000000000000000000000000000000000000000080156144d857810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c7b565b1561456157565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526145fe81518092602086860191016105fb565b8101036051810184520182610cb1565b90614626600160ff61461f85614a7b565b161461455a565b61462f82614a2b565b9061463983614ac6565b9060498451106146aa57604984015193605181511061466e5761466b6051820151916146658151613b55565b906149a7565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036147a9575b801561475a578161472f8461472260009560018060a01b03166000526008602052604060002090565b54612610828210156147b9565b5561473d83600a5403600a55565b604051838152600080516020614b7483398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6147b48333846127de565b6146f9565b156147c057565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156140b957600a5490828201809211610ade57600092614864602092600080516020614b7483398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106549183916001600160a01b03811630811415908161489f575b50156125ab576109498333836127de565b90503314153861488e565b156148b157565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156148ee57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61493b82614934816124cf565b10156148aa565b61494882825110156148e7565b81614960575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106149945750508252601f01601f191660405290565b909283518152602080910193019061497c565b6149b482614934816124cf565b6149c981516149c2846124dd565b11156148e7565b816149e1575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614a185750508252601f01601f191660405290565b9092835181526020809101930190614a00565b6021815110614a3e57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110614a8b576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061466e576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c765783926040526096875282602088019560a036883760208451940192f1903d9060968211614b2a575b6000908286523e9190565b60969150614b1f56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220843a322a8be9bfb47b70abbc85664188efaf7fa57ce7155ec2d93c58e7fc72f864736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033957806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b5780636779ec9814610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063857749b0146103485780638cfd8f5c146103435780638da5cb5b1461033e5780639358928b14610339578063950c8a7414610334578063952168c51461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612446565b612372565b6122ab565b612288565b61223e565b6120f4565b61206b565b612009565b611fed565b611f00565b611ebb565b611e61565b611e38565b611cd5565b611cac565b611bc6565b611ba9565b611b39565b611aef565b611aaa565b611a80565b6118fd565b611866565b6117a8565b611705565b6116ba565b611616565b611581565b611558565b6108f0565b61152f565b6114dd565b61149f565b611308565b6112b1565b61116b565b61112e565b61104b565b610eda565b610e54565b610e31565b610dca565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611296565b805190818414918261054b575b5081610528575b5061370c565b3691610d0d565b923691610d0d565b92613b64565b9050610535368486610d0d565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816111c6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610cb1565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b612896565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b60243590336126b3565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f612461565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b604435916109498333836127de565b6125ab565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614456565b602435614527565b928451958694859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610cb1565b810190613f43565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c91336126b3565b6124b9565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a604060002060405192838092611200565b0382610cb1565b848151910120923691610d0d565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc8612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ad7565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b606081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b6001600160401b038111610c7657601f01601f191660200190565b929192610d1982610cf2565b91610d276040519384610cb1565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d0d565b9060606003198301126103d157600435610d78816103c5565b91602435906001600160401b0382116103d157610d9791600401610d44565b9060443561065481610410565b602090610dbe9282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e2861ffff610e0783610de436610d5f565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e6236610421565b9192949390303303610e865761051a610e8092610019973691610d0d565b92613f9d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b346103d15760a03660031901126103d157610ef66004356107d6565b610f016024356103c5565b6001600160401b036044358181116103d157610f21903690600401610d44565b50610f2d606435610410565b608435908082116103d157610f66610f4c610fa8933690600401610d44565b610f57303314612c0f565b60208082518301019101612e00565b95509692919360018060a09893981b031696805161102e575b507f000000000000000000000000000000000000000000000000000000000000000091166144dd565b90303b156103d15760405163695ef6bf60e01b815292600092849283918291610fd7918a8a8160048701612ed2565b0391305af180156107cd57611015575b50600080516020614b5483398151915261ffff6040519216918061101081906000602083019252565b0390a3005b8061102261102892610c63565b806105f0565b38610fe7565b6110379061307e565b38610f7f565b908160609103126103d15790565b60a03660031901126103d157600435611063816107d6565b60243561106f816103c5565b604435916084356001600160401b0381116103d157602061ffff6110a6600080516020614b3483398151915293369060040161103d565b9361111985356110b5816107d6565b6110d361051386890135986110c98a6107d6565b6040810190613d4e565b6110dd818a6143f1565b6110f26110eb6064356144f0565b50856146e7565b976110fe891515614168565b61111061110a8a614456565b8c614527565b9234938b6137bf565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561114b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d15760008060031936011261073457611185612461565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156111f6575b60208310146111e057565b634e487b7160e01b600052602260045260246000fd5b91607f16916111d5565b9060009291805491611211836111c6565b9182825260019384811690816000146112735750600114611233575b50505050565b90919394506000526020928360002092846000945b83861061125f57505050500101903880808061122d565b805485870183015294019385908201611248565b9294505050602093945060ff191683830152151560051b0101903880808061122d565b906103e16112aa9260405193848092611200565b0383610cb1565b346103d15760203660031901126103d15761ffff6004356112d1816103c5565b1660005260016020526106af610b536112f4604060002060405192838092611200565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611320816107d6565b60243561132c816103c5565b604435916001600160401b03906084358281116103d1576113519036906004016103e3565b91909260a43561136081610410565b60c4358281116103d15761137890369060040161103d565b90866113b0833596611389886107d6565b6113a861139e6020870135966110c9886107d6565b9a90923691610d0d565b983691610d0d565b9360ff6006541660001461141d579360209593611110846113eb600080516020614b348339815191529a958561ffff9a6111199916916139f4565b6114006113f96064356144f0565b50886146e7565b9a61140c8c1515614168565b8d6114168d614456565b90336145a1565b5050829391925161144b57600080516020614b348339815191529460209461ffff94611110611119946113eb565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e286004356114ff816103c5565b61ffff6024359161150f836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b60a03660031901126103d157600435611599816103c5565b6001600160401b036024358181116103d1576115b99036906004016103e3565b926064358381116103d1576115d290369060040161103d565b90608435948486116103d157366023870112156103d15785600401359485116103d1573660246101a08702880101116103d157602461001996019360443592612ace565b346103d1576000806003193601126107345760405181600c54611638816111c6565b8084529060019081811690811561070c5750600114611661576106af846106a381880382610cb1565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106116a757505050816106af936106a39282010193610693565b805485850187015292850192810161168b565b346103d157602060ff6116f961ffff610e07846116d636610d5f565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611725816103c5565b166000526001602052610b53611745604060002060405192838092611200565b805115611763576106a38161175d6106af9351613b46565b90614927565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356117c5816107d6565b602435903360005260096020526117f28160406000209060018060a01b0316600052602052604060002090565b549180831061181357611807920390336126b3565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611883816103c5565b6001600160401b03906064358281116103d1576118a49036906004016103e3565b6084929192356118b381610410565b60a435916118c08361096a565b60c4359586116103d1576118db6118eb9636906004016103e3565b9590946044359060243590613d80565b60408051928352602083019190915290f35b346103d15761190b36610ae3565b90611914612461565b604051926020928083858701376119406034868381013060601b88820152036014810188520186610cb1565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c765761197a8361197486546111c6565b86613af2565b80601f84116001146119ea5750918080926119d99695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946119df575b50501b916000199060031b1c19161790555b60405193849384613ad7565b0390a180f35b0151925038806119bb565b91939498601f198416611a0287600052602060002090565b938a905b828210611a69575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856119d998969410611a50575b505050811b0190556119cd565b015160001960f88460031b161c19169055388080611a43565b808886978294978701518155019601940190611a06565b346103d15760403660031901126103d15761081c600435611aa0816107d6565b60243590336125ab565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6116f9602435611b13816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611b79816107d6565b611b81612461565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611be3816103c5565b602435611bef816103c5565b6064356001600160401b0381116103d157611c0e9036906004016103e3565b9092611c18612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611c8f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916128a2565b03925af180156107cd57611c9f57005b8061102261001992610c63565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611cde36610421565b9161ffff86949296166000526005602052611d2581604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611de757611dd68483611dcf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611dbb84611da38e8a8f611de29f908f611d8990611d7c611d9d9436908d610d0d565b6020815191012014613cc1565b61ffff166000526005602052604060002090565b91613ca8565b906001600160401b0316600052602052604060002090565b55611dc736878d610d0d565b933691610d0d565b9188613f9d565b60405195869586613d17565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e28600435611e83816107d6565b60243590611e90826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f1d816103c5565b602435611f29816103c5565b60443591611f35612461565b8215611fb057611de27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611f8a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356120498161096a565b612051612461565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612089816103c5565b6001600160401b03906024358281116103d1576120aa9036906004016103e3565b9190604435906120b982610410565b6084356120c5816107d6565b60c4359586116103d1576120e06100199636906004016103e3565b94909360e4359660a4359460643593613e76565b346103d15761210236610ae3565b919061210c612461565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576121458761213f85546111c6565b85613af2565b8590601f88116001146121ac57509186808798936119d9957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936121a1575b501b906000198460031b1c191617905560405193849384613ad7565b880135925038612185565b90601f1988166121c185600052602060002090565b9288905b828210612227575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996119d996941061220d575b505082811b0190556119cd565b870135600019600386901b60f8161c191690553880612200565b808685968294968c013581550195019301906121c5565b346103d15760403660031901126103d157602060ff6116f9602435612262816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356122c8816107d6565b6122d0612461565b6001600160a01b03908116801561231e57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561238f816103c5565b6024359061239c826103c5565b6123a76044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af91600091612425575b5060405191829182610643565b612440913d8091833e6124388183610cb1565b810190613ab2565b38612418565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361247557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156124ff57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561255757565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156126605761264582600080516020614b748339815191529461265b9416966125e58815156124f8565b6001600160a01b038116600090815260086020526040902061262a9085905461261082821015612550565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561278d57821693841561273d578061272c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461271561265b9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016128165750505050565b808410612831576128289303916126b3565b3880808061122d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b51906103e1826103c5565b908160209103126103d15751610654816103c5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60ff8116036103d157565b35906103e1826128c3565b9190808252602080920192916000905b8282106128f7575050505090565b909192938061291160019261290b88610974565b15159052565b61292761291f848801610974565b151582850152565b61293f6040612937818901610974565b151590830152565b612959606061294f8189016103d6565b61ffff1690830152565b61297860806129698189016107e7565b6001600160a01b031690830152565b61298860a0612937818901610974565b61299860c06129698189016107e7565b6129a860e06129698189016107e7565b610100808701359082015261012080870135908201526129d86101406129cf8189016128ce565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906128e9565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e060608201529796959194939290808235612a3f816107d6565b1660e08a01526020820135612a53816107d6565b166101008901526040810135601e19823603018112156103d15701926020843594019484116103d15783360385136103d157612ab2612aa560c096612abf9660606101208d01526101408c01916128a2565b61ffff90941660808a0152565b87830360a08901526128d9565b930152565b35610654816107d6565b959490919392612afd612af7612aed612ae8368988610d0d565b613659565b50949150506144f0565b50614456565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd57612bb198612b76612b9e956020958a95612b8495612ba89a600091612be2575b506040519c8d96338b89016129ff565b03601f198101885287610cb1565b612b98612b92368988610d0d565b8a61396a565b01612ac4565b9134943691610d0d565b913390866137bf565b604051903391600080516020614b3483398151915261ffff3393169180612bdd81906000602083019252565b0390a4565b612c029150893d8111612c08575b612bfa8183610cb1565b810190612881565b38612b66565b503d612bf0565b15612c1657565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826107d6565b90929192612c6c81610cf2565b91612c7a6040519384610cb1565b8294828452828201116103d15760206103e19301906105fb565b9080601f830112156103d157815161065492602001612c5f565b51906103e18261096a565b51906103e1826128c3565b81601f820112156103d1578051906001600160401b038211610c76576040805193602091612cf7838660051b0187610cb1565b84865282860191836101a0809702860101948186116103d1578401925b858410612d25575050505050505090565b86848303126103d157848791612d39610cd2565b612d4287612cae565b8152612d4f838801612cae565b83820152612d5e868801612cae565b868201526060612d6f818901612876565b908201526080612d80818901612c54565b9082015260a0612d91818901612cae565b9082015260c0612da2818901612c54565b9082015260e0612db3818901612c54565b9082015261010080880151908201526101208088015190820152610140612ddb818901612cb9565b9082015261016080880151908201526101808088015190820152815201930192612d14565b91909160e0818403126103d1578051612e18816103c5565b926020820151612e27816107d6565b926040830151612e3681610410565b926060810151916001600160401b03928381116103d15782016060818603126103d15760405190612e6682610c7b565b8051612e71816107d6565b82526020810151612e81816107d6565b60208301526040810151908582116103d157612e9f91879101612c94565b604082015293612eb160808401612876565b9360a08401519081116103d15760c091612ecc918501612cc4565b92015190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b8051821015612f3e5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15612f5b57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff612fbb60209295949560408552604085019061061e565b9416910152565b60009060033d11612fcf57565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d60248401111761303d57818401948551938411613045573d8501016020848701011161303d575061065492910160200190610cb1565b949350505050565b50949350505050565b3d15613079573d9061305f82610cf2565b9161306d6040519384610cb1565b82523d6000602084013e565b606090565b9060005b82518110156133215760406130a38161309b8487612f2a565b510151151590565b156130c55750806130bf6130b960019386612f2a565b5161339e565b01613082565b60606130ef61030a61ffff6130e8846130de888b612f2a565b51015161ffff1690565b1614612f54565b6130fe60a061309b8588612f2a565b61311c60c061310d8689612f2a565b5101516001600160a01b031690565b916131ed61312f60e061310d888b612f2a565b936131df610100613140898c612f2a565b5101518a6101206131518b83612f2a565b51015161316d6101406131648d85612f2a565b51015160ff1690565b9061018061318b8d6101606131828288612f2a565b51015195612f2a565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cb1565b61321c613211613205613205608061310d8a8d612f2a565b6001600160a01b031690565b916130de878a612f2a565b90803b156103d15761324a6000929183928751948580948193631221baf960e31b835260049a8b8401612fa0565b03925af1908161330e575b50613274576001613264612fc2565b6308c379a0146132c6575b61327f575b5050506001906130bf565b61329c61329861328d61304e565b9261309b878a612f2a565b1590565b15613274576132ad6132c291613326565b925162461bcd60e51b81529283928301610643565b0390fd5b6132ce612fe0565b806132da575b5061326f565b600091506132ef6132988461309b898c612f2a565b156132d457845162461bcd60e51b81529081906132c290828701610643565b8061102261331b92610c63565b38613255565b509050565b6044815110613377576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401612c5f565b5060405161338481610c96565b600a8152695553444f3a206461746160b01b602082015290565b8051156135155760808101516133be90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906133f161014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613502575b50613481576001613471612fc2565b6308c379a0146134c5575b613484575b50565b61349c613298602061349461304e565b930151151590565b15613481576134ad6132c291613326565b60405162461bcd60e51b815291829160048301610643565b6134cd612fe0565b806134d9575b5061347c565b6020830151600092506134d35760405162461bcd60e51b81529081906132c29060048301610643565b8061102261350f92610c63565b38613462565b608081015161352e90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361356861014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613457565b156135e557565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561362657565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115613701575b50156136c457600283015193602284015193600261ffff87166001811480156136bb575b613697906135de565b6136a287151561361f565b146136aa5750565b925090506056604283015192015190565b5080821461368e565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861366a565b1561371357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261378c61065497959361ffff61379a9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946137e89193929561ffff811660005260016020526137ef604060002060405194858092611200565b0384610cb1565b82511561387457613801855182613a43565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661385691604051998a988997889662c5803160e81b885260048801613767565b03925af180156107cd576138675750565b806110226103e192610c63565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156138d957565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561392557565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106139af5761ffff60226103e193015191166000526002602052604060002061030a600052602052604060002054906139a88215156138d2565b101561391e565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b919060228151106139af57602261ffff91015192166000526002602052613a2960406000206001600052602052604060002090565b54908101809111610ade576103e1916139a88215156138d2565b61ffff166000526003602052604060002054908115613aa8575b11613a6457565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613a5d565b906020828203126103d15781516001600160401b0381116103d1576106549201612c94565b60409061ffff610654959316815281602082015201916128a2565b90601f8111613b0057505050565b600091825260208220906020601f850160051c83019410613b3c575b601f0160051c01915b828110613b3157505050565b818155600101613b25565b9092508290613b1c565b601319810191908211610ade57565b605019810191908211610ade57565b929091613bd65a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613bd082613bc2613ba160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610cb1565b30614ad6565b939015613be5575b5050505050565b613bee94613bf8565b3880808080613bde565b9193613c957fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95613ca3939561ffff81516020830120961695866000526005602052613c5c83610e0760208b604060002082604051948386809551938492016105fb565b556001600160401b03613c81604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b15613cc857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91613d439060609461ffff6001600160401b0394999897991685526080602086015260808501916128a2565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b949195989790611416613da9604099613da1613daf97613dcc993691610d0d565b943691610d0d565b97614456565b928451968794859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd576000908193613e0f57509190565b905061048291925060403d8111610a8057610a718183610cb1565b93969491613e589061065499979461ffff6001600160401b039416875260c0602088015260c08701916128a2565b961660408401526060830152608082015260a08185039101526128a2565b91969792989594939094303303613efe57613e92908530614873565b60405181815290946001600160a01b03169390849061ffff851690600080516020614b5483398151915290602090a3833b156103d1576000988995613eee936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613e2a565b0393f180156107cd576138675750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff613f889316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff613fab84614a7b565b16806141135750505060ff613fbf82614a7b565b161580614108575b613fd09061455a565b613fe2613fdc82614a2b565b91614ac6565b90916001600160a01b0391828416156140fe575b61402a906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9183169283156140b957600080516020614b548339815191529161407961ffff9261405f61405a87600a546124eb565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020614b74833981519152604051806140a489829190602083019252565b0390a36040519384521691806020810161265b565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613ff6565b508051602914613fc7565b600103614123576103e193614239565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561416f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b036141e260e0989461ffff612abf9995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b0361422e6040939695949660608452606084019061061e565b951660208201520152565b90916142448461460e565b909161427561426e87611da36142688b61ffff166000526007602052604060002090565b8c610da4565b5460ff1690565b916142ab6001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9288888b83156143a7575b505050853b1561435c57946142fd9694613bd0948a94613bc2948d996000146143555750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016141b0565b901561434a57509061434561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461420e565b0390a2565b926103e19492613bf8565b16926142de565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250613ca3915050565b90611da36143dc926143d6896143c16143e9979b30614810565b9961ffff166000526007602052604060002090565b90610da4565b805460ff19166001179055565b88888b6142b6565b60065460ff16156144385760228251106139af5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906139a88215156138d2565b505161144b57565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156144d857046001600160401b0390818111614493571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614440565b81810292918115918404141715610ade57565b7f000000000000000000000000000000000000000000000000000000000000000080156144d857810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c7b565b1561456157565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526145fe81518092602086860191016105fb565b8101036051810184520182610cb1565b90614626600160ff61461f85614a7b565b161461455a565b61462f82614a2b565b9061463983614ac6565b9060498451106146aa57604984015193605181511061466e5761466b6051820151916146658151613b55565b906149a7565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036147a9575b801561475a578161472f8461472260009560018060a01b03166000526008602052604060002090565b54612610828210156147b9565b5561473d83600a5403600a55565b604051838152600080516020614b7483398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6147b48333846127de565b6146f9565b156147c057565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156140b957600a5490828201809211610ade57600092614864602092600080516020614b7483398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106549183916001600160a01b03811630811415908161489f575b50156125ab576109498333836127de565b90503314153861488e565b156148b157565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156148ee57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61493b82614934816124cf565b10156148aa565b61494882825110156148e7565b81614960575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106149945750508252601f01601f191660405290565b909283518152602080910193019061497c565b6149b482614934816124cf565b6149c981516149c2846124dd565b11156148e7565b816149e1575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614a185750508252601f01601f191660405290565b9092835181526020809101930190614a00565b6021815110614a3e57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110614a8b576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061466e576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c765783926040526096875282602088019560a036883760208451940192f1903d9060968211614b2a575b6000908286523e9190565b60969150614b1f56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220843a322a8be9bfb47b70abbc85664188efaf7fa57ce7155ec2d93c58e7fc72f864736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/USDOLeverageDestinationModule.json b/src/artifacts/tapioca-bar/USDOLeverageDestinationModule.json new file mode 100644 index 00000000..fa5b19d1 --- /dev/null +++ b/src/artifacts/tapioca-bar/USDOLeverageDestinationModule.json @@ -0,0 +1,1813 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "USDOLeverageDestinationModule", + "sourceName": "contracts/usd0/modules/USDOLeverageDestinationModule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lzEndpoint", + "type": "address" + }, + { + "internalType": "contract IYieldBoxBase", + "name": "_yieldBox", + "type": "address" + }, + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CallOFTReceivedSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_reason", + "type": "bytes" + } + ], + "name": "MessageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "NonContractAddress", + "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": false, + "internalType": "bool", + "name": "oldState", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "newState", + "type": "bool" + } + ], + "name": "PausedUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ReceiveFromChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_payloadHash", + "type": "bytes32" + } + ], + "name": "RetryMessageSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SendToChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetBurnerStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_type", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_minDstGas", + "type": "uint256" + } + ], + "name": "SetMinDstGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetMinterStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "precrime", + "type": "address" + } + ], + "name": "SetPrecrime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "SetTrustedRemote", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "SetTrustedRemoteAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "SetUseCustomAdapterParams", + "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": "DEFAULT_PAYLOAD_SIZE_LIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NO_EXTRA_GAS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND_AND_CALL", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "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": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedBurner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_from", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_gasForCall", + "type": "uint256" + } + ], + "name": "callOnOFTReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cluster", + "outputs": [ + { + "internalType": "contract ICluster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "conservator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "creditedPackets", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendAndCallFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "failedMessages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "forceResumeReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + } + ], + "name": "getConfig", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + } + ], + "name": "getTrustedRemoteAddress", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "leverageUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IUSDOBase.ILeverageSwapData", + "name": "swapData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "swapper", + "type": "address" + }, + { + "internalType": "address", + "name": "magnetar", + "type": "address" + }, + { + "internalType": "address", + "name": "tOft", + "type": "address" + }, + { + "internalType": "address", + "name": "srcMarket", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageExternalContractsData", + "name": "externalData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "srcExtraGasLimit", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "lzSrcChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "dstAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "srcAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageLZData", + "name": "lzData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "leverageFor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "airdropAmount", + "type": "uint256" + } + ], + "name": "leverageUpInternal", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "minDstGasLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "multiHop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "nonblockingLzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "payloadSizeLimitLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "precrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "retryMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_config", + "type": "bytes" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_packetType", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_minGas", + "type": "uint256" + } + ], + "name": "setMinDstGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_size", + "type": "uint256" + } + ], + "name": "setPayloadSizeLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_precrime", + "type": "address" + } + ], + "name": "setPrecrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setReceiveVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setSendVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "setTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "setTrustedRemoteAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "setUseCustomAdapterParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sharedDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "trustedRemoteLookup", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "useCustomAdapterParams", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "yieldBox", + "outputs": [ + { + "internalType": "contract IYieldBoxBase", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x61010060409080825234620004db5760608162005d248038038091620000268285620004e0565b833981010312620004db5780516001600160a01b039182821691829003620004db57602080820151918483168303620004db5785015193808516809503620004db57620000726200051a565b906200007d6200051a565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e257600b54916001968784811c94168015620004d0575b89851014620004bc578190601f9485811162000468575b50899085831160011462000402578892620003f6575b5050600019600383901b1c191690871b17600b555b8051928311620003e257600c548681811c91168015620003d7575b88821014620003c35790818389959493116200036b575b508391831160011462000300576004949291869183620002f4575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ea579082918993916200029f575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d55516157d890816200054c82396080518181816104ad01528181610770015281816108ac01528181610a1b01528181610bdc01528181611eb101528181612025015281816127ca0152818161482e0152614c35015260a051816115d5015260c0518181816115140152818161179301528181614a4c01528181614e2f0152818161508d0152615127015260e051816122bf0152f35b80929350858092503d8311620002e2575b620002bc8183620004e0565b81010312620002de575161ffff81168103620002de5787919061ffff620001c5565b5080fd5b503d620002b0565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000352575096836004981062000338575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000329565b8289015184558b978b9690940193928301920162000314565b9091929350600c86528786208380860160051c8201928a8710620003b9575b9189918b97969594930160051c01915b828110620003aa57505062000162565b8881558a96508991016200039a565b925081926200038a565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000451575050841162000437575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000428565b8385015186558d9790950194938401930162000415565b909150600b88528988208580850160051c8201928c8610620004b2575b918b91869594930160051c01915b828110620004a357505062000105565b8a81558594508b910162000493565b9250819262000485565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050457604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005045760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b757806310ddb137146103b257806318160ddd1461034957806323b872dd146103ad578063313ce567146103a8578063365260b4146103a3578063395093511461039e5780633d8b38f6146103995780633f1f4fa41461039457806342d65a8d1461038f578063447705151461038a5780634c42899a1461038a5780635b8c41e6146103855780635c975abb1461038057806366ad5c8a1461037b578063695ef6bf1461037657806370a0823114610371578063715018a61461036c5780637533d7881461036757806376203b4814610362578063803e75281461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b14610349578063950c8a741461034457806395d89b411461033f5780639bb1bec61461033a5780639bdb9812146103355780639f38369a14610330578063a457c2d71461032b578063a4c51df514610326578063a6c3d16514610321578063a9059cbb1461031c578063b01127dc14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612834565b612760565b612699565b612676565b61262c565b6124e2565b612459565b6123f7565b6123db565b6122ee565b6122a9565b61224f565b612226565b6120c3565b61209a565b611fd1565b611fb4565b611f44565b611efa565b611e9b565b611dec565b611cc3565b611b40565b611aa9565b6119eb565b611948565b6118fd565b611741565b61169d565b611674565b61090d565b61164b565b6115f9565b6115bb565b6114b2565b61122a565b6111d3565b61108d565b611050565b610f6d565b610ed9565b610eb6565b610e4f565b610c43565b610bc2565b610b89565b610b2d565b610a99565b610991565b61096b565b61092b565b610883565b610844565b61080f565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b6111b8565b805190818414918261055b575b5081610538575b506144b2565b3691610d92565b923691610d92565b926145c2565b9050610545368486610d92565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816110e8565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b381880382610cde565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da90610c75565b80f35b613308565b5080fd5b6001600160a01b038116036103e157565b60e435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761083960043561082f816107e6565b6024359033612a68565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610864816103d5565b61086c61284f565b166000526003602052602435604060002055600080f35b346103e15760006020366003190112610744576004356108a2816103d5565b6108aa61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e15761083960043561094b816107e6565b602435610957816107e6565b60443591610966833383612b93565b612999565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b346103e15760a03660031901126103e1576004356109ae816103d5565b606435906109bb82610987565b608435906001600160401b0382116103e1576109e061052360409336906004016103f3565b90610a176109fa6109f260443561508b565b60243561515c565b928451958694859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610cde565b810190613455565b9038610a56565b503d610a79565b346103e15760403660031901126103e157600435610ab6816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af0576108399133612a68565b6128a7565b9060406003198301126103e157600435610b0e816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610b7a610b4336610af5565b9390911660005260018452610b65610b6c604060002060405192838092611122565b0382610cde565b848151910120923691610d92565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ba9816103d5565b1660005260036020526020604060002054604051908152f35b346103e157610bd036610af5565b9190610bda61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281610c316000988997889460048501614553565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c8857604052565b610c5f565b608081019081106001600160401b03821117610c8857604052565b606081019081106001600160401b03821117610c8857604052565b604081019081106001600160401b03821117610c8857604052565b90601f801991011681019081106001600160401b03821117610c8857604052565b6040519060e082018281106001600160401b03821117610c8857604052565b604051906103f182610c8d565b6040519060a082018281106001600160401b03821117610c8857604052565b604051906103f182610cc3565b604051906101a082018281106001600160401b03821117610c8857604052565b6001600160401b038111610c8857601f01601f191660200190565b929192610d9e82610d77565b91610dac6040519384610cde565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e15781602061066493359101610d92565b9060606003198301126103e157600435610dfd816103d5565b91602435906001600160401b0382116103e157610e1c91600401610dc9565b9060443561066481610420565b602090610e4392826040519483868095519384920161060b565b82019081520301902090565b346103e1576020610ead61ffff610e8c83610e6936610de4565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e157610ee736610431565b9192949390303303610f0b5761052a610f0592610019973691610d92565b926149e5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435610f85816107e6565b602435610f91816103d5565b604435916084356001600160401b0381116103e157602061ffff610fc8600080516020615743833981519152933690600401610f5f565b9361103b8535610fd7816107e6565b610ff56105238689013598610feb8a6107e6565b60408101906147ac565b610fff818a614f88565b61101461100d606435615125565b508561531c565b97611020891515614b51565b61103261102c8a61508b565b8c61515c565b9234938b614bf1565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561106d816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e157600080600319360112610744576110a761284f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015611118575b602083101461110257565b634e487b7160e01b600052602260045260246000fd5b91607f16916110f7565b9060009291805491611133836110e8565b9182825260019384811690816000146111955750600114611155575b50505050565b90919394506000526020928360002092846000945b83861061118157505050500101903880808061114f565b80548587018301529401938590820161116a565b9294505050602093945060ff191683830152151560051b0101903880808061114f565b906103f16111cc9260405193848092611122565b0383610cde565b346103e15760203660031901126103e15761ffff6004356111f3816103d5565b1660005260016020526106bf610b65611216604060002060405192838092611122565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611242816107e6565b60243561124e816103d5565b604435916001600160401b03906084358281116103e1576112739036906004016103f3565b91909260a4359161128383610420565b60c4358281116103e15761129b903690600401610f5f565b926112d28435956112ab876107e6565b6112ca6112c0602088013597610feb896107e6565b9990923691610d92565b973691610d92565b9460ff600654166000146113c7576022865110611382578560209561103261103b946113508c61133d61ffff9a8b60226000805160206157438339815191529f0151931660005260028d52841661133760406000206001600052602052604060002090565b546128d9565b90611349821515614fdd565b1015615029565b61136561135e606435615125565b508861531c565b9a6113718c1515614b51565b8d61137b8d61508b565b90336151d6565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113f4576000805160206157438339815191529460209461ffff9461103261103b94611350565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60a06003198201126103e157600435611460816107e6565b9160243561146d816103d5565b916001600160401b03916044358381116103e1578261148e91600401610dc9565b9260643561149b81610420565b926084359182116103e15761066491600401610dc9565b346103e1576114d76114c336611448565b935050505060208082518301019101613d3f565b93985080919750959195516115ac575b50606086015161154f9061151190611505906001600160a01b031681565b6001600160a01b031690565b947f000000000000000000000000000000000000000000000000000000000000000090611548826001600160401b03809316615112565b9516615112565b94843b156103e15760405163d49dffa760e01b8152976000978997889687956115899593949291906001600160a01b031660048801613de9565b03925af180156107dd5761159957005b806115a661001992610c75565b80610600565b6115b590613f62565b386114e7565b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e1576020610ead60043561161b816103d5565b61ffff6024359161162b836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c546116bf816110e8565b8084529060019081811690811561071c57506001146116e8576106bf846106b381880382610cde565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061172e57505050816106bf936106b392820101936106a3565b8054858501870152928501928101611712565b346103e15761174f36611448565b9392303314806118a9575b61176390612c2b565b8285518601602001602087019061177991612e29565b999550600160a09c959994939b929c1b60019003169a8b987f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316906117c691615112565b9a8b809b8a8288306117d790611ee0565b549c6117e2936131fb565b6117eb30611ee0565b549b6040519485946020860198632c0449f760e21b8a52602487019561181096612f82565b03601f19810182526118229082610cde565b515a92600093928493f492611835612fd6565b93159761ffff9760008051602061576383398151915299611873575b5050505050505061186e6040519283921694829190602083019252565b0390a3005b61188d9661188091613024565b1015611899575b85614656565b38808080808881611851565b6118a4898b30613031565b611887565b50600360005260126020526117636118e87f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a546001600160a01b031690565b6001600160a01b03868116911614905061175a565b346103e157602060ff61193c61ffff610e8c8461191936610de4565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611968816103d5565b166000526001602052610b65611988604060002060405192838092611122565b8051156119a6576106b3816119a06106bf9351613006565b90615536565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611a08816107e6565b60243590336000526009602052611a358160406000209060018060a01b0316600052602052604060002090565b5491808310611a5657611a4a92039033612a68565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611ac6816103d5565b6001600160401b03906064358281116103e157611ae79036906004016103f3565b608492919235611af681610420565b60a43591611b0383610987565b60c4359586116103e157611b1e611b2e9636906004016103f3565b95909460443590602435906147de565b60408051928352602083019190915290f35b346103e157611b4e36610af5565b90611b5761284f565b60405192602092808385870137611b836034868381013060601b88820152036014810188520186610cde565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c8857611bbd83611bb786546110e8565b8661456e565b80601f8411600114611c2d575091808092611c1c9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611c22575b50501b916000199060031b1c19161790555b60405193849384614553565b0390a180f35b015192503880611bfe565b91939498601f198416611c4587600052602060002090565b938a905b828210611cac575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611c1c98969410611c93575b505050811b019055611c10565b015160001960f88460031b161c19169055388080611c86565b808886978294978701518155019601940190611c49565b346103e15760403660031901126103e157610839600435611ce3816107e6565b6024359033612999565b60809060431901126103e15760405190611d0682610c8d565b81604435611d13816107e6565b8152606435611d21816107e6565b6020820152608435611d32816107e6565b6040820152606060a43591611d46836107e6565b0152565b91909160e0818403126103e157611d5f610cff565b9281358452611d70602083016103e6565b6020850152611d81604083016103e6565b6040850152611d9260608301610804565b60608501526001600160401b039160808101358381116103e15782611db8918301610dc9565b608086015260a08101359283116103e157611dda60c092611de5948301610dc9565b60a086015201610804565b60c0830152565b600319610120368201126103e1576024356001600160401b03918282116103e15760609082360301126103e15760405190611e2682610ca8565b8060040135611e34816107e6565b8252602481013560208301526044810135908382116103e1576004611e5c9236920101610dc9565b6040820152611e6a36611ced565b60c4359283116103e157611e85610019933690600401611d4a565b611e8d6107f7565b916101043593600435613703565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff61193c602435611f1e816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611f84816107e6565b611f8c61284f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435611fee816103d5565b602435611ffa816103d5565b6064356001600160401b0381116103e1576120199036906004016103f3565b909261202361284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611589604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191614532565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b6120cc36610431565b9161ffff8694929616600052600560205261211381604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156121d5576121c484836121bd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006121a9846121918e8a8f6121d09f908f6121779061216a61218b9436908d610d92565b602081519101201461471f565b61ffff166000526005602052604060002090565b91614706565b906001600160401b0316600052602052604060002090565b556121b536878d610d92565b933691610d92565b91886149e5565b60405195869586614775565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e1576020610ead600435612271816107e6565b6024359061227e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561230b816103d5565b602435612317816103d5565b6044359161232361284f565b821561239e576121d07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806123788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561243781610987565b61243f61284f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612477816103d5565b6001600160401b03906024358281116103e1576124989036906004016103f3565b9190604435906124a782610420565b6084356124b3816107e6565b60c4359586116103e1576124ce6100199636906004016103f3565b94909360e4359660a43594606435936148d4565b346103e1576124f036610af5565b91906124fa61284f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c88576125338761252d85546110e8565b8561456e565b8590601f881160011461259a5750918680879893611c1c957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361258f575b501b906000198460031b1c191617905560405193849384614553565b880135925038612573565b90601f1988166125af85600052602060002090565b9288905b828210612615575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611c1c9694106125fb575b505082811b019055611c10565b870135600019600386901b60f8161c1916905538806125ee565b808685968294968c013581550195019301906125b3565b346103e15760403660031901126103e157602060ff61193c602435612650816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356126b6816107e6565b6126be61284f565b6001600160a01b03908116801561270c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561277d816103d5565b6024359061278a826103d5565b6127956044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612813575b5060405191829182610653565b61282e913d8091833e6128268183610cde565b81019061450d565b38612806565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b0316330361286357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156128ed57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561294557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612a15576129fa8260008051602061578383398151915294612a109416966129d38815156128e6565b6129f4846129e083611ee0565b546129ed8282101561293e565b0391611ee0565b55611ee0565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612b42578216938415612af25780612ae17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612aca612a109560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612bcb5750505050565b808410612be657612bdd930391612a68565b3880808061114f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612c3257565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b51906103f1826103d5565b51906103f182610420565b51906103f1826107e6565b90929192612c9781610d77565b91612ca56040519384610cde565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e157815161066492602001612c8a565b91906060838203126103e15760405190612cf282610ca8565b81938051612cff816107e6565b8352602081015160208401526040810151916001600160401b0383116103e157604092612d2c9201612cbf565b910152565b91908260809103126103e157604051612d4981610c8d565b60608082948051612d59816107e6565b84526020810151612d69816107e6565b60208501526040810151612d7c816107e6565b6040850152015191611d46836107e6565b91909160e0818403126103e157612da2610cff565b9281518452612db360208301612c69565b6020850152612dc460408301612c69565b6040850152612dd560608301612c7f565b60608501526080820151916001600160401b03928381116103e15782612dfc918301612cbf565b608086015260a08101519283116103e157612e1e60c092611de5948301612cbf565b60a086015201612c7f565b919091610140818403126103e1578051612e42816103d5565b926020820151612e5181610420565b926040830151926001600160401b03938481116103e15783612e74918301612cd9565b93612e828460608401612d31565b9360e08301519182116103e157612e9a918301612d8d565b91610120610100830151612ead816107e6565b92015190565b90606060406106649360018060a01b03815116845260208101516020850152015191816040820152019061062e565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b0380606085015116606084015281612f78612f66608087015160e0608088015260e087019061062e565b60a087015186820360a088015261062e565b9401511691015290565b929093612fb5612faa612fc294610100979a99989a8752610120806020890152870190612eb3565b926040860190612ee2565b83820360c0850152612f15565b6001600160a01b0390951660e08201520152565b3d15613001573d90612fe782610d77565b91612ff56040519384610cde565b82523d6000602084013e565b606090565b601319810191908211610af057565b605019810191908211610af057565b91908203918211610af057565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926130ca92916000908190613078606486610cde565b60018060a01b0316926040519461308e86610cc3565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16130c4612fd6565b91613166565b805190816130d757505050565b82806130e7938301019101613151565b156130ef5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b51906103f182610987565b908160209103126103e1575161066481610987565b919290156131c8575081511561317a575090565b3b156131835790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156131db5750805190602001fd5b60405162461bcd60e51b81529081906131f79060048301610653565b0390fd5b9291909261ffff8116600052600760205260ff61322f8360406000206020604051809282610e8c8c8481519384920161060b565b54161561323c5750505050565b30156132c357612bdd936132b061219192856132656132606132b698600a546128d9565b600a55565b61326e30611ee0565b8181540190556000600080516020615783833981519152604051806132993095829190602083019252565b0390a361ffff166000526007602052604060002090565b90610e29565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6040513d6000823e3d90fd5b1561331b57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b91908260409103126103e157604051604081018181106001600160401b03821117610c88576040526020808294805161338f81610987565b8452015191611d4683610987565b908181039161014083126103e1576040918251936133ba85610ca8565b608081126103e15760809084516133d081610c8d565b84516133db816107e6565b815260208501516020820152858501516133f4816107e6565b86820152606085015160608201528652607f1901126103e15761010061344e92845161341f81610c8d565b6080820151815260a0820151602082015260c08201518682015260e08201516060820152602087015201613357565b9082015290565b91908260409103126103e1576020825192015190565b919261066494936134e96040613500946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b6101408401526001600160a01b0316610160830152565b6101a09081610180820152019061062e565b6040519061351f82610cc3565b6002825261060f60f31b6020830152565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b60608051808352602080930192608080936000915b8483106135985750505050505090565b909192939495846101a060019289516135b382825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152808601516001600160a01b03168287015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019701959493019190613588565b949160606136a26136f59661ffff6136d6976106649c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061062e565b9380516080890152602081015160a08901528260408201511660c089015201511660e0860152848203610100860152613530565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613573565b929194939093613714303314612c2b565b85516001600160a01b0316946001600160a01b0394858716613b61575b87516137c5975061374d9082906001600160a01b031630612a68565b875161376390611505906001600160a01b031681565b825160408051631fd177af60e11b8152306004808301919091526001600160a01b03909316602482015260448101949094526000606485018190526084850181905260a48501526101409991949093909290918a9183918290819060c4820190565b03915afa9889156107dd57600099613b32575b5050885160208281015183850151855163efa84c6d60e01b81529b929a9386938d936001600160a01b039092169284928392613819929130918d860161346b565b03915a90600091f19889156107dd57600099613b12575b5081516001600160a01b03161680613a0e575b5081890190613872611505613864611505611505865160018060a01b031690565b92516001600160a01b031690565b600090613a08575088905b803b156103e1578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107dd576138dd9261150592611505926139f5575b50516001600160a01b031690565b946138ec8782015161ffff1690565b9661395060a08301519a61394061391f60606139108685015160018060a01b031690565b9301516001600160a01b031690565b9160008561392b610d1e565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b6139ae61395b610d2b565b91600083526000818401526000858401526000606084015261397b613512565b608084015283516060909401516001600160a01b03169061399a610d4a565b9485526001600160a01b0390911690840152565b863b156103e1576000986139d793519a8b998a988997633a2544b560e01b895230908901613660565b03925af180156107dd576139e85750565b806115a66103f192610c75565b806115a6613a0292610c75565b386138cf565b9061387d565b8983018051845163095ea7b360e01b8082526001600160a01b0390921687820190815260006020820181905292949193928c9285928390036040019183915af19081156107dd57613ab9938b938d93613af5575b508551600090613a8e90613a8090611505906001600160a01b031681565b93516001600160a01b031690565b88519283526001600160a01b0316898301908152602081019490945290948593849291839160400190565b03925af180156107dd571561384357613ae790883d8a11613aee575b613adf8183610cde565b810190613151565b5038613843565b503d613ad5565b613b0b90853d8711613aee57613adf8183610cde565b5038613a62565b613b2a919950833d8511610a9257610a838183610cde565b509738613830565b613b52929950803d10613b5a575b613b4a8183610cde565b81019061339d565b9638806137d8565b503d613b40565b600d54613bb197602091613b7d906001600160a01b0316611505565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529098899190829081906044820190565b03915afa9687156107dd576137c597613bd291600091613bd7575b50613314565b613731565b613bef915060203d8111613aee57613adf8183610cde565b38613bcc565b519060ff821682036103e157565b81601f820112156103e1578051906001600160401b038211610c88576040805193602091613c36838660051b0187610cde565b84865282860191836101a0809702860101948186116103e1578401925b858410613c64575050505050505090565b86848303126103e157848791613c78610d57565b613c8187613146565b8152613c8e838801613146565b83820152613c9d868801613146565b868201526060613cae818901612c69565b908201526080613cbf818901612c7f565b9082015260a0613cd0818901613146565b9082015260c0613ce1818901612c7f565b9082015260e0613cf2818901612c7f565b9082015261010080880151908201526101208088015190820152610140613d1a818901613bf5565b9082015261016080880151908201526101808088015190820152815201930192613c53565b90916101a0828403126103e157613d5582612c69565b92602083015192613d6860408201612c7f565b92613d7560608301612c74565b92613d8260808401612c74565b9260a0810151906001600160401b03918281116103e15783613da5918301612cd9565b9360c08201518381116103e15784613dbe918401612d8d565b93613dcc8160e08501612d31565b936101608401519081116103e15761018091612ead918501613c03565b969593613e289060c094613e36946103f1989460018060a01b03168b5260208b015260408a0152600160608a01526101408060808b0152890190612eb3565b9087820360a0890152612f15565b940190612ee2565b8051821015613e525760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613e6f57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613ecf60209295949560408552604085019061062e565b9416910152565b60009060033d11613ee357565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613f5157818401948551938411613f59573d85010160208487010111613f51575061066492910160200190610cde565b949350505050565b50949350505050565b9060005b82518110156141f5576040613f8781613f7f8487613e3e565b510151151590565b15613fa9575080613fa3613f9d60019386613e3e565b51614272565b01613f66565b6060613fd361030461ffff613fcc84613fc2888b613e3e565b51015161ffff1690565b1614613e68565b613fe260a0613f7f8588613e3e565b61400060c0613ff18689613e3e565b5101516001600160a01b031690565b916140d161401360e0613ff1888b613e3e565b936140c3610100614024898c613e3e565b5101518a6101206140358b83613e3e565b5101516140516101406140488d85613e3e565b51015160ff1690565b9061018061406f8d6101606140668288613e3e565b51015195613e3e565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cde565b6140f46140e96115056115056080613ff18a8d613e3e565b91613fc2878a613e3e565b90803b156103e1576141226000929183928751948580948193631221baf960e31b835260049a8b8401613eb4565b03925af190816141e2575b5061414c57600161413c613ed6565b6308c379a01461419a575b614157575b505050600190613fa3565b614174614170614165612fd6565b92613f7f878a613e3e565b1590565b1561414c576141856131f7916141fa565b925162461bcd60e51b81529283928301610653565b6141a2613ef4565b806141ae575b50614147565b600091506141c361417084613f7f898c613e3e565b156141a857845162461bcd60e51b81529081906131f790828701610653565b806115a66141ef92610c75565b3861412d565b509050565b604481511061424b576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e157602482015161066492604401612c8a565b5060405161425881610cc3565b600a8152695553444f3a206461746160b01b602082015290565b8051156143e957608081015161429290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906142c561014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af190816143d6575b50614355576001614345613ed6565b6308c379a014614399575b614358575b50565b6143706141706020614368612fd6565b930151151590565b15614355576143816131f7916141fa565b60405162461bcd60e51b815291829160048301610653565b6143a1613ef4565b806143ad575b50614350565b6020830151600092506143a75760405162461bcd60e51b81529081906131f79060048301610653565b806115a66143e392610c75565b38614336565b608081015161440290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361443c61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161432b565b156144b957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201612cbf565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61066495931681528160208201520191614532565b90601f811161457c57505050565b600091825260208220906020601f850160051c830194106145b8575b601f0160051c01915b8281106145ad57505050565b8181556001016145a1565b9092508290614598565b9290916146345a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061462e826146206145ff60a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f198101845283610cde565b306156e5565b939015614643575b5050505050565b61464c94614656565b388080808061463c565b91936146f37fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614701939561ffff815160208301209616958660005260056020526146ba83610e8c60208b6040600020826040519483868095519384920161060b565b556001600160401b036146df604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561472657565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916147a19060609461ffff6001600160401b039499989799168552608060208601526080850191614532565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b94919598979061137b6148076040996147ff61480d9761482a993691610d92565b943691610d92565b9761508b565b928451968794859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361486d57509190565b905061049291925060403d8111610a9257610a838183610cde565b939694916148b69061066499979461ffff6001600160401b039416875260c0602088015260c0870191614532565b961660408401526060830152608082015260a0818503910152614532565b9196979298959493909430330361495c576148f0908530615482565b60405181815290946001600160a01b03169390849061ffff85169060008051602061576383398151915290602090a3833b156103e157600098899561494c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614888565b0393f180156107dd576139e85750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610664959361ffff6149d09316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff6149f38461568a565b1680614afc5750505060ff614a078261568a565b161580614af1575b614a189061518f565b614a2a614a248261563a565b916156d5565b90916001600160a01b039182841615614ae7575b614a72906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615112565b9183169283156132c35760008051602061576383398151915291614aa761ffff92614aa261326087600a546128d9565b611ee0565b84815401905584600060008051602061578383398151915260405180614ad289829190602083019252565b0390a360405193845216918060208101612a10565b61dead9350614a3e565b508051602914614a0f565b600103614b0c576103f193614de3565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614b5857565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614bbe61066497959361ffff614bcc9416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614c1a9193929561ffff81166000526001602052614c21604060002060405194858092611122565b0384610cde565b825115614c8857614c33855182614ce6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e1576000966139d791604051998a988997889662c5803160e81b885260048801614b99565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614d4b575b11614d0757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614d00565b98979692936001600160401b03614d8760e0989461ffff614db39995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b930152565b6001600160401b03614dd86040939695949660608452606084019061062e565b951660208201520152565b9091614dee84615243565b9091614e1f614e1887612191614e128b61ffff166000526007602052604060002090565b8c610e29565b5460ff1690565b91614e556001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615112565b9288888b8315614f51575b505050853b15614f065794614ea7969461462e948a94614620948d99600014614eff5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614d55565b9015614ef4575090614eef61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614db8565b0390a2565b926103f19492614656565b1692614e88565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614701915050565b906121916132b6926132b089614f6b614f80979b30615432565b9961ffff166000526007602052604060002090565b88888b614e60565b60065460ff1615614fd55760228251106113825761ffff60226103f193015191166000526002602052614fc8604060002060008052602052604060002090565b5490611349821515614fdd565b50516113f457565b15614fe457565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561503057565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561510d57046001600160401b03908181116150c8571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615075565b81810292918115918404141715610af057565b7f0000000000000000000000000000000000000000000000000000000000000000801561510d57810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261066481610ca8565b1561519657565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615233815180926020868601910161060b565b8101036051810184520182610cde565b9061525b600160ff6152548561568a565b161461518f565b6152648261563a565b9061526e836156d5565b9060498451106152df5760498401519360518151106152a3576152a060518201519161529a8151613015565b906155b6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036153cb575b801561537c578161535184615344600095611ee0565b546129ed828210156153db565b5561535f83600a5403600a55565b60405183815260008051602061578383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6153d6833384612b93565b61532e565b156153e257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156132c357600a5490828201809211610af05760009261547360209260008051602061578383398151915294600a55611ee0565b818154019055604051908152a3565b6106649183916001600160a01b0381163081141590816154ae575b501561299957610966833383612b93565b90503314153861549d565b156154c057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156154fd57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61554a82615543816128bd565b10156154b9565b61555782825110156154f6565b8161556f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106155a35750508252601f01601f191660405290565b909283518152602080910193019061558b565b6155c382615543816128bd565b6155d881516155d1846128cb565b11156154f6565b816155f0575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106156275750508252601f01601f191660405290565b909283518152602080910193019061560f565b602181511061564d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061569a576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106152a3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c885783926040526096875282602088019560a036883760208451940192f1903d9060968211615739575b6000908286523e9190565b6096915061572e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122019cb0164f52dcb8edb7c75611db08ded1173ded2907c8aca2aaa668e7cc6df4e64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b757806310ddb137146103b257806318160ddd1461034957806323b872dd146103ad578063313ce567146103a8578063365260b4146103a3578063395093511461039e5780633d8b38f6146103995780633f1f4fa41461039457806342d65a8d1461038f578063447705151461038a5780634c42899a1461038a5780635b8c41e6146103855780635c975abb1461038057806366ad5c8a1461037b578063695ef6bf1461037657806370a0823114610371578063715018a61461036c5780637533d7881461036757806376203b4814610362578063803e75281461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b14610349578063950c8a741461034457806395d89b411461033f5780639bb1bec61461033a5780639bdb9812146103355780639f38369a14610330578063a457c2d71461032b578063a4c51df514610326578063a6c3d16514610321578063a9059cbb1461031c578063b01127dc14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612834565b612760565b612699565b612676565b61262c565b6124e2565b612459565b6123f7565b6123db565b6122ee565b6122a9565b61224f565b612226565b6120c3565b61209a565b611fd1565b611fb4565b611f44565b611efa565b611e9b565b611dec565b611cc3565b611b40565b611aa9565b6119eb565b611948565b6118fd565b611741565b61169d565b611674565b61090d565b61164b565b6115f9565b6115bb565b6114b2565b61122a565b6111d3565b61108d565b611050565b610f6d565b610ed9565b610eb6565b610e4f565b610c43565b610bc2565b610b89565b610b2d565b610a99565b610991565b61096b565b61092b565b610883565b610844565b61080f565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b6111b8565b805190818414918261055b575b5081610538575b506144b2565b3691610d92565b923691610d92565b926145c2565b9050610545368486610d92565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816110e8565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b381880382610cde565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da90610c75565b80f35b613308565b5080fd5b6001600160a01b038116036103e157565b60e435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761083960043561082f816107e6565b6024359033612a68565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610864816103d5565b61086c61284f565b166000526003602052602435604060002055600080f35b346103e15760006020366003190112610744576004356108a2816103d5565b6108aa61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e15761083960043561094b816107e6565b602435610957816107e6565b60443591610966833383612b93565b612999565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b346103e15760a03660031901126103e1576004356109ae816103d5565b606435906109bb82610987565b608435906001600160401b0382116103e1576109e061052360409336906004016103f3565b90610a176109fa6109f260443561508b565b60243561515c565b928451958694859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610cde565b810190613455565b9038610a56565b503d610a79565b346103e15760403660031901126103e157600435610ab6816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af0576108399133612a68565b6128a7565b9060406003198301126103e157600435610b0e816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610b7a610b4336610af5565b9390911660005260018452610b65610b6c604060002060405192838092611122565b0382610cde565b848151910120923691610d92565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ba9816103d5565b1660005260036020526020604060002054604051908152f35b346103e157610bd036610af5565b9190610bda61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281610c316000988997889460048501614553565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c8857604052565b610c5f565b608081019081106001600160401b03821117610c8857604052565b606081019081106001600160401b03821117610c8857604052565b604081019081106001600160401b03821117610c8857604052565b90601f801991011681019081106001600160401b03821117610c8857604052565b6040519060e082018281106001600160401b03821117610c8857604052565b604051906103f182610c8d565b6040519060a082018281106001600160401b03821117610c8857604052565b604051906103f182610cc3565b604051906101a082018281106001600160401b03821117610c8857604052565b6001600160401b038111610c8857601f01601f191660200190565b929192610d9e82610d77565b91610dac6040519384610cde565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e15781602061066493359101610d92565b9060606003198301126103e157600435610dfd816103d5565b91602435906001600160401b0382116103e157610e1c91600401610dc9565b9060443561066481610420565b602090610e4392826040519483868095519384920161060b565b82019081520301902090565b346103e1576020610ead61ffff610e8c83610e6936610de4565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e157610ee736610431565b9192949390303303610f0b5761052a610f0592610019973691610d92565b926149e5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435610f85816107e6565b602435610f91816103d5565b604435916084356001600160401b0381116103e157602061ffff610fc8600080516020615743833981519152933690600401610f5f565b9361103b8535610fd7816107e6565b610ff56105238689013598610feb8a6107e6565b60408101906147ac565b610fff818a614f88565b61101461100d606435615125565b508561531c565b97611020891515614b51565b61103261102c8a61508b565b8c61515c565b9234938b614bf1565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561106d816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e157600080600319360112610744576110a761284f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015611118575b602083101461110257565b634e487b7160e01b600052602260045260246000fd5b91607f16916110f7565b9060009291805491611133836110e8565b9182825260019384811690816000146111955750600114611155575b50505050565b90919394506000526020928360002092846000945b83861061118157505050500101903880808061114f565b80548587018301529401938590820161116a565b9294505050602093945060ff191683830152151560051b0101903880808061114f565b906103f16111cc9260405193848092611122565b0383610cde565b346103e15760203660031901126103e15761ffff6004356111f3816103d5565b1660005260016020526106bf610b65611216604060002060405192838092611122565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611242816107e6565b60243561124e816103d5565b604435916001600160401b03906084358281116103e1576112739036906004016103f3565b91909260a4359161128383610420565b60c4358281116103e15761129b903690600401610f5f565b926112d28435956112ab876107e6565b6112ca6112c0602088013597610feb896107e6565b9990923691610d92565b973691610d92565b9460ff600654166000146113c7576022865110611382578560209561103261103b946113508c61133d61ffff9a8b60226000805160206157438339815191529f0151931660005260028d52841661133760406000206001600052602052604060002090565b546128d9565b90611349821515614fdd565b1015615029565b61136561135e606435615125565b508861531c565b9a6113718c1515614b51565b8d61137b8d61508b565b90336151d6565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113f4576000805160206157438339815191529460209461ffff9461103261103b94611350565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60a06003198201126103e157600435611460816107e6565b9160243561146d816103d5565b916001600160401b03916044358381116103e1578261148e91600401610dc9565b9260643561149b81610420565b926084359182116103e15761066491600401610dc9565b346103e1576114d76114c336611448565b935050505060208082518301019101613d3f565b93985080919750959195516115ac575b50606086015161154f9061151190611505906001600160a01b031681565b6001600160a01b031690565b947f000000000000000000000000000000000000000000000000000000000000000090611548826001600160401b03809316615112565b9516615112565b94843b156103e15760405163d49dffa760e01b8152976000978997889687956115899593949291906001600160a01b031660048801613de9565b03925af180156107dd5761159957005b806115a661001992610c75565b80610600565b6115b590613f62565b386114e7565b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e1576020610ead60043561161b816103d5565b61ffff6024359161162b836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c546116bf816110e8565b8084529060019081811690811561071c57506001146116e8576106bf846106b381880382610cde565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061172e57505050816106bf936106b392820101936106a3565b8054858501870152928501928101611712565b346103e15761174f36611448565b9392303314806118a9575b61176390612c2b565b8285518601602001602087019061177991612e29565b999550600160a09c959994939b929c1b60019003169a8b987f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316906117c691615112565b9a8b809b8a8288306117d790611ee0565b549c6117e2936131fb565b6117eb30611ee0565b549b6040519485946020860198632c0449f760e21b8a52602487019561181096612f82565b03601f19810182526118229082610cde565b515a92600093928493f492611835612fd6565b93159761ffff9760008051602061576383398151915299611873575b5050505050505061186e6040519283921694829190602083019252565b0390a3005b61188d9661188091613024565b1015611899575b85614656565b38808080808881611851565b6118a4898b30613031565b611887565b50600360005260126020526117636118e87f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a546001600160a01b031690565b6001600160a01b03868116911614905061175a565b346103e157602060ff61193c61ffff610e8c8461191936610de4565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611968816103d5565b166000526001602052610b65611988604060002060405192838092611122565b8051156119a6576106b3816119a06106bf9351613006565b90615536565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611a08816107e6565b60243590336000526009602052611a358160406000209060018060a01b0316600052602052604060002090565b5491808310611a5657611a4a92039033612a68565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611ac6816103d5565b6001600160401b03906064358281116103e157611ae79036906004016103f3565b608492919235611af681610420565b60a43591611b0383610987565b60c4359586116103e157611b1e611b2e9636906004016103f3565b95909460443590602435906147de565b60408051928352602083019190915290f35b346103e157611b4e36610af5565b90611b5761284f565b60405192602092808385870137611b836034868381013060601b88820152036014810188520186610cde565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c8857611bbd83611bb786546110e8565b8661456e565b80601f8411600114611c2d575091808092611c1c9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611c22575b50501b916000199060031b1c19161790555b60405193849384614553565b0390a180f35b015192503880611bfe565b91939498601f198416611c4587600052602060002090565b938a905b828210611cac575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611c1c98969410611c93575b505050811b019055611c10565b015160001960f88460031b161c19169055388080611c86565b808886978294978701518155019601940190611c49565b346103e15760403660031901126103e157610839600435611ce3816107e6565b6024359033612999565b60809060431901126103e15760405190611d0682610c8d565b81604435611d13816107e6565b8152606435611d21816107e6565b6020820152608435611d32816107e6565b6040820152606060a43591611d46836107e6565b0152565b91909160e0818403126103e157611d5f610cff565b9281358452611d70602083016103e6565b6020850152611d81604083016103e6565b6040850152611d9260608301610804565b60608501526001600160401b039160808101358381116103e15782611db8918301610dc9565b608086015260a08101359283116103e157611dda60c092611de5948301610dc9565b60a086015201610804565b60c0830152565b600319610120368201126103e1576024356001600160401b03918282116103e15760609082360301126103e15760405190611e2682610ca8565b8060040135611e34816107e6565b8252602481013560208301526044810135908382116103e1576004611e5c9236920101610dc9565b6040820152611e6a36611ced565b60c4359283116103e157611e85610019933690600401611d4a565b611e8d6107f7565b916101043593600435613703565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff61193c602435611f1e816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611f84816107e6565b611f8c61284f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435611fee816103d5565b602435611ffa816103d5565b6064356001600160401b0381116103e1576120199036906004016103f3565b909261202361284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611589604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191614532565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b6120cc36610431565b9161ffff8694929616600052600560205261211381604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156121d5576121c484836121bd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006121a9846121918e8a8f6121d09f908f6121779061216a61218b9436908d610d92565b602081519101201461471f565b61ffff166000526005602052604060002090565b91614706565b906001600160401b0316600052602052604060002090565b556121b536878d610d92565b933691610d92565b91886149e5565b60405195869586614775565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e1576020610ead600435612271816107e6565b6024359061227e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561230b816103d5565b602435612317816103d5565b6044359161232361284f565b821561239e576121d07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806123788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561243781610987565b61243f61284f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612477816103d5565b6001600160401b03906024358281116103e1576124989036906004016103f3565b9190604435906124a782610420565b6084356124b3816107e6565b60c4359586116103e1576124ce6100199636906004016103f3565b94909360e4359660a43594606435936148d4565b346103e1576124f036610af5565b91906124fa61284f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c88576125338761252d85546110e8565b8561456e565b8590601f881160011461259a5750918680879893611c1c957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361258f575b501b906000198460031b1c191617905560405193849384614553565b880135925038612573565b90601f1988166125af85600052602060002090565b9288905b828210612615575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611c1c9694106125fb575b505082811b019055611c10565b870135600019600386901b60f8161c1916905538806125ee565b808685968294968c013581550195019301906125b3565b346103e15760403660031901126103e157602060ff61193c602435612650816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356126b6816107e6565b6126be61284f565b6001600160a01b03908116801561270c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561277d816103d5565b6024359061278a826103d5565b6127956044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612813575b5060405191829182610653565b61282e913d8091833e6128268183610cde565b81019061450d565b38612806565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b0316330361286357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156128ed57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561294557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612a15576129fa8260008051602061578383398151915294612a109416966129d38815156128e6565b6129f4846129e083611ee0565b546129ed8282101561293e565b0391611ee0565b55611ee0565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612b42578216938415612af25780612ae17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612aca612a109560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612bcb5750505050565b808410612be657612bdd930391612a68565b3880808061114f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612c3257565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b51906103f1826103d5565b51906103f182610420565b51906103f1826107e6565b90929192612c9781610d77565b91612ca56040519384610cde565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e157815161066492602001612c8a565b91906060838203126103e15760405190612cf282610ca8565b81938051612cff816107e6565b8352602081015160208401526040810151916001600160401b0383116103e157604092612d2c9201612cbf565b910152565b91908260809103126103e157604051612d4981610c8d565b60608082948051612d59816107e6565b84526020810151612d69816107e6565b60208501526040810151612d7c816107e6565b6040850152015191611d46836107e6565b91909160e0818403126103e157612da2610cff565b9281518452612db360208301612c69565b6020850152612dc460408301612c69565b6040850152612dd560608301612c7f565b60608501526080820151916001600160401b03928381116103e15782612dfc918301612cbf565b608086015260a08101519283116103e157612e1e60c092611de5948301612cbf565b60a086015201612c7f565b919091610140818403126103e1578051612e42816103d5565b926020820151612e5181610420565b926040830151926001600160401b03938481116103e15783612e74918301612cd9565b93612e828460608401612d31565b9360e08301519182116103e157612e9a918301612d8d565b91610120610100830151612ead816107e6565b92015190565b90606060406106649360018060a01b03815116845260208101516020850152015191816040820152019061062e565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b0380606085015116606084015281612f78612f66608087015160e0608088015260e087019061062e565b60a087015186820360a088015261062e565b9401511691015290565b929093612fb5612faa612fc294610100979a99989a8752610120806020890152870190612eb3565b926040860190612ee2565b83820360c0850152612f15565b6001600160a01b0390951660e08201520152565b3d15613001573d90612fe782610d77565b91612ff56040519384610cde565b82523d6000602084013e565b606090565b601319810191908211610af057565b605019810191908211610af057565b91908203918211610af057565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926130ca92916000908190613078606486610cde565b60018060a01b0316926040519461308e86610cc3565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16130c4612fd6565b91613166565b805190816130d757505050565b82806130e7938301019101613151565b156130ef5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b51906103f182610987565b908160209103126103e1575161066481610987565b919290156131c8575081511561317a575090565b3b156131835790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156131db5750805190602001fd5b60405162461bcd60e51b81529081906131f79060048301610653565b0390fd5b9291909261ffff8116600052600760205260ff61322f8360406000206020604051809282610e8c8c8481519384920161060b565b54161561323c5750505050565b30156132c357612bdd936132b061219192856132656132606132b698600a546128d9565b600a55565b61326e30611ee0565b8181540190556000600080516020615783833981519152604051806132993095829190602083019252565b0390a361ffff166000526007602052604060002090565b90610e29565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6040513d6000823e3d90fd5b1561331b57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b91908260409103126103e157604051604081018181106001600160401b03821117610c88576040526020808294805161338f81610987565b8452015191611d4683610987565b908181039161014083126103e1576040918251936133ba85610ca8565b608081126103e15760809084516133d081610c8d565b84516133db816107e6565b815260208501516020820152858501516133f4816107e6565b86820152606085015160608201528652607f1901126103e15761010061344e92845161341f81610c8d565b6080820151815260a0820151602082015260c08201518682015260e08201516060820152602087015201613357565b9082015290565b91908260409103126103e1576020825192015190565b919261066494936134e96040613500946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b6101408401526001600160a01b0316610160830152565b6101a09081610180820152019061062e565b6040519061351f82610cc3565b6002825261060f60f31b6020830152565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b60608051808352602080930192608080936000915b8483106135985750505050505090565b909192939495846101a060019289516135b382825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152808601516001600160a01b03168287015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019701959493019190613588565b949160606136a26136f59661ffff6136d6976106649c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061062e565b9380516080890152602081015160a08901528260408201511660c089015201511660e0860152848203610100860152613530565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613573565b929194939093613714303314612c2b565b85516001600160a01b0316946001600160a01b0394858716613b61575b87516137c5975061374d9082906001600160a01b031630612a68565b875161376390611505906001600160a01b031681565b825160408051631fd177af60e11b8152306004808301919091526001600160a01b03909316602482015260448101949094526000606485018190526084850181905260a48501526101409991949093909290918a9183918290819060c4820190565b03915afa9889156107dd57600099613b32575b5050885160208281015183850151855163efa84c6d60e01b81529b929a9386938d936001600160a01b039092169284928392613819929130918d860161346b565b03915a90600091f19889156107dd57600099613b12575b5081516001600160a01b03161680613a0e575b5081890190613872611505613864611505611505865160018060a01b031690565b92516001600160a01b031690565b600090613a08575088905b803b156103e1578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107dd576138dd9261150592611505926139f5575b50516001600160a01b031690565b946138ec8782015161ffff1690565b9661395060a08301519a61394061391f60606139108685015160018060a01b031690565b9301516001600160a01b031690565b9160008561392b610d1e565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b6139ae61395b610d2b565b91600083526000818401526000858401526000606084015261397b613512565b608084015283516060909401516001600160a01b03169061399a610d4a565b9485526001600160a01b0390911690840152565b863b156103e1576000986139d793519a8b998a988997633a2544b560e01b895230908901613660565b03925af180156107dd576139e85750565b806115a66103f192610c75565b806115a6613a0292610c75565b386138cf565b9061387d565b8983018051845163095ea7b360e01b8082526001600160a01b0390921687820190815260006020820181905292949193928c9285928390036040019183915af19081156107dd57613ab9938b938d93613af5575b508551600090613a8e90613a8090611505906001600160a01b031681565b93516001600160a01b031690565b88519283526001600160a01b0316898301908152602081019490945290948593849291839160400190565b03925af180156107dd571561384357613ae790883d8a11613aee575b613adf8183610cde565b810190613151565b5038613843565b503d613ad5565b613b0b90853d8711613aee57613adf8183610cde565b5038613a62565b613b2a919950833d8511610a9257610a838183610cde565b509738613830565b613b52929950803d10613b5a575b613b4a8183610cde565b81019061339d565b9638806137d8565b503d613b40565b600d54613bb197602091613b7d906001600160a01b0316611505565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529098899190829081906044820190565b03915afa9687156107dd576137c597613bd291600091613bd7575b50613314565b613731565b613bef915060203d8111613aee57613adf8183610cde565b38613bcc565b519060ff821682036103e157565b81601f820112156103e1578051906001600160401b038211610c88576040805193602091613c36838660051b0187610cde565b84865282860191836101a0809702860101948186116103e1578401925b858410613c64575050505050505090565b86848303126103e157848791613c78610d57565b613c8187613146565b8152613c8e838801613146565b83820152613c9d868801613146565b868201526060613cae818901612c69565b908201526080613cbf818901612c7f565b9082015260a0613cd0818901613146565b9082015260c0613ce1818901612c7f565b9082015260e0613cf2818901612c7f565b9082015261010080880151908201526101208088015190820152610140613d1a818901613bf5565b9082015261016080880151908201526101808088015190820152815201930192613c53565b90916101a0828403126103e157613d5582612c69565b92602083015192613d6860408201612c7f565b92613d7560608301612c74565b92613d8260808401612c74565b9260a0810151906001600160401b03918281116103e15783613da5918301612cd9565b9360c08201518381116103e15784613dbe918401612d8d565b93613dcc8160e08501612d31565b936101608401519081116103e15761018091612ead918501613c03565b969593613e289060c094613e36946103f1989460018060a01b03168b5260208b015260408a0152600160608a01526101408060808b0152890190612eb3565b9087820360a0890152612f15565b940190612ee2565b8051821015613e525760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613e6f57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613ecf60209295949560408552604085019061062e565b9416910152565b60009060033d11613ee357565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613f5157818401948551938411613f59573d85010160208487010111613f51575061066492910160200190610cde565b949350505050565b50949350505050565b9060005b82518110156141f5576040613f8781613f7f8487613e3e565b510151151590565b15613fa9575080613fa3613f9d60019386613e3e565b51614272565b01613f66565b6060613fd361030461ffff613fcc84613fc2888b613e3e565b51015161ffff1690565b1614613e68565b613fe260a0613f7f8588613e3e565b61400060c0613ff18689613e3e565b5101516001600160a01b031690565b916140d161401360e0613ff1888b613e3e565b936140c3610100614024898c613e3e565b5101518a6101206140358b83613e3e565b5101516140516101406140488d85613e3e565b51015160ff1690565b9061018061406f8d6101606140668288613e3e565b51015195613e3e565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cde565b6140f46140e96115056115056080613ff18a8d613e3e565b91613fc2878a613e3e565b90803b156103e1576141226000929183928751948580948193631221baf960e31b835260049a8b8401613eb4565b03925af190816141e2575b5061414c57600161413c613ed6565b6308c379a01461419a575b614157575b505050600190613fa3565b614174614170614165612fd6565b92613f7f878a613e3e565b1590565b1561414c576141856131f7916141fa565b925162461bcd60e51b81529283928301610653565b6141a2613ef4565b806141ae575b50614147565b600091506141c361417084613f7f898c613e3e565b156141a857845162461bcd60e51b81529081906131f790828701610653565b806115a66141ef92610c75565b3861412d565b509050565b604481511061424b576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e157602482015161066492604401612c8a565b5060405161425881610cc3565b600a8152695553444f3a206461746160b01b602082015290565b8051156143e957608081015161429290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906142c561014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af190816143d6575b50614355576001614345613ed6565b6308c379a014614399575b614358575b50565b6143706141706020614368612fd6565b930151151590565b15614355576143816131f7916141fa565b60405162461bcd60e51b815291829160048301610653565b6143a1613ef4565b806143ad575b50614350565b6020830151600092506143a75760405162461bcd60e51b81529081906131f79060048301610653565b806115a66143e392610c75565b38614336565b608081015161440290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361443c61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161432b565b156144b957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201612cbf565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61066495931681528160208201520191614532565b90601f811161457c57505050565b600091825260208220906020601f850160051c830194106145b8575b601f0160051c01915b8281106145ad57505050565b8181556001016145a1565b9092508290614598565b9290916146345a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061462e826146206145ff60a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f198101845283610cde565b306156e5565b939015614643575b5050505050565b61464c94614656565b388080808061463c565b91936146f37fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614701939561ffff815160208301209616958660005260056020526146ba83610e8c60208b6040600020826040519483868095519384920161060b565b556001600160401b036146df604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561472657565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916147a19060609461ffff6001600160401b039499989799168552608060208601526080850191614532565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b94919598979061137b6148076040996147ff61480d9761482a993691610d92565b943691610d92565b9761508b565b928451968794859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361486d57509190565b905061049291925060403d8111610a9257610a838183610cde565b939694916148b69061066499979461ffff6001600160401b039416875260c0602088015260c0870191614532565b961660408401526060830152608082015260a0818503910152614532565b9196979298959493909430330361495c576148f0908530615482565b60405181815290946001600160a01b03169390849061ffff85169060008051602061576383398151915290602090a3833b156103e157600098899561494c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614888565b0393f180156107dd576139e85750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610664959361ffff6149d09316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff6149f38461568a565b1680614afc5750505060ff614a078261568a565b161580614af1575b614a189061518f565b614a2a614a248261563a565b916156d5565b90916001600160a01b039182841615614ae7575b614a72906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615112565b9183169283156132c35760008051602061576383398151915291614aa761ffff92614aa261326087600a546128d9565b611ee0565b84815401905584600060008051602061578383398151915260405180614ad289829190602083019252565b0390a360405193845216918060208101612a10565b61dead9350614a3e565b508051602914614a0f565b600103614b0c576103f193614de3565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614b5857565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614bbe61066497959361ffff614bcc9416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614c1a9193929561ffff81166000526001602052614c21604060002060405194858092611122565b0384610cde565b825115614c8857614c33855182614ce6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e1576000966139d791604051998a988997889662c5803160e81b885260048801614b99565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614d4b575b11614d0757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614d00565b98979692936001600160401b03614d8760e0989461ffff614db39995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b930152565b6001600160401b03614dd86040939695949660608452606084019061062e565b951660208201520152565b9091614dee84615243565b9091614e1f614e1887612191614e128b61ffff166000526007602052604060002090565b8c610e29565b5460ff1690565b91614e556001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615112565b9288888b8315614f51575b505050853b15614f065794614ea7969461462e948a94614620948d99600014614eff5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614d55565b9015614ef4575090614eef61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614db8565b0390a2565b926103f19492614656565b1692614e88565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614701915050565b906121916132b6926132b089614f6b614f80979b30615432565b9961ffff166000526007602052604060002090565b88888b614e60565b60065460ff1615614fd55760228251106113825761ffff60226103f193015191166000526002602052614fc8604060002060008052602052604060002090565b5490611349821515614fdd565b50516113f457565b15614fe457565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561503057565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561510d57046001600160401b03908181116150c8571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615075565b81810292918115918404141715610af057565b7f0000000000000000000000000000000000000000000000000000000000000000801561510d57810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261066481610ca8565b1561519657565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615233815180926020868601910161060b565b8101036051810184520182610cde565b9061525b600160ff6152548561568a565b161461518f565b6152648261563a565b9061526e836156d5565b9060498451106152df5760498401519360518151106152a3576152a060518201519161529a8151613015565b906155b6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036153cb575b801561537c578161535184615344600095611ee0565b546129ed828210156153db565b5561535f83600a5403600a55565b60405183815260008051602061578383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6153d6833384612b93565b61532e565b156153e257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156132c357600a5490828201809211610af05760009261547360209260008051602061578383398151915294600a55611ee0565b818154019055604051908152a3565b6106649183916001600160a01b0381163081141590816154ae575b501561299957610966833383612b93565b90503314153861549d565b156154c057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156154fd57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61554a82615543816128bd565b10156154b9565b61555782825110156154f6565b8161556f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106155a35750508252601f01601f191660405290565b909283518152602080910193019061558b565b6155c382615543816128bd565b6155d881516155d1846128cb565b11156154f6565b816155f0575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106156275750508252601f01601f191660405290565b909283518152602080910193019061560f565b602181511061564d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061569a576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106152a3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c885783926040526096875282602088019560a036883760208451940192f1903d9060968211615739575b6000908286523e9190565b6096915061572e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122019cb0164f52dcb8edb7c75611db08ded1173ded2907c8aca2aaa668e7cc6df4e64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/USDOLeverageModule.json b/src/artifacts/tapioca-bar/USDOLeverageModule.json index 13d0d248..241750a9 100644 --- a/src/artifacts/tapioca-bar/USDOLeverageModule.json +++ b/src/artifacts/tapioca-bar/USDOLeverageModule.json @@ -80,63 +80,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -911,19 +854,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1019,68 +949,21 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - } - ], - "name": "isTrustedRemote", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { "internalType": "address", - "name": "module", + "name": "from", "type": "address" }, { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "leverageUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ { "internalType": "uint256", - "name": "amount", + "name": "borrowAmount", "type": "uint256" }, { @@ -1105,6 +988,48 @@ "name": "swapData", "type": "tuple" }, + { + "components": [ + { + "internalType": "uint256", + "name": "srcExtraGasLimit", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "lzSrcChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "dstAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "srcAirdropAdapterParam", + "type": "bytes" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "internalType": "struct IUSDOBase.ILeverageLZData", + "name": "lzData", + "type": "tuple" + }, { "components": [ { @@ -1132,62 +1057,111 @@ "name": "externalData", "type": "tuple" }, + { + "internalType": "bytes", + "name": "airdropAdapterParams", + "type": "bytes" + }, { "components": [ { - "internalType": "uint256", - "name": "srcExtraGasLimit", - "type": "uint256" + "internalType": "bool", + "name": "permitAll", + "type": "bool" }, { - "internalType": "uint16", - "name": "lzSrcChainId", - "type": "uint16" + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" }, { "internalType": "uint16", - "name": "lzDstChainId", + "name": "actionType", "type": "uint16" }, { "internalType": "address", - "name": "zroPaymentAddress", + "name": "target", "type": "address" }, { - "internalType": "bytes", - "name": "dstAirdropAdapterParam", - "type": "bytes" + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" }, { - "internalType": "bytes", - "name": "srcAirdropAdapterParam", - "type": "bytes" + "internalType": "address", + "name": "owner", + "type": "address" }, { "internalType": "address", - "name": "refundAddress", + "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" } ], - "internalType": "struct IUSDOBase.ILeverageLZData", - "name": "lzData", - "type": "tuple" - }, + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + } + ], + "name": "initMultiHopBuy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ { - "internalType": "address", - "name": "leverageFor", - "type": "address" + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" }, { - "internalType": "uint256", - "name": "airdropAmount", - "type": "uint256" + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" } ], - "name": "leverageUpInternal", - "outputs": [], - "stateMutability": "payable", + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", "type": "function" }, { @@ -1231,19 +1205,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1965,8 +1926,8 @@ "type": "receive" } ], - "bytecode": "0x61010060409080825234620004ee57606081620059b78038038091620000268285620004f3565b833981010312620004ee5780516001600160a01b039182821691829003620004ee57602080820151918483168303620004ee5785015193808516809503620004ee57620000726200052d565b906200007d6200052d565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003f557600b54916001968784811c94168015620004e3575b89851014620004cf578190601f948581116200047b575b5089908583116001146200041557889262000409575b5050600019600383901b1c191690871b17600b555b8051928311620003f557600c548681811c91168015620003ea575b88821014620003d65790818389959493116200037e575b50839183116001146200031357600494929186918362000307575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002fd57908291899391620002b2575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d555161545890816200055f82396080518181816104cd01528181610790015281816108d801528181610a4701528181610c100152818161150c01528181611fe601528181612179015281816128c60152818161419901526146f3015260a051816116d0015260c0518181816119380152818161490a01528181614b2801528181614cc40152614d49015260e051816124000152f35b80929350858092503d8311620002f5575b620002cf8183620004f3565b81010312620002f1575161ffff81168103620002f15787919061ffff620001c5565b5080fd5b503d620002c3565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200036557509683600498106200034b575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200033c565b8289015184558b978b9690940193928301920162000327565b9091929350600c86528786208380860160051c8201928a8710620003cc575b9189918b97969594930160051c01915b828110620003bd57505062000162565b8881558a9650899101620003ad565b925081926200039d565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200046457505084116200044a575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200043b565b8385015186558d9790950194938401930162000428565b909150600b88528988208580850160051c8201928c8610620004c5575b918b91869594930160051c01915b828110620004b657505062000105565b8a81558594508b9101620004a6565b9250819262000498565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200051757604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005175760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103f057806301ffc9a7146103eb57806306fdde03146103e657806307e0db17146103e1578063095ea7b3146103dc5780630df37483146103d757806310ddb137146103d257806318160ddd1461036957806323b872dd146103cd578063313ce567146103c8578063365260b4146103c357806339509351146103be5780633d8b38f6146103b95780633f1f4fa4146103b457806342d65a8d146103af57806344770515146103aa5780634c42899a146103aa5780635b8c41e6146103a55780635c975abb146103a057806366ad5c8a1461039b578063695ef6bf1461039657806370a0823114610391578063715018a61461038c5780637533d7881461038757806376203b4814610382578063796fd43a1461037d578063857749b0146103785780638cfd8f5c146103735780638da5cb5b1461036e5780639358928b14610369578063940a1dc014610364578063950c8a741461035f57806395d89b411461035a5780639bb1bec6146103555780639bdb9812146103505780639d3f4d1a1461034b5780639f38369a14610346578063a457c2d714610341578063a4c51df51461033c578063a6c3d16514610337578063a9059cbb14610332578063b01127dc1461032d578063b353aaa714610328578063ba03a8d714610323578063baf3292d1461031e578063c446183414610319578063cbed8b9c14610314578063ce8849ed1461030f578063d1deba1f1461030a578063dbd01de114610305578063dd62ed3e14610300578063de406577146102fb578063df2a5b3b146102f6578063e6a20ae6146102f1578063eab45d9c146102ec578063eaffd49a146102e7578063eb8d72b7146102e2578063ec6d062b146102dd578063ed629c5c146102d8578063f2fde38b146102d3578063f5ecbdbc146102ce5763fc0c546a0361000e57612930565b61285c565b6127a7565b612784565b61274c565b612623565b61259a565b612538565b61251c565b61242f565b6123ea565b6123a0565b612377565b61223a565b612211565b612125565b612108565b612098565b612060565b611fd0565b611f20565b611df7565b611c95565b611bfe565b611b52565b611aaf565b611a91565b611a46565b611867565b6117c3565b61179a565b61177c565b610939565b611753565b6116f4565b6116b6565b6113c9565b611232565b6111db565b6110a7565b61106a565b610f87565b610ef3565b610ed0565b610e7c565b610c77565b610bf6565b610bbd565b610b4d565b610ac5565b6109bd565b610997565b610957565b6108af565b610870565b61083b565b610767565b610687565b6105ca565b6104b6565b61ffff81160361040157565b600080fd5b3590610411826103f5565b565b9181601f84011215610401578235916001600160401b038311610401576020838186019501011161040157565b6001600160401b0381160361040157565b9060806003198301126104015760043561046a816103f5565b916001600160401b0390602435828111610401578161048b91600401610413565b9390939260443561049b81610440565b92606435918211610401576104b291600401610413565b9091565b34610401576104c436610451565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105855761054a61055292610019976105436105296105248a61ffff166000526001602052604060002090565b6111c0565b805190818414918261057b575b5081610558575b506140a2565b3691610da8565b923691610da8565b926144b8565b9050610565368486610da8565b602081519101209060208151910120143861053d565b1515915038610536565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104015760203660031901126104015760043563ffffffff60e01b811680910361040157602090631f7ecdf760e01b811490811561060f575b506040519015158152f35b6301ffc9a760e01b14905038610604565b600091031261040157565b60005b83811061063e5750506000910152565b818101518382015260200161062e565b906020916106678151809281855285808601910161062b565b601f01601f1916010190565b90602061068492818152019061064e565b90565b34610401576000806003193601126107645760405181600b546106a9816110f0565b8084529060019081811690811561073c57506001146106e3575b6106df846106d381880382610d12565b60405191829182610673565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061072957505050816106df936106d392820101936106c3565b805485850187015292850192810161070d565b6106df96506106d39450602092508593915060ff191682840152151560051b820101936106c3565b80fd5b34610401576000602036600319011261076457600435610786816103f5565b61078e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107fd576107f1575080f35b6107fa90610ca9565b80f35b612dba565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361040157565b60e4359061041182610812565b359061041182610812565b346104015760403660031901126104015761086560043561085b81610812565b6024359033612b64565b602060405160018152f35b346104015760403660031901126104015761ffff600435610890816103f5565b61089861294b565b166000526003602052602435604060002055600080f35b346104015760006020366003190112610764576004356108ce816103f5565b6108d661294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107fd576107f1575080f35b34610401576000366003190112610401576020600a54604051908152f35b346104015760603660031901126104015761086560043561097781610812565b60243561098381610812565b60443591610992833383612c65565b612a95565b3461040157600036600319011261040157602060405160128152f35b8015150361040157565b346104015760a0366003190112610401576004356109da816103f5565b606435906109e7826109b3565b608435906001600160401b03821161040157610a0c6105436040933690600401610413565b90610a43610a26610a1e604435614cc2565b602435614d7e565b928451958694859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107fd576000908192610a94575b50604080519182526020820192909252f35b9050610ab7915060403d8111610abe575b610aaf8183610d12565b810190613879565b9038610a82565b503d610aa5565b3461040157604036600319011261040157600435610ae281610812565b336000526009602052610af9816040600020612049565b546024358101809111610b10576108659133612b64565b6129a3565b90604060031983011261040157600435610b2e816103f5565b91602435906001600160401b038211610401576104b291600401610413565b3461040157602061ffff610b9a610b6336610b15565b9390911660005260018452610b85610b8c60406000206040519283809261112a565b0382610d12565b848151910120923691610da8565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104015760203660031901126104015761ffff600435610bdd816103f5565b1660005260036020526020604060002054604051908152f35b3461040157610c0436610b15565b9190610c0e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561040157604051928380926342d65a8d60e01b825281610c656000988997889460048501614449565b03925af180156107fd576107f1575080f35b3461040157600036600319011261040157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbc57604052565b610c93565b608081019081106001600160401b03821117610cbc57604052565b606081019081106001600160401b03821117610cbc57604052565b604081019081106001600160401b03821117610cbc57604052565b601f909101601f19168101906001600160401b03821190821017610cbc57604052565b6040519060e082016001600160401b03811183821017610cbc57604052565b6040519061041182610cc1565b6040519060a082016001600160401b03811183821017610cbc57604052565b6040519061041182610cf7565b6001600160401b038111610cbc57601f01601f191660200190565b929192610db482610d8d565b91610dc26040519384610d12565b829481845281830111610401578281602093846000960137010152565b9080601f830112156104015781602061068493359101610da8565b90606060031983011261040157600435610e13816103f5565b91602435906001600160401b03821161040157610e3291600401610ddf565b9060443561068481610440565b602090610e5992826040519483868095519384920161062b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610401576020610ec761ffff610eb983610e9636610dfa565b94909116600052600582526040600020826040519483868095519384920161062b565b820190815203019020610e65565b54604051908152f35b3461040157600036600319011261040157602060ff601154166040519015158152f35b3461040157610f0136610451565b9192949390303303610f255761054a610f1f92610019973691610da8565b926148ab565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126104015790565b60a036600319011261040157600435610f9f81610812565b602435610fab816103f5565b604435916084356001600160401b03811161040157602061ffff610fe2600080516020615363833981519152933690600401610f79565b936110558535610ff181610812565b61100f61054386890135986110058a610812565b6040810190612e26565b611019818a614c73565b61102e611027606435614d47565b5085614f3c565b9761103a891515614a16565b61104c6110468a614cc2565b8c614d7e565b9234938b614155565b6040519485526001600160a01b0316941692a4005b346104015760203660031901126104015760043561108781610812565b60018060a01b031660005260086020526020604060002054604051908152f35b3461040157600080600319360112610764576110c161294b565b80546001600160a01b03198116825581906001600160a01b03166000805160206153c38339815191528280a380f35b90600182811c92168015611120575b602083101461110a57565b634e487b7160e01b600052602260045260246000fd5b91607f16916110ff565b906000929180549161113b836110f0565b91828252600193848116908160001461119d575060011461115d575b50505050565b90919394506000526020928360002092846000945b838610611189575050505001019038808080611157565b805485870183015294019385908201611172565b9294505050602093945060ff191683830152151560051b01019038808080611157565b906104116111d4926040519384809261112a565b0383610d12565b346104015760203660031901126104015761ffff6004356111fb816103f5565b1660005260016020526106df610b8561121e60406000206040519283809261112a565b60405191829160208352602083019061064e565b60e03660031901126104015760043561124a81610812565b602435611256816103f5565b604435916001600160401b03906084358281116104015761127b903690600401610413565b91909260a43561128a81610440565b60c435828111610401576112a2903690600401610f79565b90866112da8335966112b388610812565b6112d26112c860208701359661100588610812565b9a90923691610da8565b983691610da8565b9360ff6006541660001461134757936020959361104c846113156000805160206153638339815191529a958561ffff9a611055991691614366565b61132a611323606435614d47565b5088614f3c565b9a6113368c1515614a16565b8d6113408d614cc2565b9033614df9565b50508293919251611375576000805160206153638339815191529460209461ffff9461104c61105594611315565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b600319610100368201126104015760043590602435906113e882610812565b604435906001600160401b038083116104015760e0836004019284360301126104015760643590811161040157611423903690600401610f79565b926080366083190112610401576001600160a01b03943382871603611688575b61145961144f86612d49565b8716301415612d53565b6020916114698387013583613099565b61147c611477600d54610806565b610806565b936114ce84604488019661148f88612d9b565b90611498612d3d565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107fd576004946114f26114f792889460009161165b575b50612dc6565b614d47565b5098604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107fd5761160d976115a3611601966115fb966116069a61162e575b506115588c33614f3c565b506115958c60848601978761158561157b6115766105438d85612e26565b613fef565b5095915050614cc2565b9660405197889633908801612fa6565b03601f198101835282610d12565b6115c26115af88612d9b565b6115bc6105438787612e26565b906142dd565b6115f06115ce88612d9b565b946115ea60646115e361147760c48801612d49565b9501612d49565b94612e26565b959034963691610da8565b93614155565b612d9b565b61ffff1690565b604051918252339182919060008051602061536383398151915290602090a4005b61164d90823d8411611654575b6116458183610d12565b810190612e11565b503861154d565b503d61163b565b61167b9150853d8711611681575b6116738183610d12565b810190612da5565b386114ec565b503d611669565b6116a68161169e336116998661202f565b612049565b541015612cf5565b6116b1813384612c65565b611443565b3461040157600036600319011261040157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610401576040366003190112610401576020610ec7600435611716816103f5565b61ffff60243591611726836103f5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610401576000366003190112610401576000546040516001600160a01b039091168152602090f35b34610401576000366003190112610401576020601254604051908152f35b34610401576000366003190112610401576004546040516001600160a01b039091168152602090f35b34610401576000806003193601126107645760405181600c546117e5816110f0565b8084529060019081811690811561073c575060011461180e576106df846106d381880382610d12565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061185457505050816106df936106d392820101936106c3565b8054858501870152928501928101611838565b346104015760a03660031901126104015760043561188481610812565b602435611890816103f5565b6001600160401b03604435818111610401576118b0903690600401610ddf565b90606435926118be84610440565b608435828111610401576118d6903690600401610ddf565b926118e23330146130f4565b6001600160a01b03861660009081526014602052604090205460ff1661190790613139565b8084518501602001602086019061191d916132c3565b9b965090919b9450600160a09d93949d1b60019003169b8c997f000000000000000000000000000000000000000000000000000000000000000091169061196391613045565b9a8b809b8a82883061197490612015565b549c61197f9361367d565b61198830612015565b549b6040519485946020860198632c0449f760e21b8a5260248701956119ad96613401565b03601f19810182526119bf9082610d12565b515a92600093928493f4926119d2613495565b93159761ffff976000805160206153a383398151915299611a10575b50505050505050611a0b6040519283921694829190602083019252565b0390a3005b611a2a96611a1d9161308c565b1015611a36575b8561454c565b388080808088816119ee565b611a41898b306134e0565b611a24565b3461040157602060ff611a8561ffff610eb984611a6236610dfa565b94909116600052600782526040600020826040519483868095519384920161062b565b54166040519015158152f35b34610401576000366003190112610401576020601354604051908152f35b346104015760203660031901126104015761ffff600435611acf816103f5565b166000526001602052610b85611aef60406000206040519283809261112a565b805115611b0d576106d381611b076106df935161306e565b90615156565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461040157604036600319011261040157600435611b6f81610812565b60243590336000526009602052611b8a816040600020612049565b5491808310611bab57611b9f92039033612b64565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104015760e036600319011261040157600435611c1b816103f5565b6001600160401b039060643582811161040157611c3c903690600401610413565b608492919235611c4b81610440565b60a43591611c58836109b3565b60c43595861161040157611c73611c83963690600401610413565b95909460443590602435906146a3565b60408051928352602083019190915290f35b3461040157611ca336610b15565b90611cac61294b565b60405192602092808385870137611cd86034868381013060601b88820152036014810188520186610d12565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cbc57611d1583611d0f86546110f0565b86614464565b80601f8411600114611d73575091808092611d629695948a9b6000805160206153838339815191529b94611d68575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611d44565b91939498601f198416611d8b87600052602060002090565b938a905b828210611de057505091600080516020615383833981519152999a95939185611d6298969410611dc7575b505050811b019055611d56565b015160001960f88460031b161c19169055388080611dba565b808886978294978701518155019601940190611d8f565b3461040157604036600319011261040157610865600435611e1781610812565b6024359033612a95565b60809060431901126104015760405190611e3a82610cc1565b81604435611e4781610812565b8152606435611e5581610812565b6020820152608435611e6681610812565b6040820152606060a43591611e7a83610812565b0152565b91909160e08184031261040157611e93610d35565b9281358452611ea460208301610406565b6020850152611eb560408301610406565b6040850152611ec660608301610830565b60608501526001600160401b039160808101358381116104015782611eec918301610ddf565b608086015260a081013592831161040157611f0e60c092611f19948301610ddf565b60a086015201610830565b60c0830152565b60031961012036820112610401576001600160401b0390602435908282116104015760609082360301126104015760405190611f5b82610cdc565b8060040135611f6981610812565b825260248101356020830152604481013590838211610401576004611f919236920101610ddf565b6040820152611f9f36611e21565b60c43592831161040157611fba610019933690600401611e7e565b611fc2610823565b916101043593600435613b1e565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461040157604036600319011261040157602060ff611a8560243561208481610812565b600435600052600f84526040600020612049565b34610401576020366003190112610401577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356120d881610812565b6120e061294b565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346104015760003660031901126104015760206040516127108152f35b3461040157608036600319011261040157600435612142816103f5565b60243561214e816103f5565b6064356001600160401b0381116104015761216d903690600401610413565b909261217761294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561040157600080946121ee604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612e8a565b03925af180156107fd576121fe57005b8061220b61001992610ca9565b80610620565b3461040157600036600319011261040157600e546040516001600160a01b039091168152602090f35b61224336610451565b9161ffff8694929616600052600560205261227781604060002060206040518092878b833787820190815203019020610e65565b5491821561232657612315848361230e7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006122fa846122f58e8a8f6123219f908f6122db906122ce6122ef9436908d610da8565b6020815191012014614616565b61ffff166000526005602052604060002090565b916145fd565b610e65565b5561230636878d610da8565b933691610da8565b91886148ab565b6040519586958661466c565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461040157600036600319011261040157600d546040516001600160a01b039091168152602090f35b34610401576040366003190112610401576020610ec76004356123c281610812565b602435906123cf82610812565b6001600160a01b031660009081526009845260409020612049565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104015760603660031901126104015760043561244c816103f5565b602435612458816103f5565b6044359161246461294b565b82156124df576123217f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124b98560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461040157600036600319011261040157602060405160018152f35b34610401576020366003190112610401577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612578816109b3565b61258061294b565b151560ff196006541660ff821617600655604051908152a1005b3461040157610100366003190112610401576004356125b8816103f5565b6001600160401b0390602435828111610401576125d9903690600401610413565b9190604435906125e882610440565b6084356125f481610812565b60c4359586116104015761260f610019963690600401610413565b94909360e4359660a435946064359361479a565b346104015761263136610b15565b919061263b61294b565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cbc576126778761267185546110f0565b85614464565b8590601f88116001146126cc5750918680879893611d629560008051602061540383398151915299936126c1575b501b906000198460031b1c191617905560405193849384614449565b8801359250386126a5565b90601f1988166126e185600052602060002090565b9288905b828210612735575050918893916000805160206154038339815191529899611d6296941061271b575b505082811b019055611d56565b870135600019600386901b60f8161c19169055388061270e565b808685968294968c013581550195019301906126e5565b3461040157604036600319011261040157602060ff611a8560243561277081610812565b600435600052601084526040600020612049565b3461040157600036600319011261040157602060ff600654166040519015158152f35b34610401576020366003190112610401576004356127c481610812565b6127cc61294b565b6001600160a01b03908116801561280857600080546001600160a01b03198116831782559092166000805160206153c38339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461040157608036600319011261040157600435612879816103f5565b60243590612886826103f5565b612891604435610812565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107fd576106df9160009161290f575b5060405191829182610673565b61292a913d8091833e6129228183610d12565b810190614424565b38612902565b34610401576000366003190112610401576020604051308152f35b6000546001600160a01b0316330361295f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b1057565b6051019081605111610b1057565b91908201809211610b1057565b156129e957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a4157565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612b1157612af6826000805160206153e383398151915294612b0c941696612acf8815156129e2565b612af084612adc83612015565b54612ae982821015612a3a565b0391612015565b55612015565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c14578216938415612bc45780612bb37f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594611699612b0c9561202f565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612c85816040600020612049565b549260018401612c955750505050565b808410612cb057612ca7930391612b64565b38808080611157565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612cfc57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60843561068481610812565b3561068481610812565b15612d5a57565b60405162461bcd60e51b81526020600482015260196024820152781554d113ce881d1bdad95b881bdd5d081b9bdd081d985b1a59603a1b6044820152606490fd5b35610684816103f5565b908160209103126104015751610684816109b3565b6040513d6000823e3d90fd5b15612dcd57565b60405162461bcd60e51b81526020600482015260116024820152701513d19517d5539055551213d492569151607a1b6044820152606490fd5b5190610411826103f5565b908160209103126104015751610684816103f5565b903590601e198136030182121561040157018035906001600160401b0382116104015760200191813603831361040157565b9035601e1982360301811215610401570160208101919035906001600160401b03821161040157813603831361040157565b908060209392818452848401376000828201840152601f01601f1916010190565b6060608435612eb981610812565b6001600160a01b0390811683528060a435612ed381610812565b1660208401528060c435612ee681610812565b16604084015260e435612ef881610812565b16910152565b9061068490823581526020830135612f15816103f5565b61ffff80911660208301526040840135612f2e816103f5565b1660408201526060830135612f4281610812565b6001600160a01b0316606082015260c080612f92612f77612f666080880188612e58565b60e0608088015260e0870191612e8a565b612f8460a0880188612e58565b9086830360a0880152612e8a565b94013591612f9f83610812565b0190611746565b929361301e61300b61014096611e7a95613039959b9a999b6103078952602089015260018060401b031660408801526101608060608901528135612fe981610812565b6001600160a01b03169088015260208101356101808801526040810190612e58565b60606101a08801526101c0870191612e8a565b9061302b60808601612eab565b848203610100860152612efe565b95610120830190611746565b81810292918115918404141715610b1057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610b1057565b605019810191908211610b1057565b91908203918211610b1057565b906101f48281029081048303610b105761271090048203918211610b1057106130be57565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156130fb57565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561314057565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b519061041182610812565b81601f8201121561040157805161319f81610d8d565b926131ad6040519485610d12565b8184526020828401011161040157610684916020808501910161062b565b9190826080910312610401576040516131e381610cc1565b606080829480516131f381610812565b8452602081015161320381610812565b6020850152604081015161321681610812565b6040850152015191611e7a83610812565b91909160e0818403126104015761323c610d35565b928151845261324d60208301612e06565b602085015261325e60408301612e06565b604085015261326f6060830161317e565b606085015260808201516001600160401b0392908381116104015782613296918301613189565b608086015260a0810151928311610401576132b860c092611f19948301613189565b60a08601520161317e565b91610160838303126104015782516132da816103f5565b9260208101519260408201516132ef81610440565b606083015190936001600160401b03939091848111610401578101606081850312610401576040519061332182610cdc565b805161332c81610812565b8252602081015160208301526040810151908682116104015761335191869101613189565b60408201529361336484608084016131cb565b936101008301519182116104015761337d918301613227565b9161014061338e610120840161317e565b92015190565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b03806060850151166060840152816133f76133e5608087015160e0608088015260e087019061064e565b60a087015186820360a088015261064e565b9401511691015290565b9261010094611e7a9361348a9399989799865260606134546040610120938460208b015260018060a01b039485825116908b015260208101516101408b01520151826101608a015261018089019061064e565b93828151166040890152826020820151168289015282604082015116608089015201511660a086015284820360c0860152613394565b9560e0830190611746565b3d156134c0573d906134a682610d8d565b916134b46040519384610d12565b82523d6000602084013e565b606090565b6001600160a01b039091168152602081019190915260400190565b61356c916000806040519361351a8561350c6020998a83019763a9059cbb60e01b8952602484016134c5565b03601f198101875286610d12565b60018060a01b0316926040519461353086610cf7565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613566613495565b916135e8565b8051908161357957505050565b8280613589938301019101612da5565b156135915750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561364a57508151156135fc575090565b3b156136055790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561365d5750805190602001fd5b60405162461bcd60e51b81529081906136799060048301610673565b0390fd5b9291909261ffff8116600052600760205260ff6136b18360406000206020604051809282610eb98c8481519384920161062b565b5416156136be5750505050565b301561373657612ca7936137236122f592856136e76136e261372998600a546129d5565b600a55565b6136f030612015565b81815401905560006000805160206153e38339815191526040518061371b3095829190602083019252565b0390a3610ba9565b90610e3f565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b919082604091031261040157604080519081016001600160401b03811182821017610cbc57604052602080829480516137b3816109b3565b8452015191611e7a836109b3565b90818103916101408312610401576040918251936137de85610cdc565b608081126104015760809084516137f481610cc1565b84516137ff81610812565b8152602085015160208201528585015161381881610812565b86820152606085015160608201528652607f1901126104015761010061387292845161384381610cc1565b6080820151815260a0820151602082015260c08201518682015260e0820151606082015260208701520161377b565b9082015290565b9190826040910312610401576020825192015190565b9192610684949361390d604061391e946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b610140840152610160830190611746565b6101a09081610180820152019061064e565b6040519061393d82610cf7565b6002825261060f60f31b6020830152565b9060a06080610684938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061064e565b60608051808352602080930192608080936000915b8483106139b65750505050505090565b909192939495846101a060019289516139d182825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152613a038682015187840190611746565b60a081810151151590830152613a2160c08083015190840190611746565b613a3360e08083015190840190611746565b610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520197019594930191906139a6565b94916060613abd613b109661ffff613af1976106849c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061064e565b9380516080890152602081015160a08901528260408201511660c089015201511660e086015284820361010086015261394e565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613991565b9390929194613b31611477600d54610806565b93613b3c8751610806565b60408051633a304d8b60e21b815260006004808301919091526001600160a01b03939093166024820152602097929391928890829060449082905afa80156107fd57613b8f91600091613f5d5750612dc6565b613ba388613b9d8b51610806565b30612b64565b613bb36114776114778b51610806565b97613bbe8251610806565b8351631fd177af60e11b8152308682019081526001600160a01b03909216602083015260408201929092526000606082018190526080820181905260a082015290986101409182918b918290819060c00103915afa80156107fd57613c62998492600092613f30575b5050613c396114776114778d51610806565b89840151916000848601519385519d8e958694859363efa84c6d60e01b855230918d860161388f565b03925af19788156107fd57600098613f10575b5080516001600160a01b0390613c8a90610806565b1680613e39575b5081890190613cb3611477613cac6114776114778651610806565b9251610806565b600090613e33575088905b803b15610401578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107fd57613d17926114779261147792613e20575b5051610806565b94613d268782015161ffff1690565b96613d7d60a08301519a613d6d613d4c6060613d4486850151610806565b930151610806565b91600085613d58610d54565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b613dd9613d88610d61565b916000835260008184015260008584015260006060840152613da8613930565b6080840152613dbc60608551950151610806565b90613dc5610d80565b9485526001600160a01b0390911690840152565b863b1561040157600098613e0293519a8b998a988997633a2544b560e01b895230908901613a7b565b03925af180156107fd57613e135750565b8061220b61041192610ca9565b8061220b613e2d92610ca9565b38613d10565b90613cbe565b828a0190613e478251610806565b91898551809381600081613e7e63095ea7b360e01b998a83528d83016020600091939293604081019460018060a01b031681520152565b03925af19081156107fd57613ec7938b938d93613ef3575b506000613eb3613eac6114776114778a51610806565b9351610806565b9188519687958694859384528c84016134c5565b03925af180156107fd5715613c9157613eec90883d8a11611681576116738183610d12565b5038613c91565b613f0990853d8711611681576116738183610d12565b5038613e96565b613f28919850823d8411610abe57610aaf8183610d12565b509638613c75565b613f4f9250803d10613f56575b613f478183610d12565b8101906137c1565b3880613c27565b503d613f3d565b61167b9150893d8b11611681576116738183610d12565b15613f7b57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15613fbc57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115614097575b501561405a57600283015193602284015193600261ffff8716600181148015614051575b61402d90613f74565b614038871515613fb5565b146140405750565b925090506056604283015192015190565b50808214614024565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138614000565b156140a957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261412261068497959361ffff6141309416865260c0602087015260c086019061064e565b90848203604086015261064e565b6001600160a01b0391821660608401529316608082015280830360a09091015261064e565b9461417e9193929561ffff8116600052600160205261418560406000206040519485809261112a565b0384610d12565b8251156141ec576141978551826143b5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561040157600096613e0291604051998a988997889662c5803160e81b8852600488016140fd565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b1561425157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561429a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106143225761ffff60226104119301519116600052600260205260406000206103076000526020526040600020549061431b82151561424a565b1015614293565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9190602281511061432257602261ffff9101519216600052600260205261439b60406000206001600052602052604060002090565b54908101809111610b10576104119161431b82151561424a565b61ffff16600052600360205260406000205490811561441a575b116143d657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506143cf565b906020828203126104015781516001600160401b038111610401576106849201613189565b60409061ffff61068495931681528160208201520191612e8a565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b92909161452a5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614524826145166144f560a483018a61064e565b6001600160401b03881660648401528281036023190160848401528861064e565b03601f198101845283610d12565b30615305565b939015614539575b5050505050565b6145429461454c565b3880808080614532565b91936145ea7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956145f8939561ffff815160208301209616958660005260056020526145b083610eb960208b6040600020826040519483868095519384920161062b565b556145cd604051978897885260a0602089015260a088019061064e565b6001600160401b039092166040870152858203606087015261064e565b90838203608085015261064e565b0390a1565b6020919283604051948593843782019081520301902090565b1561461d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff61468f9398979698168452608060208501526080840191612e8a565b6001600160401b0390951660408201520152565b9491959897906113406146cc6040996146c46146d2976146ef993691610da8565b943691610da8565b97614cc2565b928451968794859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107fd57600090819361473257509190565b90506104b291925060403d8111610abe57610aaf8183610d12565b9396949161068498969361ffff6147729316865260c0602087015260c0860191612e8a565b6001600160401b0390961660408401526060830152608082015280840360a090910152612e8a565b91969792989594939094303303614822576147b69085306150a2565b60405181815290946001600160a01b03169390849061ffff8516906000805160206153a383398151915290602090a3833b15610401576000988995614812936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a0161474d565b0393f180156107fd57613e135750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610684959361ffff6148969316845260018060a01b0316602084015260a0604084015260a083019061064e565b9215156060820152608081840391015261064e565b92919060ff6148b9846152aa565b16806149c25750505060ff6148cd826152aa565b1615806149b7575b6148de90614db2565b6148f06148ea8261525a565b916152f5565b90916001600160a01b0391828416156149ad575b614938907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316613045565b918316928315613736576000805160206153a38339815191529161496d61ffff926149686136e287600a546129d5565b612015565b8481540190558460006000805160206153e38339815191526040518061499889829190602083019252565b0390a360405193845216918060208101612b0c565b61dead9350614904565b5080516029146148d5565b6001036149d25761041193614aeb565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15614a1d57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9897969293614a8860e0979361ffff614abd9894168c5260208c61010091829101528c019061064e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261064e565b930152565b614ada6040929594939560608352606083019061064e565b94600180841b031660208201520152565b9091614af684614e63565b9091614b18614b11876122f5614b0b8b610ba9565b8c610e3f565b5460ff1690565b916001600160401b0391614b4f907f0000000000000000000000000000000000000000000000000000000000000000908416613045565b9288888b8315614c4b575b505050853b15614c005794614ba19694614524948a94614516948d99600014614bf95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614a5e565b9015614bee575090614be961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614ac2565b0390a2565b92610411949261454c565b1692614b82565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506145f8915050565b906122f56137299261372389614c65614c6b979b30615052565b99610ba9565b88888b614b5a565b60065460ff1615614cba5760228251106143225761ffff6022610411930151911660005260026020526040600020600080526020526040600020549061431b82151561424a565b505161137557565b7f0000000000000000000000000000000000000000000000000000000000000000908115614d42576001600160401b03919004818111614d00571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b613058565b7f00000000000000000000000000000000000000000000000000000000000000008015614d4257810690818103908111610b105791565b60405160006020820152602181019190915260c09190911b6001600160c01b03191660418201526029815261068481610cdc565b15614db957565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261068494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152614e53815180926020868601910161062b565b8101036051810184520182610d12565b90614e7b600160ff614e74856152aa565b1614614db2565b614e848261525a565b90614e8e836152f5565b906049845110614eff576049840151936051815110614ec357614ec0605182015191614eba815161307d565b906151d6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614feb575b8015614f9c5781614f7184614f64600095612015565b54612ae982821015614ffb565b55614f7f83600a5403600a55565b6040518381526000805160206153e383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614ff6833384612c65565b614f4e565b1561500257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561373657600a5490828201809211610b10576000926150936020926000805160206153e383398151915294600a55612015565b818154019055604051908152a3565b6106849183916001600160a01b0381163081141590816150ce575b5015612a9557610992833383612c65565b9050331415386150bd565b156150e057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561511d57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61516a82615163816129b9565b10156150d9565b6151778282511015615116565b8161518f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106151c35750508252601f01601f191660405290565b90928351815260208091019301906151ab565b6151e382615163816129b9565b6151f881516151f1846129c7565b1115615116565b81615210575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106152475750508252601f01601f191660405290565b909283518152602080910193019061522f565b602181511061526d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106152ba576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614ec3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbc5783926040526096875282602088019560a036883760208451940192f1903d9060968211615359575b6000908286523e9190565b6096915061534e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212205a58beaaeade69043873c04550af59601a94c42f114100a013d207bef2ab9b3364736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103f057806301ffc9a7146103eb57806306fdde03146103e657806307e0db17146103e1578063095ea7b3146103dc5780630df37483146103d757806310ddb137146103d257806318160ddd1461036957806323b872dd146103cd578063313ce567146103c8578063365260b4146103c357806339509351146103be5780633d8b38f6146103b95780633f1f4fa4146103b457806342d65a8d146103af57806344770515146103aa5780634c42899a146103aa5780635b8c41e6146103a55780635c975abb146103a057806366ad5c8a1461039b578063695ef6bf1461039657806370a0823114610391578063715018a61461038c5780637533d7881461038757806376203b4814610382578063796fd43a1461037d578063857749b0146103785780638cfd8f5c146103735780638da5cb5b1461036e5780639358928b14610369578063940a1dc014610364578063950c8a741461035f57806395d89b411461035a5780639bb1bec6146103555780639bdb9812146103505780639d3f4d1a1461034b5780639f38369a14610346578063a457c2d714610341578063a4c51df51461033c578063a6c3d16514610337578063a9059cbb14610332578063b01127dc1461032d578063b353aaa714610328578063ba03a8d714610323578063baf3292d1461031e578063c446183414610319578063cbed8b9c14610314578063ce8849ed1461030f578063d1deba1f1461030a578063dbd01de114610305578063dd62ed3e14610300578063de406577146102fb578063df2a5b3b146102f6578063e6a20ae6146102f1578063eab45d9c146102ec578063eaffd49a146102e7578063eb8d72b7146102e2578063ec6d062b146102dd578063ed629c5c146102d8578063f2fde38b146102d3578063f5ecbdbc146102ce5763fc0c546a0361000e57612930565b61285c565b6127a7565b612784565b61274c565b612623565b61259a565b612538565b61251c565b61242f565b6123ea565b6123a0565b612377565b61223a565b612211565b612125565b612108565b612098565b612060565b611fd0565b611f20565b611df7565b611c95565b611bfe565b611b52565b611aaf565b611a91565b611a46565b611867565b6117c3565b61179a565b61177c565b610939565b611753565b6116f4565b6116b6565b6113c9565b611232565b6111db565b6110a7565b61106a565b610f87565b610ef3565b610ed0565b610e7c565b610c77565b610bf6565b610bbd565b610b4d565b610ac5565b6109bd565b610997565b610957565b6108af565b610870565b61083b565b610767565b610687565b6105ca565b6104b6565b61ffff81160361040157565b600080fd5b3590610411826103f5565b565b9181601f84011215610401578235916001600160401b038311610401576020838186019501011161040157565b6001600160401b0381160361040157565b9060806003198301126104015760043561046a816103f5565b916001600160401b0390602435828111610401578161048b91600401610413565b9390939260443561049b81610440565b92606435918211610401576104b291600401610413565b9091565b34610401576104c436610451565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105855761054a61055292610019976105436105296105248a61ffff166000526001602052604060002090565b6111c0565b805190818414918261057b575b5081610558575b506140a2565b3691610da8565b923691610da8565b926144b8565b9050610565368486610da8565b602081519101209060208151910120143861053d565b1515915038610536565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104015760203660031901126104015760043563ffffffff60e01b811680910361040157602090631f7ecdf760e01b811490811561060f575b506040519015158152f35b6301ffc9a760e01b14905038610604565b600091031261040157565b60005b83811061063e5750506000910152565b818101518382015260200161062e565b906020916106678151809281855285808601910161062b565b601f01601f1916010190565b90602061068492818152019061064e565b90565b34610401576000806003193601126107645760405181600b546106a9816110f0565b8084529060019081811690811561073c57506001146106e3575b6106df846106d381880382610d12565b60405191829182610673565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061072957505050816106df936106d392820101936106c3565b805485850187015292850192810161070d565b6106df96506106d39450602092508593915060ff191682840152151560051b820101936106c3565b80fd5b34610401576000602036600319011261076457600435610786816103f5565b61078e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107fd576107f1575080f35b6107fa90610ca9565b80f35b612dba565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361040157565b60e4359061041182610812565b359061041182610812565b346104015760403660031901126104015761086560043561085b81610812565b6024359033612b64565b602060405160018152f35b346104015760403660031901126104015761ffff600435610890816103f5565b61089861294b565b166000526003602052602435604060002055600080f35b346104015760006020366003190112610764576004356108ce816103f5565b6108d661294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107fd576107f1575080f35b34610401576000366003190112610401576020600a54604051908152f35b346104015760603660031901126104015761086560043561097781610812565b60243561098381610812565b60443591610992833383612c65565b612a95565b3461040157600036600319011261040157602060405160128152f35b8015150361040157565b346104015760a0366003190112610401576004356109da816103f5565b606435906109e7826109b3565b608435906001600160401b03821161040157610a0c6105436040933690600401610413565b90610a43610a26610a1e604435614cc2565b602435614d7e565b928451958694859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107fd576000908192610a94575b50604080519182526020820192909252f35b9050610ab7915060403d8111610abe575b610aaf8183610d12565b810190613879565b9038610a82565b503d610aa5565b3461040157604036600319011261040157600435610ae281610812565b336000526009602052610af9816040600020612049565b546024358101809111610b10576108659133612b64565b6129a3565b90604060031983011261040157600435610b2e816103f5565b91602435906001600160401b038211610401576104b291600401610413565b3461040157602061ffff610b9a610b6336610b15565b9390911660005260018452610b85610b8c60406000206040519283809261112a565b0382610d12565b848151910120923691610da8565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104015760203660031901126104015761ffff600435610bdd816103f5565b1660005260036020526020604060002054604051908152f35b3461040157610c0436610b15565b9190610c0e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561040157604051928380926342d65a8d60e01b825281610c656000988997889460048501614449565b03925af180156107fd576107f1575080f35b3461040157600036600319011261040157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbc57604052565b610c93565b608081019081106001600160401b03821117610cbc57604052565b606081019081106001600160401b03821117610cbc57604052565b604081019081106001600160401b03821117610cbc57604052565b601f909101601f19168101906001600160401b03821190821017610cbc57604052565b6040519060e082016001600160401b03811183821017610cbc57604052565b6040519061041182610cc1565b6040519060a082016001600160401b03811183821017610cbc57604052565b6040519061041182610cf7565b6001600160401b038111610cbc57601f01601f191660200190565b929192610db482610d8d565b91610dc26040519384610d12565b829481845281830111610401578281602093846000960137010152565b9080601f830112156104015781602061068493359101610da8565b90606060031983011261040157600435610e13816103f5565b91602435906001600160401b03821161040157610e3291600401610ddf565b9060443561068481610440565b602090610e5992826040519483868095519384920161062b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610401576020610ec761ffff610eb983610e9636610dfa565b94909116600052600582526040600020826040519483868095519384920161062b565b820190815203019020610e65565b54604051908152f35b3461040157600036600319011261040157602060ff601154166040519015158152f35b3461040157610f0136610451565b9192949390303303610f255761054a610f1f92610019973691610da8565b926148ab565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126104015790565b60a036600319011261040157600435610f9f81610812565b602435610fab816103f5565b604435916084356001600160401b03811161040157602061ffff610fe2600080516020615363833981519152933690600401610f79565b936110558535610ff181610812565b61100f61054386890135986110058a610812565b6040810190612e26565b611019818a614c73565b61102e611027606435614d47565b5085614f3c565b9761103a891515614a16565b61104c6110468a614cc2565b8c614d7e565b9234938b614155565b6040519485526001600160a01b0316941692a4005b346104015760203660031901126104015760043561108781610812565b60018060a01b031660005260086020526020604060002054604051908152f35b3461040157600080600319360112610764576110c161294b565b80546001600160a01b03198116825581906001600160a01b03166000805160206153c38339815191528280a380f35b90600182811c92168015611120575b602083101461110a57565b634e487b7160e01b600052602260045260246000fd5b91607f16916110ff565b906000929180549161113b836110f0565b91828252600193848116908160001461119d575060011461115d575b50505050565b90919394506000526020928360002092846000945b838610611189575050505001019038808080611157565b805485870183015294019385908201611172565b9294505050602093945060ff191683830152151560051b01019038808080611157565b906104116111d4926040519384809261112a565b0383610d12565b346104015760203660031901126104015761ffff6004356111fb816103f5565b1660005260016020526106df610b8561121e60406000206040519283809261112a565b60405191829160208352602083019061064e565b60e03660031901126104015760043561124a81610812565b602435611256816103f5565b604435916001600160401b03906084358281116104015761127b903690600401610413565b91909260a43561128a81610440565b60c435828111610401576112a2903690600401610f79565b90866112da8335966112b388610812565b6112d26112c860208701359661100588610812565b9a90923691610da8565b983691610da8565b9360ff6006541660001461134757936020959361104c846113156000805160206153638339815191529a958561ffff9a611055991691614366565b61132a611323606435614d47565b5088614f3c565b9a6113368c1515614a16565b8d6113408d614cc2565b9033614df9565b50508293919251611375576000805160206153638339815191529460209461ffff9461104c61105594611315565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b600319610100368201126104015760043590602435906113e882610812565b604435906001600160401b038083116104015760e0836004019284360301126104015760643590811161040157611423903690600401610f79565b926080366083190112610401576001600160a01b03943382871603611688575b61145961144f86612d49565b8716301415612d53565b6020916114698387013583613099565b61147c611477600d54610806565b610806565b936114ce84604488019661148f88612d9b565b90611498612d3d565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107fd576004946114f26114f792889460009161165b575b50612dc6565b614d47565b5098604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107fd5761160d976115a3611601966115fb966116069a61162e575b506115588c33614f3c565b506115958c60848601978761158561157b6115766105438d85612e26565b613fef565b5095915050614cc2565b9660405197889633908801612fa6565b03601f198101835282610d12565b6115c26115af88612d9b565b6115bc6105438787612e26565b906142dd565b6115f06115ce88612d9b565b946115ea60646115e361147760c48801612d49565b9501612d49565b94612e26565b959034963691610da8565b93614155565b612d9b565b61ffff1690565b604051918252339182919060008051602061536383398151915290602090a4005b61164d90823d8411611654575b6116458183610d12565b810190612e11565b503861154d565b503d61163b565b61167b9150853d8711611681575b6116738183610d12565b810190612da5565b386114ec565b503d611669565b6116a68161169e336116998661202f565b612049565b541015612cf5565b6116b1813384612c65565b611443565b3461040157600036600319011261040157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610401576040366003190112610401576020610ec7600435611716816103f5565b61ffff60243591611726836103f5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610401576000366003190112610401576000546040516001600160a01b039091168152602090f35b34610401576000366003190112610401576020601254604051908152f35b34610401576000366003190112610401576004546040516001600160a01b039091168152602090f35b34610401576000806003193601126107645760405181600c546117e5816110f0565b8084529060019081811690811561073c575060011461180e576106df846106d381880382610d12565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061185457505050816106df936106d392820101936106c3565b8054858501870152928501928101611838565b346104015760a03660031901126104015760043561188481610812565b602435611890816103f5565b6001600160401b03604435818111610401576118b0903690600401610ddf565b90606435926118be84610440565b608435828111610401576118d6903690600401610ddf565b926118e23330146130f4565b6001600160a01b03861660009081526014602052604090205460ff1661190790613139565b8084518501602001602086019061191d916132c3565b9b965090919b9450600160a09d93949d1b60019003169b8c997f000000000000000000000000000000000000000000000000000000000000000091169061196391613045565b9a8b809b8a82883061197490612015565b549c61197f9361367d565b61198830612015565b549b6040519485946020860198632c0449f760e21b8a5260248701956119ad96613401565b03601f19810182526119bf9082610d12565b515a92600093928493f4926119d2613495565b93159761ffff976000805160206153a383398151915299611a10575b50505050505050611a0b6040519283921694829190602083019252565b0390a3005b611a2a96611a1d9161308c565b1015611a36575b8561454c565b388080808088816119ee565b611a41898b306134e0565b611a24565b3461040157602060ff611a8561ffff610eb984611a6236610dfa565b94909116600052600782526040600020826040519483868095519384920161062b565b54166040519015158152f35b34610401576000366003190112610401576020601354604051908152f35b346104015760203660031901126104015761ffff600435611acf816103f5565b166000526001602052610b85611aef60406000206040519283809261112a565b805115611b0d576106d381611b076106df935161306e565b90615156565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461040157604036600319011261040157600435611b6f81610812565b60243590336000526009602052611b8a816040600020612049565b5491808310611bab57611b9f92039033612b64565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104015760e036600319011261040157600435611c1b816103f5565b6001600160401b039060643582811161040157611c3c903690600401610413565b608492919235611c4b81610440565b60a43591611c58836109b3565b60c43595861161040157611c73611c83963690600401610413565b95909460443590602435906146a3565b60408051928352602083019190915290f35b3461040157611ca336610b15565b90611cac61294b565b60405192602092808385870137611cd86034868381013060601b88820152036014810188520186610d12565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cbc57611d1583611d0f86546110f0565b86614464565b80601f8411600114611d73575091808092611d629695948a9b6000805160206153838339815191529b94611d68575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611d44565b91939498601f198416611d8b87600052602060002090565b938a905b828210611de057505091600080516020615383833981519152999a95939185611d6298969410611dc7575b505050811b019055611d56565b015160001960f88460031b161c19169055388080611dba565b808886978294978701518155019601940190611d8f565b3461040157604036600319011261040157610865600435611e1781610812565b6024359033612a95565b60809060431901126104015760405190611e3a82610cc1565b81604435611e4781610812565b8152606435611e5581610812565b6020820152608435611e6681610812565b6040820152606060a43591611e7a83610812565b0152565b91909160e08184031261040157611e93610d35565b9281358452611ea460208301610406565b6020850152611eb560408301610406565b6040850152611ec660608301610830565b60608501526001600160401b039160808101358381116104015782611eec918301610ddf565b608086015260a081013592831161040157611f0e60c092611f19948301610ddf565b60a086015201610830565b60c0830152565b60031961012036820112610401576001600160401b0390602435908282116104015760609082360301126104015760405190611f5b82610cdc565b8060040135611f6981610812565b825260248101356020830152604481013590838211610401576004611f919236920101610ddf565b6040820152611f9f36611e21565b60c43592831161040157611fba610019933690600401611e7e565b611fc2610823565b916101043593600435613b1e565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461040157604036600319011261040157602060ff611a8560243561208481610812565b600435600052600f84526040600020612049565b34610401576020366003190112610401577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356120d881610812565b6120e061294b565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346104015760003660031901126104015760206040516127108152f35b3461040157608036600319011261040157600435612142816103f5565b60243561214e816103f5565b6064356001600160401b0381116104015761216d903690600401610413565b909261217761294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561040157600080946121ee604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612e8a565b03925af180156107fd576121fe57005b8061220b61001992610ca9565b80610620565b3461040157600036600319011261040157600e546040516001600160a01b039091168152602090f35b61224336610451565b9161ffff8694929616600052600560205261227781604060002060206040518092878b833787820190815203019020610e65565b5491821561232657612315848361230e7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006122fa846122f58e8a8f6123219f908f6122db906122ce6122ef9436908d610da8565b6020815191012014614616565b61ffff166000526005602052604060002090565b916145fd565b610e65565b5561230636878d610da8565b933691610da8565b91886148ab565b6040519586958661466c565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461040157600036600319011261040157600d546040516001600160a01b039091168152602090f35b34610401576040366003190112610401576020610ec76004356123c281610812565b602435906123cf82610812565b6001600160a01b031660009081526009845260409020612049565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104015760603660031901126104015760043561244c816103f5565b602435612458816103f5565b6044359161246461294b565b82156124df576123217f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124b98560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461040157600036600319011261040157602060405160018152f35b34610401576020366003190112610401577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612578816109b3565b61258061294b565b151560ff196006541660ff821617600655604051908152a1005b3461040157610100366003190112610401576004356125b8816103f5565b6001600160401b0390602435828111610401576125d9903690600401610413565b9190604435906125e882610440565b6084356125f481610812565b60c4359586116104015761260f610019963690600401610413565b94909360e4359660a435946064359361479a565b346104015761263136610b15565b919061263b61294b565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cbc576126778761267185546110f0565b85614464565b8590601f88116001146126cc5750918680879893611d629560008051602061540383398151915299936126c1575b501b906000198460031b1c191617905560405193849384614449565b8801359250386126a5565b90601f1988166126e185600052602060002090565b9288905b828210612735575050918893916000805160206154038339815191529899611d6296941061271b575b505082811b019055611d56565b870135600019600386901b60f8161c19169055388061270e565b808685968294968c013581550195019301906126e5565b3461040157604036600319011261040157602060ff611a8560243561277081610812565b600435600052601084526040600020612049565b3461040157600036600319011261040157602060ff600654166040519015158152f35b34610401576020366003190112610401576004356127c481610812565b6127cc61294b565b6001600160a01b03908116801561280857600080546001600160a01b03198116831782559092166000805160206153c38339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461040157608036600319011261040157600435612879816103f5565b60243590612886826103f5565b612891604435610812565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107fd576106df9160009161290f575b5060405191829182610673565b61292a913d8091833e6129228183610d12565b810190614424565b38612902565b34610401576000366003190112610401576020604051308152f35b6000546001600160a01b0316330361295f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b1057565b6051019081605111610b1057565b91908201809211610b1057565b156129e957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a4157565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612b1157612af6826000805160206153e383398151915294612b0c941696612acf8815156129e2565b612af084612adc83612015565b54612ae982821015612a3a565b0391612015565b55612015565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c14578216938415612bc45780612bb37f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594611699612b0c9561202f565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612c85816040600020612049565b549260018401612c955750505050565b808410612cb057612ca7930391612b64565b38808080611157565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612cfc57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60843561068481610812565b3561068481610812565b15612d5a57565b60405162461bcd60e51b81526020600482015260196024820152781554d113ce881d1bdad95b881bdd5d081b9bdd081d985b1a59603a1b6044820152606490fd5b35610684816103f5565b908160209103126104015751610684816109b3565b6040513d6000823e3d90fd5b15612dcd57565b60405162461bcd60e51b81526020600482015260116024820152701513d19517d5539055551213d492569151607a1b6044820152606490fd5b5190610411826103f5565b908160209103126104015751610684816103f5565b903590601e198136030182121561040157018035906001600160401b0382116104015760200191813603831361040157565b9035601e1982360301811215610401570160208101919035906001600160401b03821161040157813603831361040157565b908060209392818452848401376000828201840152601f01601f1916010190565b6060608435612eb981610812565b6001600160a01b0390811683528060a435612ed381610812565b1660208401528060c435612ee681610812565b16604084015260e435612ef881610812565b16910152565b9061068490823581526020830135612f15816103f5565b61ffff80911660208301526040840135612f2e816103f5565b1660408201526060830135612f4281610812565b6001600160a01b0316606082015260c080612f92612f77612f666080880188612e58565b60e0608088015260e0870191612e8a565b612f8460a0880188612e58565b9086830360a0880152612e8a565b94013591612f9f83610812565b0190611746565b929361301e61300b61014096611e7a95613039959b9a999b6103078952602089015260018060401b031660408801526101608060608901528135612fe981610812565b6001600160a01b03169088015260208101356101808801526040810190612e58565b60606101a08801526101c0870191612e8a565b9061302b60808601612eab565b848203610100860152612efe565b95610120830190611746565b81810292918115918404141715610b1057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610b1057565b605019810191908211610b1057565b91908203918211610b1057565b906101f48281029081048303610b105761271090048203918211610b1057106130be57565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156130fb57565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561314057565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b519061041182610812565b81601f8201121561040157805161319f81610d8d565b926131ad6040519485610d12565b8184526020828401011161040157610684916020808501910161062b565b9190826080910312610401576040516131e381610cc1565b606080829480516131f381610812565b8452602081015161320381610812565b6020850152604081015161321681610812565b6040850152015191611e7a83610812565b91909160e0818403126104015761323c610d35565b928151845261324d60208301612e06565b602085015261325e60408301612e06565b604085015261326f6060830161317e565b606085015260808201516001600160401b0392908381116104015782613296918301613189565b608086015260a0810151928311610401576132b860c092611f19948301613189565b60a08601520161317e565b91610160838303126104015782516132da816103f5565b9260208101519260408201516132ef81610440565b606083015190936001600160401b03939091848111610401578101606081850312610401576040519061332182610cdc565b805161332c81610812565b8252602081015160208301526040810151908682116104015761335191869101613189565b60408201529361336484608084016131cb565b936101008301519182116104015761337d918301613227565b9161014061338e610120840161317e565b92015190565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b03806060850151166060840152816133f76133e5608087015160e0608088015260e087019061064e565b60a087015186820360a088015261064e565b9401511691015290565b9261010094611e7a9361348a9399989799865260606134546040610120938460208b015260018060a01b039485825116908b015260208101516101408b01520151826101608a015261018089019061064e565b93828151166040890152826020820151168289015282604082015116608089015201511660a086015284820360c0860152613394565b9560e0830190611746565b3d156134c0573d906134a682610d8d565b916134b46040519384610d12565b82523d6000602084013e565b606090565b6001600160a01b039091168152602081019190915260400190565b61356c916000806040519361351a8561350c6020998a83019763a9059cbb60e01b8952602484016134c5565b03601f198101875286610d12565b60018060a01b0316926040519461353086610cf7565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613566613495565b916135e8565b8051908161357957505050565b8280613589938301019101612da5565b156135915750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561364a57508151156135fc575090565b3b156136055790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561365d5750805190602001fd5b60405162461bcd60e51b81529081906136799060048301610673565b0390fd5b9291909261ffff8116600052600760205260ff6136b18360406000206020604051809282610eb98c8481519384920161062b565b5416156136be5750505050565b301561373657612ca7936137236122f592856136e76136e261372998600a546129d5565b600a55565b6136f030612015565b81815401905560006000805160206153e38339815191526040518061371b3095829190602083019252565b0390a3610ba9565b90610e3f565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b919082604091031261040157604080519081016001600160401b03811182821017610cbc57604052602080829480516137b3816109b3565b8452015191611e7a836109b3565b90818103916101408312610401576040918251936137de85610cdc565b608081126104015760809084516137f481610cc1565b84516137ff81610812565b8152602085015160208201528585015161381881610812565b86820152606085015160608201528652607f1901126104015761010061387292845161384381610cc1565b6080820151815260a0820151602082015260c08201518682015260e0820151606082015260208701520161377b565b9082015290565b9190826040910312610401576020825192015190565b9192610684949361390d604061391e946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b610140840152610160830190611746565b6101a09081610180820152019061064e565b6040519061393d82610cf7565b6002825261060f60f31b6020830152565b9060a06080610684938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061064e565b60608051808352602080930192608080936000915b8483106139b65750505050505090565b909192939495846101a060019289516139d182825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152613a038682015187840190611746565b60a081810151151590830152613a2160c08083015190840190611746565b613a3360e08083015190840190611746565b610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520197019594930191906139a6565b94916060613abd613b109661ffff613af1976106849c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061064e565b9380516080890152602081015160a08901528260408201511660c089015201511660e086015284820361010086015261394e565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613991565b9390929194613b31611477600d54610806565b93613b3c8751610806565b60408051633a304d8b60e21b815260006004808301919091526001600160a01b03939093166024820152602097929391928890829060449082905afa80156107fd57613b8f91600091613f5d5750612dc6565b613ba388613b9d8b51610806565b30612b64565b613bb36114776114778b51610806565b97613bbe8251610806565b8351631fd177af60e11b8152308682019081526001600160a01b03909216602083015260408201929092526000606082018190526080820181905260a082015290986101409182918b918290819060c00103915afa80156107fd57613c62998492600092613f30575b5050613c396114776114778d51610806565b89840151916000848601519385519d8e958694859363efa84c6d60e01b855230918d860161388f565b03925af19788156107fd57600098613f10575b5080516001600160a01b0390613c8a90610806565b1680613e39575b5081890190613cb3611477613cac6114776114778651610806565b9251610806565b600090613e33575088905b803b15610401578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107fd57613d17926114779261147792613e20575b5051610806565b94613d268782015161ffff1690565b96613d7d60a08301519a613d6d613d4c6060613d4486850151610806565b930151610806565b91600085613d58610d54565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b613dd9613d88610d61565b916000835260008184015260008584015260006060840152613da8613930565b6080840152613dbc60608551950151610806565b90613dc5610d80565b9485526001600160a01b0390911690840152565b863b1561040157600098613e0293519a8b998a988997633a2544b560e01b895230908901613a7b565b03925af180156107fd57613e135750565b8061220b61041192610ca9565b8061220b613e2d92610ca9565b38613d10565b90613cbe565b828a0190613e478251610806565b91898551809381600081613e7e63095ea7b360e01b998a83528d83016020600091939293604081019460018060a01b031681520152565b03925af19081156107fd57613ec7938b938d93613ef3575b506000613eb3613eac6114776114778a51610806565b9351610806565b9188519687958694859384528c84016134c5565b03925af180156107fd5715613c9157613eec90883d8a11611681576116738183610d12565b5038613c91565b613f0990853d8711611681576116738183610d12565b5038613e96565b613f28919850823d8411610abe57610aaf8183610d12565b509638613c75565b613f4f9250803d10613f56575b613f478183610d12565b8101906137c1565b3880613c27565b503d613f3d565b61167b9150893d8b11611681576116738183610d12565b15613f7b57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15613fbc57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115614097575b501561405a57600283015193602284015193600261ffff8716600181148015614051575b61402d90613f74565b614038871515613fb5565b146140405750565b925090506056604283015192015190565b50808214614024565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138614000565b156140a957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261412261068497959361ffff6141309416865260c0602087015260c086019061064e565b90848203604086015261064e565b6001600160a01b0391821660608401529316608082015280830360a09091015261064e565b9461417e9193929561ffff8116600052600160205261418560406000206040519485809261112a565b0384610d12565b8251156141ec576141978551826143b5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561040157600096613e0291604051998a988997889662c5803160e81b8852600488016140fd565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b1561425157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561429a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106143225761ffff60226104119301519116600052600260205260406000206103076000526020526040600020549061431b82151561424a565b1015614293565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9190602281511061432257602261ffff9101519216600052600260205261439b60406000206001600052602052604060002090565b54908101809111610b10576104119161431b82151561424a565b61ffff16600052600360205260406000205490811561441a575b116143d657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506143cf565b906020828203126104015781516001600160401b038111610401576106849201613189565b60409061ffff61068495931681528160208201520191612e8a565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b92909161452a5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614524826145166144f560a483018a61064e565b6001600160401b03881660648401528281036023190160848401528861064e565b03601f198101845283610d12565b30615305565b939015614539575b5050505050565b6145429461454c565b3880808080614532565b91936145ea7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956145f8939561ffff815160208301209616958660005260056020526145b083610eb960208b6040600020826040519483868095519384920161062b565b556145cd604051978897885260a0602089015260a088019061064e565b6001600160401b039092166040870152858203606087015261064e565b90838203608085015261064e565b0390a1565b6020919283604051948593843782019081520301902090565b1561461d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff61468f9398979698168452608060208501526080840191612e8a565b6001600160401b0390951660408201520152565b9491959897906113406146cc6040996146c46146d2976146ef993691610da8565b943691610da8565b97614cc2565b928451968794859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107fd57600090819361473257509190565b90506104b291925060403d8111610abe57610aaf8183610d12565b9396949161068498969361ffff6147729316865260c0602087015260c0860191612e8a565b6001600160401b0390961660408401526060830152608082015280840360a090910152612e8a565b91969792989594939094303303614822576147b69085306150a2565b60405181815290946001600160a01b03169390849061ffff8516906000805160206153a383398151915290602090a3833b15610401576000988995614812936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a0161474d565b0393f180156107fd57613e135750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610684959361ffff6148969316845260018060a01b0316602084015260a0604084015260a083019061064e565b9215156060820152608081840391015261064e565b92919060ff6148b9846152aa565b16806149c25750505060ff6148cd826152aa565b1615806149b7575b6148de90614db2565b6148f06148ea8261525a565b916152f5565b90916001600160a01b0391828416156149ad575b614938907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316613045565b918316928315613736576000805160206153a38339815191529161496d61ffff926149686136e287600a546129d5565b612015565b8481540190558460006000805160206153e38339815191526040518061499889829190602083019252565b0390a360405193845216918060208101612b0c565b61dead9350614904565b5080516029146148d5565b6001036149d25761041193614aeb565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15614a1d57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9897969293614a8860e0979361ffff614abd9894168c5260208c61010091829101528c019061064e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261064e565b930152565b614ada6040929594939560608352606083019061064e565b94600180841b031660208201520152565b9091614af684614e63565b9091614b18614b11876122f5614b0b8b610ba9565b8c610e3f565b5460ff1690565b916001600160401b0391614b4f907f0000000000000000000000000000000000000000000000000000000000000000908416613045565b9288888b8315614c4b575b505050853b15614c005794614ba19694614524948a94614516948d99600014614bf95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614a5e565b9015614bee575090614be961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614ac2565b0390a2565b92610411949261454c565b1692614b82565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506145f8915050565b906122f56137299261372389614c65614c6b979b30615052565b99610ba9565b88888b614b5a565b60065460ff1615614cba5760228251106143225761ffff6022610411930151911660005260026020526040600020600080526020526040600020549061431b82151561424a565b505161137557565b7f0000000000000000000000000000000000000000000000000000000000000000908115614d42576001600160401b03919004818111614d00571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b613058565b7f00000000000000000000000000000000000000000000000000000000000000008015614d4257810690818103908111610b105791565b60405160006020820152602181019190915260c09190911b6001600160c01b03191660418201526029815261068481610cdc565b15614db957565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261068494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152614e53815180926020868601910161062b565b8101036051810184520182610d12565b90614e7b600160ff614e74856152aa565b1614614db2565b614e848261525a565b90614e8e836152f5565b906049845110614eff576049840151936051815110614ec357614ec0605182015191614eba815161307d565b906151d6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614feb575b8015614f9c5781614f7184614f64600095612015565b54612ae982821015614ffb565b55614f7f83600a5403600a55565b6040518381526000805160206153e383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614ff6833384612c65565b614f4e565b1561500257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561373657600a5490828201809211610b10576000926150936020926000805160206153e383398151915294600a55612015565b818154019055604051908152a3565b6106849183916001600160a01b0381163081141590816150ce575b5015612a9557610992833383612c65565b9050331415386150bd565b156150e057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561511d57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61516a82615163816129b9565b10156150d9565b6151778282511015615116565b8161518f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106151c35750508252601f01601f191660405290565b90928351815260208091019301906151ab565b6151e382615163816129b9565b6151f881516151f1846129c7565b1115615116565b81615210575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106152475750508252601f01601f191660405290565b909283518152602080910193019061522f565b602181511061526d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106152ba576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614ec3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbc5783926040526096875282602088019560a036883760208451940192f1903d9060968211615359575b6000908286523e9190565b6096915061534e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212205a58beaaeade69043873c04550af59601a94c42f114100a013d207bef2ab9b3364736f6c63430008120033", + "bytecode": "0x61010060409080825234620004d45760608162004d178038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d55516147d290816200054582396080518181816104a201528181610765015281816108a101528181610a1b01528181610cec015281816114bf01528181611cb901528181611e13015281816125db0152818161340001526139e6015260a0518161174b015260c051818181613c2c01528181613ec4015281816140810152614108015260e051816120d00152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633bdd4a43146103895780633d8b38f6146103845780633f1f4fa41461037f57806342d65a8d1461037a57806344770515146103755780634c42899a146103755780635b8c41e6146103705780635c975abb1461036b57806366ad5c8a14610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063796fd43a14610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612645565b612571565b6124aa565b612487565b61243d565b6122f3565b61226a565b612208565b6121ec565b6120ff565b6120ba565b612060565b612037565b611ed4565b611eab565b611dbf565b611da2565b611d32565b611ce8565b611ca3565b611c79565b611af6565b611a63565b6119a5565b611902565b6118b7565b611813565b6117ea565b610902565b6117c1565b61176f565b611731565b6113f2565b61125c565b611205565b6110bf565b611082565b610f9f565b610f19565b610ef6565b610e8f565b610d53565b610cd2565b610c99565b610c3d565b610b64565b610a99565b610991565b610960565b610920565b610878565b610839565b610804565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b6111ea565b8051908184149182610550575b508161052d575b50613309565b3691610dd9565b923691610dd9565b926137ba565b905061053a368486610dd9565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161111a565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610d9d565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610d85565b80f35b613047565b5080fd5b6001600160a01b038116036103d157565b600435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761082e600435610824816107db565b60243590336128b2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610859816103c5565b610861612660565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073957600435610897816103c5565b61089f612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761082e600435610940816107db565b60243561094c816107db565b6044359161095b8333836129c6565b6127aa565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261097c565b346103d15760a03660031901126103d1576004356109ae816103c5565b606435906109bb8261097c565b608435906001600160401b0382116103d1576109e061051860409336906004016103e3565b90610a176109fa6109f260443561407f565b60243561413d565b928451958694859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610d9d565b810190613b6b565b9038610a56565b503d610a79565b346103d15760403660031901126103d157600435610ab6816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af05761082e91336128b2565b6126b8565b908160609103126103d15790565b908160e09103126103d15790565b60809060a31901126103d15760a490565b60809060831901126103d157608490565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b6101603660031901126103d157610b796107ec565b6001600160401b03906064358281116103d157610b9a903690600401610af5565b906084358381116103d157610bb3903690600401610b03565b610bbc36610b11565b90610124358581116103d157610bd69036906004016103e3565b929091610144359687116103d157610bf5610019973690600401610b33565b9690956044359060243590612dfb565b9060406003198301126103d157600435610c1e816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610c8a610c5336610c05565b9390911660005260018452610c75610c7c604060002060405192838092611154565b0382610d9d565b848151910120923691610dd9565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610cb9816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610ce036610c05565b9190610cea612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610d41600098899788946004850161374b565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d9857604052565b610d6f565b90601f801991011681019081106001600160401b03821117610d9857604052565b6001600160401b038111610d9857601f01601f191660200190565b929192610de582610dbe565b91610df36040519384610d9d565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610e28816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610e5993600401359101610dd9565b9160443590811681036103d15790565b602090610e83928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610eed61ffff610ecc83610ea936610e10565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610f2736610426565b9192949390303303610f4b5761051f610f4592610019973691610dd9565b92613bc5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126103d157600435610fb7816107db565b602435610fc3816103c5565b604435916084356001600160401b0381116103d157602061ffff610ffa60008051602061475d833981519152933690600401610af5565b9361106d8535611009816107db565b611027610518868901359861101d8a6107db565b60408101906130a1565b611031818a614030565b61104661103f606435614106565b5085614310565b97611052891515613da2565b61106461105e8a61407f565b8c61413d565b9234938b6133bc565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561109f816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d157600080600319360112610739576110d9612660565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561114a575b602083101461113457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611129565b90600092918054916111658361111a565b9182825260019384811690816000146111c75750600114611187575b50505050565b90919394506000526020928360002092846000945b8386106111b3575050505001019038808080611181565b80548587018301529401938590820161119c565b9294505050602093945060ff191683830152151560051b01019038808080611181565b906103e16111fe9260405193848092611154565b0383610d9d565b346103d15760203660031901126103d15761ffff600435611225816103c5565b1660005260016020526106b4610c75611248604060002060405192838092611154565b604051918291602083526020830190610623565b60e03660031901126103d157600435611274816107db565b602435611280816103c5565b604435916001600160401b03906084358281116103d1576112a59036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d1576112ce903690600401610af5565b906113058235956112de876107db565b6112fd6112f360208601359561101d876107db565b9990923691610dd9565b973691610dd9565b928760ff6006541660001461137057936020959361106461106d9461133e60008051602061475d8339815191529a958561ffff9a61362f565b61135361134c606435614106565b5088614310565b9a61135f8c1515613da2565b8d6113698d61407f565b90336141ca565b5050829391925161139e5760008051602061475d8339815191529460209461ffff9461106461106d9461133e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6101003660031901126103d15760243560043561140e826107db565b6001600160401b03906044358281116103d15761142f903690600401610b03565b916064359081116103d157611448903690600401610af5565b9061145236610b22565b6001600160a01b039490919033818716036116de575b61147e61147485612df1565b8716301415612ff4565b60209361148e8582013584613180565b848761149986612df1565b1661161f575b6114aa600494614106565b5097604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107d2576115556115ca966115478a6115bf96856105189a6115c59a6115d19e6115f2575b506115148433614310565b5061153961152f61152a608085019e8f866130a1565b613256565b509691505061407f565b98604051998a9788016130d3565b03601f198101845283610d9d565b604081019461157961156687612de7565b61157361051884866130a1565b90613567565b61158286612de7565b926115b46115a161159560c08601612df1565b6001600160a01b031690565b926115ae60608601612df1565b946130a1565b959034963691610dd9565b936133bc565b612de7565b61ffff1690565b604051918252339182919060008051602061475d83398151915290602090a4005b61161190873d8911611618575b6116098183610d9d565b81019061308c565b5038611509565b503d6115ff565b600d546116859190611639906001600160a01b0316611595565b61164560408a01612de7565b9061164f88612df1565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107d2576004946116a96114aa9289946000916116b1575b50613053565b94505061149f565b6116d19150853d87116116d7575b6116c98183610d9d565b810190613032565b386116a3565b503d6116bf565b61172182611719336117028560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b541015612fb7565b61172c8233836129c6565b611468565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610eed600435611791816103c5565b61ffff602435916117a1836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c546118358161111a565b80845290600190818116908115610711575060011461185e576106b4846106a881880382610d9d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106118a457505050816106b4936106a89282010193610698565b8054858501870152928501928101611888565b346103d157602060ff6118f661ffff610ecc846118d336610e10565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611922816103c5565b166000526001602052610c75611942604060002060405192838092611154565b805115611960576106a88161195a6106b49351613162565b90614550565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356119c2816107db565b602435903360005260096020526119ef8160406000209060018060a01b0316600052602052604060002090565b5491808310611a1057611a04920390336128b2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611a80816103c5565b6001600160401b03906064358281116103d157611aa19036906004016103e3565b611aac929192610410565b60a43591611ab98361097c565b60c4359586116103d157611ad4611ae49636906004016103e3565b9590946044359060243590613996565b60408051928352602083019190915290f35b346103d157611b0436610c05565b90611b0d612660565b60405192602092808385870137611b396034868381013060601b88820152036014810188520186610d9d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d9857611b7383611b6d865461111a565b86613766565b80601f8411600114611be3575091808092611bd29695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611bd8575b50501b916000199060031b1c19161790555b6040519384938461374b565b0390a180f35b015192503880611bb4565b91939498601f198416611bfb87600052602060002090565b938a905b828210611c62575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611bd298969410611c49575b505050811b019055611bc6565b015160001960f88460031b161c19169055388080611c3c565b808886978294978701518155019601940190611bff565b346103d15760403660031901126103d15761082e600435611c99816107db565b60243590336127aa565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6118f6602435611d0c816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611d72816107db565b611d7a612660565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611ddc816103c5565b602435611de8816103c5565b6064356001600160401b0381116103d157611e079036906004016103e3565b9092611e11612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611e88604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a8f565b03925af180156107d257611e9857005b80611ea561001992610d85565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611edd36610426565b9161ffff86949296166000526005602052611f2481604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611fe657611fd58483611fce7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611fba84611fa28e8a8f611fe19f908f611f8890611f7b611f9c9436908d610dd9565b6020815191012014613909565b61ffff166000526005602052604060002090565b916138f0565b906001600160401b0316600052602052604060002090565b55611fc636878d610dd9565b933691610dd9565b9188613bc5565b6040519586958661395f565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610eed600435612082816107db565b6024359061208f826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d15760043561211c816103c5565b602435612128816103c5565b60443591612134612660565b82156121af57611fe17f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806121898560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356122488161097c565b612250612660565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612288816103c5565b6001600160401b03906024358281116103d1576122a99036906004016103e3565b91906044359084821682036103d1576084356122c4816107db565b60c4359586116103d1576122df6100199636906004016103e3565b94909360e4359660a4359460643593613a8c565b346103d15761230136610c05565b919061230b612660565b60009161ffff81168352600160209080825260408520916001600160401b038711610d98576123448761233e855461111a565b85613766565b8590601f88116001146123ab5750918680879893611bd2957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936123a0575b501b906000198460031b1c19161790556040519384938461374b565b880135925038612384565b90601f1988166123c085600052602060002090565b9288905b828210612426575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611bd296941061240c575b505082811b019055611bc6565b870135600019600386901b60f8161c1916905538806123ff565b808685968294968c013581550195019301906123c4565b346103d15760403660031901126103d157602060ff6118f6602435612461816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356124c7816107db565b6124cf612660565b6001600160a01b03908116801561251d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561258e816103c5565b6024359061259b826103c5565b6125a66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612624575b5060405191829182610648565b61263f913d8091833e6126378183610d9d565b8101906136ed565b38612617565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361267457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156126fe57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561275657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561285f576128448260008051602061477d8339815191529461285a9416966127e48815156126f7565b6001600160a01b03811660009081526008602052604090206128299085905461280f8282101561274f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561297557821693841561292557806129147f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461170261285a9560018060a01b03166000526009602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129fe5750505050565b808410612a1957612a109303916128b2565b38808080611181565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b9035601e19823603018112156103d15701602081359101916001600160401b0382116103d15781360383136103d157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060612ae4610659938035612ac5816107db565b6001600160a01b03168452602081810135908501526040810190612a5e565b9190928160408201520191612a8f565b9061065990823581526020830135612b0b816103c5565b61ffff80911660208301526040840135612b24816103c5565b1660408201526060830135612b38816107db565b6001600160a01b0316606082015260c080612b88612b6d612b5c6080880188612a5e565b60e0608088015260e0870191612a8f565b612b7a60a0880188612a5e565b9086830360a0880152612a8f565b94013591612b95836107db565b6001600160a01b03909216910152565b60609081813591612bb5836107db565b6001600160a01b039283168552826020820135612bd1816107db565b166020860152826040820135612be6816107db565b1660408601520135612bf7816107db565b16910152565b359060ff821682036103d157565b9a9998959093948b93959897929861030485526020958686015260409960018060a01b03168a8601526001600160401b0380606098168887015260809116818601526101a09686612c78612c6960a0958b878b01528b8a0190612ab0565b60c096898203888b0152612af4565b612c8760e097888a0190612ba5565b61016097888183039101528a815201999a6000975b8a8910612cb85750505050505050505050506101809150930152565b909192939495969798999a8a80828f612cdc600195612cd683610986565b15159052565b612cf2612cea878301610986565b151583880152565b612d08612d00888301610986565b151583890152565b612d20612d168983016103d6565b61ffff16838a0152565b612d3d612d2e8a83016107f9565b6001600160a01b0316838b0152565b612d53612d4b8b8301610986565b1515838c0152565b612d70612d618c83016107f9565b6001600160a01b0316838d0152565b612d8d612d7e8d83016107f9565b6001600160a01b0316838e0152565b61010080820135908301526101208082013590830152612dbd610140612db4818401612bfd565b60ff1690840152565b8c8101358d8301526101808091013590820152019d01990197969594939291909b9a99989b612c9c565b35610659816103c5565b35610659816107db565b939890929497899796986020870135612e1690858789612f1d565b6001600160a01b0386169a8b95612e2c90614106565b5094612e3790614106565b5097612e44368b8e610dd9565b612e4d90613256565b50979050612e5b915061407f565b98612e659061407f565b604051998a99612e789960208c01612c0b565b03601f1981018252612e8a9082610d9d565b6020830193612e9885612de7565b612ea3368584610dd9565b612eac916135f1565b612eb585612de7565b93612ec260c08201612df1565b6001600160a01b031690606001612ed890612df1565b9134943690612ee692610dd9565b92612ef0956133bc565b612ef990612de7565b60405160008152339161ffff169060008051602061475d83398151915290602090a4565b909291906001600160a01b038116338103612f3f575b50506103e19250613180565b6000908152600960209081526040808320338452909152902084905410612f76576103e193612f6f9133906129c6565b3880612f33565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b15612fbe57565b60405162461bcd60e51b815260206004820152600e60248201526d155114d3ce88185c1c1c9bdd985b60921b6044820152606490fd5b15612ffb57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d157516106598161097c565b6040513d6000823e3d90fd5b1561305a57565b60405162461bcd60e51b815260206004820152600a6024820152690aaa6889e7440c2eae8d60b31b6044820152606490fd5b908160209103126103d15751610659816103c5565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b92909361311761310c613124946001600160401b03610120989b9a999b6103078952166020880152610140806040890152870190612ab0565b926060860190612ba5565b83820360e0850152612af4565b6001600160a01b039095166101008201520152565b81810292918115918404141715610af057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610af057565b605019810191908211610af057565b906101f48281029081048303610af05761271090048203918211610af057106131a557565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156131e257565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561322357565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132fe575b50156132c157600283015193602284015193600261ffff87166001811480156132b8575b613294906131db565b61329f87151561321c565b146132a75750565b925090506056604283015192015190565b5080821461328b565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138613267565b1561331057565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261338961065997959361ffff6133979416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133e59193929561ffff811660005260016020526133ec604060002060405194858092611154565b0384610d9d565b825115613471576133fe85518261367e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661345391604051998a988997889662c5803160e81b885260048801613364565b03925af180156107d2576134645750565b80611ea56103e192610d85565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134d657565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561352257565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610307600052602052604060002054906135a58215156134cf565b101561351b565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610304600052602052604060002054906135a58215156134cf565b919060228151106135ac57602261ffff9101519216600052600260205261366460406000206001600052602052604060002090565b54908101809111610af0576103e1916135a58215156134cf565b61ffff1660005260036020526040600020549081156136e3575b1161369f57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613698565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161371f81610dbe565b9261372d6040519485610d9d565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a8f565b90601f811161377457505050565b600091825260208220906020601f850160051c830194106137b0575b601f0160051c01915b8281106137a557505050565b818155600101613799565b9092508290613790565b92909161381e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613818826115476137f760a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b306146ff565b93901561382d575b5050505050565b61383694613840565b3880808080613826565b91936138dd7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138eb939561ffff815160208301209616958660005260056020526138a483610ecc60208b60406000208260405194838680955193849201610600565b556001600160401b036138c9604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561391057565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161398b9060609461ffff6001600160401b039499989799168552608060208601526080850191612a8f565b951660408201520152565b9491959897906113696139bf6040996139b76139c5976139e2993691610dd9565b943691610dd9565b9761407f565b928451968794859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a2557509190565b905061048791925060403d8111610a9257610a838183610d9d565b93969491613a6e9061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a8f565b961660408401526060830152608082015260a0818503910152612a8f565b91969792989594939094303303613b2657613aa890853061449c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b16936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a40565b0393f180156107d2576134645750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bb09316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613bd3846146a4565b1680613d4d5750505060ff613be7826146a4565b161580613d42575b613bf890614183565b613c0a613c0482614654565b916146ef565b90916001600160a01b039182841615613d38575b613c52906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613139565b918316928315613cf3577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cb361ffff92613c99613c9487600a546126ea565b600a55565b6001600160a01b0316600090815260086020526040902090565b84815401905584600060008051602061477d83398151915260405180613cde89829190602083019252565b0390a36040519384521691806020810161285a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c1e565b508051602914613bef565b600103613d5d576103e193613e78565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613da957565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e1c60e0989461ffff613e489995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b930152565b6001600160401b03613e6d60409396959496606084526060840190610623565b951660208201520152565b9091613e8384614237565b9091613eb4613ead87611fa2613ea78b61ffff166000526007602052604060002090565b8c610e69565b5460ff1690565b91613eea6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613139565b9288888b8315613fe6575b505050853b15613f9b5794613f3c9694613818948a94611547948d99600014613f945750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613dea565b9015613f89575090613f8461ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e4d565b0390a2565b926103e19492613840565b1692613f1d565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138eb915050565b90611fa261401b9261401589614000614028979b30614439565b9961ffff166000526007602052604060002090565b90610e69565b805460ff19166001179055565b88888b613ef5565b60065460ff16156140775760228251106135ac5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906135a58215156134cf565b505161139e57565b7f000000000000000000000000000000000000000000000000000000000000000090811561410157046001600160401b03908181116140bc571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b61314c565b7f0000000000000000000000000000000000000000000000000000000000000000801561410157810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d985760405290565b1561418a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142278151809260208686019101610600565b8101036051810184520182610d9d565b9061424f600160ff614248856146a4565b1614614183565b61425882614654565b90614262836146ef565b9060498451106142d35760498401519360518151106142975761429460518201519161428e8151613171565b906145d0565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036143d2575b801561438357816143588461434b60009560018060a01b03166000526008602052604060002090565b5461280f828210156143e2565b5561436683600a5403600a55565b60405183815260008051602061477d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6143dd8333846129c6565b614322565b156143e957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613cf357600a5490828201809211610af05760009261448d60209260008051602061477d83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b0381163081141590816144c8575b50156127aa5761095b8333836129c6565b9050331415386144b7565b156144da57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561451757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145648261455d816126ce565b10156144d3565b6145718282511015614510565b81614589575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106145bd5750508252601f01601f191660405290565b90928351815260208091019301906145a5565b6145dd8261455d816126ce565b6145f281516145eb846126dc565b1115614510565b8161460a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146415750508252601f01601f191660405290565b9092835181526020809101930190614629565b602181511061466757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106146b4576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614297576029015190565b6040519392909160009160c08601916001600160401b03831187841017610d985783926040526096875282602088019560a036883760208451940192f1903d9060968211614753575b6000908286523e9190565b6096915061474856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cc227ceba903e0e4b7ac4348a112a3843a08f0e5ace294f83033ab46679fd1764736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633bdd4a43146103895780633d8b38f6146103845780633f1f4fa41461037f57806342d65a8d1461037a57806344770515146103755780634c42899a146103755780635b8c41e6146103705780635c975abb1461036b57806366ad5c8a14610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063796fd43a14610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612645565b612571565b6124aa565b612487565b61243d565b6122f3565b61226a565b612208565b6121ec565b6120ff565b6120ba565b612060565b612037565b611ed4565b611eab565b611dbf565b611da2565b611d32565b611ce8565b611ca3565b611c79565b611af6565b611a63565b6119a5565b611902565b6118b7565b611813565b6117ea565b610902565b6117c1565b61176f565b611731565b6113f2565b61125c565b611205565b6110bf565b611082565b610f9f565b610f19565b610ef6565b610e8f565b610d53565b610cd2565b610c99565b610c3d565b610b64565b610a99565b610991565b610960565b610920565b610878565b610839565b610804565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b6111ea565b8051908184149182610550575b508161052d575b50613309565b3691610dd9565b923691610dd9565b926137ba565b905061053a368486610dd9565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161111a565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610d9d565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610d85565b80f35b613047565b5080fd5b6001600160a01b038116036103d157565b600435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761082e600435610824816107db565b60243590336128b2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610859816103c5565b610861612660565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073957600435610897816103c5565b61089f612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761082e600435610940816107db565b60243561094c816107db565b6044359161095b8333836129c6565b6127aa565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261097c565b346103d15760a03660031901126103d1576004356109ae816103c5565b606435906109bb8261097c565b608435906001600160401b0382116103d1576109e061051860409336906004016103e3565b90610a176109fa6109f260443561407f565b60243561413d565b928451958694859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610d9d565b810190613b6b565b9038610a56565b503d610a79565b346103d15760403660031901126103d157600435610ab6816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af05761082e91336128b2565b6126b8565b908160609103126103d15790565b908160e09103126103d15790565b60809060a31901126103d15760a490565b60809060831901126103d157608490565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b6101603660031901126103d157610b796107ec565b6001600160401b03906064358281116103d157610b9a903690600401610af5565b906084358381116103d157610bb3903690600401610b03565b610bbc36610b11565b90610124358581116103d157610bd69036906004016103e3565b929091610144359687116103d157610bf5610019973690600401610b33565b9690956044359060243590612dfb565b9060406003198301126103d157600435610c1e816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610c8a610c5336610c05565b9390911660005260018452610c75610c7c604060002060405192838092611154565b0382610d9d565b848151910120923691610dd9565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610cb9816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610ce036610c05565b9190610cea612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610d41600098899788946004850161374b565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d9857604052565b610d6f565b90601f801991011681019081106001600160401b03821117610d9857604052565b6001600160401b038111610d9857601f01601f191660200190565b929192610de582610dbe565b91610df36040519384610d9d565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610e28816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610e5993600401359101610dd9565b9160443590811681036103d15790565b602090610e83928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610eed61ffff610ecc83610ea936610e10565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610f2736610426565b9192949390303303610f4b5761051f610f4592610019973691610dd9565b92613bc5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126103d157600435610fb7816107db565b602435610fc3816103c5565b604435916084356001600160401b0381116103d157602061ffff610ffa60008051602061475d833981519152933690600401610af5565b9361106d8535611009816107db565b611027610518868901359861101d8a6107db565b60408101906130a1565b611031818a614030565b61104661103f606435614106565b5085614310565b97611052891515613da2565b61106461105e8a61407f565b8c61413d565b9234938b6133bc565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561109f816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d157600080600319360112610739576110d9612660565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561114a575b602083101461113457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611129565b90600092918054916111658361111a565b9182825260019384811690816000146111c75750600114611187575b50505050565b90919394506000526020928360002092846000945b8386106111b3575050505001019038808080611181565b80548587018301529401938590820161119c565b9294505050602093945060ff191683830152151560051b01019038808080611181565b906103e16111fe9260405193848092611154565b0383610d9d565b346103d15760203660031901126103d15761ffff600435611225816103c5565b1660005260016020526106b4610c75611248604060002060405192838092611154565b604051918291602083526020830190610623565b60e03660031901126103d157600435611274816107db565b602435611280816103c5565b604435916001600160401b03906084358281116103d1576112a59036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d1576112ce903690600401610af5565b906113058235956112de876107db565b6112fd6112f360208601359561101d876107db565b9990923691610dd9565b973691610dd9565b928760ff6006541660001461137057936020959361106461106d9461133e60008051602061475d8339815191529a958561ffff9a61362f565b61135361134c606435614106565b5088614310565b9a61135f8c1515613da2565b8d6113698d61407f565b90336141ca565b5050829391925161139e5760008051602061475d8339815191529460209461ffff9461106461106d9461133e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6101003660031901126103d15760243560043561140e826107db565b6001600160401b03906044358281116103d15761142f903690600401610b03565b916064359081116103d157611448903690600401610af5565b9061145236610b22565b6001600160a01b039490919033818716036116de575b61147e61147485612df1565b8716301415612ff4565b60209361148e8582013584613180565b848761149986612df1565b1661161f575b6114aa600494614106565b5097604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107d2576115556115ca966115478a6115bf96856105189a6115c59a6115d19e6115f2575b506115148433614310565b5061153961152f61152a608085019e8f866130a1565b613256565b509691505061407f565b98604051998a9788016130d3565b03601f198101845283610d9d565b604081019461157961156687612de7565b61157361051884866130a1565b90613567565b61158286612de7565b926115b46115a161159560c08601612df1565b6001600160a01b031690565b926115ae60608601612df1565b946130a1565b959034963691610dd9565b936133bc565b612de7565b61ffff1690565b604051918252339182919060008051602061475d83398151915290602090a4005b61161190873d8911611618575b6116098183610d9d565b81019061308c565b5038611509565b503d6115ff565b600d546116859190611639906001600160a01b0316611595565b61164560408a01612de7565b9061164f88612df1565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107d2576004946116a96114aa9289946000916116b1575b50613053565b94505061149f565b6116d19150853d87116116d7575b6116c98183610d9d565b810190613032565b386116a3565b503d6116bf565b61172182611719336117028560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b541015612fb7565b61172c8233836129c6565b611468565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610eed600435611791816103c5565b61ffff602435916117a1836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c546118358161111a565b80845290600190818116908115610711575060011461185e576106b4846106a881880382610d9d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106118a457505050816106b4936106a89282010193610698565b8054858501870152928501928101611888565b346103d157602060ff6118f661ffff610ecc846118d336610e10565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611922816103c5565b166000526001602052610c75611942604060002060405192838092611154565b805115611960576106a88161195a6106b49351613162565b90614550565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356119c2816107db565b602435903360005260096020526119ef8160406000209060018060a01b0316600052602052604060002090565b5491808310611a1057611a04920390336128b2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611a80816103c5565b6001600160401b03906064358281116103d157611aa19036906004016103e3565b611aac929192610410565b60a43591611ab98361097c565b60c4359586116103d157611ad4611ae49636906004016103e3565b9590946044359060243590613996565b60408051928352602083019190915290f35b346103d157611b0436610c05565b90611b0d612660565b60405192602092808385870137611b396034868381013060601b88820152036014810188520186610d9d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d9857611b7383611b6d865461111a565b86613766565b80601f8411600114611be3575091808092611bd29695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611bd8575b50501b916000199060031b1c19161790555b6040519384938461374b565b0390a180f35b015192503880611bb4565b91939498601f198416611bfb87600052602060002090565b938a905b828210611c62575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611bd298969410611c49575b505050811b019055611bc6565b015160001960f88460031b161c19169055388080611c3c565b808886978294978701518155019601940190611bff565b346103d15760403660031901126103d15761082e600435611c99816107db565b60243590336127aa565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6118f6602435611d0c816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611d72816107db565b611d7a612660565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611ddc816103c5565b602435611de8816103c5565b6064356001600160401b0381116103d157611e079036906004016103e3565b9092611e11612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611e88604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a8f565b03925af180156107d257611e9857005b80611ea561001992610d85565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611edd36610426565b9161ffff86949296166000526005602052611f2481604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611fe657611fd58483611fce7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611fba84611fa28e8a8f611fe19f908f611f8890611f7b611f9c9436908d610dd9565b6020815191012014613909565b61ffff166000526005602052604060002090565b916138f0565b906001600160401b0316600052602052604060002090565b55611fc636878d610dd9565b933691610dd9565b9188613bc5565b6040519586958661395f565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610eed600435612082816107db565b6024359061208f826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d15760043561211c816103c5565b602435612128816103c5565b60443591612134612660565b82156121af57611fe17f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806121898560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356122488161097c565b612250612660565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612288816103c5565b6001600160401b03906024358281116103d1576122a99036906004016103e3565b91906044359084821682036103d1576084356122c4816107db565b60c4359586116103d1576122df6100199636906004016103e3565b94909360e4359660a4359460643593613a8c565b346103d15761230136610c05565b919061230b612660565b60009161ffff81168352600160209080825260408520916001600160401b038711610d98576123448761233e855461111a565b85613766565b8590601f88116001146123ab5750918680879893611bd2957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936123a0575b501b906000198460031b1c19161790556040519384938461374b565b880135925038612384565b90601f1988166123c085600052602060002090565b9288905b828210612426575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611bd296941061240c575b505082811b019055611bc6565b870135600019600386901b60f8161c1916905538806123ff565b808685968294968c013581550195019301906123c4565b346103d15760403660031901126103d157602060ff6118f6602435612461816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356124c7816107db565b6124cf612660565b6001600160a01b03908116801561251d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561258e816103c5565b6024359061259b826103c5565b6125a66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612624575b5060405191829182610648565b61263f913d8091833e6126378183610d9d565b8101906136ed565b38612617565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361267457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156126fe57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561275657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561285f576128448260008051602061477d8339815191529461285a9416966127e48815156126f7565b6001600160a01b03811660009081526008602052604090206128299085905461280f8282101561274f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561297557821693841561292557806129147f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461170261285a9560018060a01b03166000526009602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129fe5750505050565b808410612a1957612a109303916128b2565b38808080611181565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b9035601e19823603018112156103d15701602081359101916001600160401b0382116103d15781360383136103d157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060612ae4610659938035612ac5816107db565b6001600160a01b03168452602081810135908501526040810190612a5e565b9190928160408201520191612a8f565b9061065990823581526020830135612b0b816103c5565b61ffff80911660208301526040840135612b24816103c5565b1660408201526060830135612b38816107db565b6001600160a01b0316606082015260c080612b88612b6d612b5c6080880188612a5e565b60e0608088015260e0870191612a8f565b612b7a60a0880188612a5e565b9086830360a0880152612a8f565b94013591612b95836107db565b6001600160a01b03909216910152565b60609081813591612bb5836107db565b6001600160a01b039283168552826020820135612bd1816107db565b166020860152826040820135612be6816107db565b1660408601520135612bf7816107db565b16910152565b359060ff821682036103d157565b9a9998959093948b93959897929861030485526020958686015260409960018060a01b03168a8601526001600160401b0380606098168887015260809116818601526101a09686612c78612c6960a0958b878b01528b8a0190612ab0565b60c096898203888b0152612af4565b612c8760e097888a0190612ba5565b61016097888183039101528a815201999a6000975b8a8910612cb85750505050505050505050506101809150930152565b909192939495969798999a8a80828f612cdc600195612cd683610986565b15159052565b612cf2612cea878301610986565b151583880152565b612d08612d00888301610986565b151583890152565b612d20612d168983016103d6565b61ffff16838a0152565b612d3d612d2e8a83016107f9565b6001600160a01b0316838b0152565b612d53612d4b8b8301610986565b1515838c0152565b612d70612d618c83016107f9565b6001600160a01b0316838d0152565b612d8d612d7e8d83016107f9565b6001600160a01b0316838e0152565b61010080820135908301526101208082013590830152612dbd610140612db4818401612bfd565b60ff1690840152565b8c8101358d8301526101808091013590820152019d01990197969594939291909b9a99989b612c9c565b35610659816103c5565b35610659816107db565b939890929497899796986020870135612e1690858789612f1d565b6001600160a01b0386169a8b95612e2c90614106565b5094612e3790614106565b5097612e44368b8e610dd9565b612e4d90613256565b50979050612e5b915061407f565b98612e659061407f565b604051998a99612e789960208c01612c0b565b03601f1981018252612e8a9082610d9d565b6020830193612e9885612de7565b612ea3368584610dd9565b612eac916135f1565b612eb585612de7565b93612ec260c08201612df1565b6001600160a01b031690606001612ed890612df1565b9134943690612ee692610dd9565b92612ef0956133bc565b612ef990612de7565b60405160008152339161ffff169060008051602061475d83398151915290602090a4565b909291906001600160a01b038116338103612f3f575b50506103e19250613180565b6000908152600960209081526040808320338452909152902084905410612f76576103e193612f6f9133906129c6565b3880612f33565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b15612fbe57565b60405162461bcd60e51b815260206004820152600e60248201526d155114d3ce88185c1c1c9bdd985b60921b6044820152606490fd5b15612ffb57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d157516106598161097c565b6040513d6000823e3d90fd5b1561305a57565b60405162461bcd60e51b815260206004820152600a6024820152690aaa6889e7440c2eae8d60b31b6044820152606490fd5b908160209103126103d15751610659816103c5565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b92909361311761310c613124946001600160401b03610120989b9a999b6103078952166020880152610140806040890152870190612ab0565b926060860190612ba5565b83820360e0850152612af4565b6001600160a01b039095166101008201520152565b81810292918115918404141715610af057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610af057565b605019810191908211610af057565b906101f48281029081048303610af05761271090048203918211610af057106131a557565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156131e257565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561322357565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132fe575b50156132c157600283015193602284015193600261ffff87166001811480156132b8575b613294906131db565b61329f87151561321c565b146132a75750565b925090506056604283015192015190565b5080821461328b565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138613267565b1561331057565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261338961065997959361ffff6133979416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133e59193929561ffff811660005260016020526133ec604060002060405194858092611154565b0384610d9d565b825115613471576133fe85518261367e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661345391604051998a988997889662c5803160e81b885260048801613364565b03925af180156107d2576134645750565b80611ea56103e192610d85565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134d657565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561352257565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610307600052602052604060002054906135a58215156134cf565b101561351b565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610304600052602052604060002054906135a58215156134cf565b919060228151106135ac57602261ffff9101519216600052600260205261366460406000206001600052602052604060002090565b54908101809111610af0576103e1916135a58215156134cf565b61ffff1660005260036020526040600020549081156136e3575b1161369f57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613698565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161371f81610dbe565b9261372d6040519485610d9d565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a8f565b90601f811161377457505050565b600091825260208220906020601f850160051c830194106137b0575b601f0160051c01915b8281106137a557505050565b818155600101613799565b9092508290613790565b92909161381e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613818826115476137f760a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b306146ff565b93901561382d575b5050505050565b61383694613840565b3880808080613826565b91936138dd7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138eb939561ffff815160208301209616958660005260056020526138a483610ecc60208b60406000208260405194838680955193849201610600565b556001600160401b036138c9604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561391057565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161398b9060609461ffff6001600160401b039499989799168552608060208601526080850191612a8f565b951660408201520152565b9491959897906113696139bf6040996139b76139c5976139e2993691610dd9565b943691610dd9565b9761407f565b928451968794859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a2557509190565b905061048791925060403d8111610a9257610a838183610d9d565b93969491613a6e9061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a8f565b961660408401526060830152608082015260a0818503910152612a8f565b91969792989594939094303303613b2657613aa890853061449c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b16936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a40565b0393f180156107d2576134645750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bb09316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613bd3846146a4565b1680613d4d5750505060ff613be7826146a4565b161580613d42575b613bf890614183565b613c0a613c0482614654565b916146ef565b90916001600160a01b039182841615613d38575b613c52906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613139565b918316928315613cf3577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cb361ffff92613c99613c9487600a546126ea565b600a55565b6001600160a01b0316600090815260086020526040902090565b84815401905584600060008051602061477d83398151915260405180613cde89829190602083019252565b0390a36040519384521691806020810161285a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c1e565b508051602914613bef565b600103613d5d576103e193613e78565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613da957565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e1c60e0989461ffff613e489995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b930152565b6001600160401b03613e6d60409396959496606084526060840190610623565b951660208201520152565b9091613e8384614237565b9091613eb4613ead87611fa2613ea78b61ffff166000526007602052604060002090565b8c610e69565b5460ff1690565b91613eea6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613139565b9288888b8315613fe6575b505050853b15613f9b5794613f3c9694613818948a94611547948d99600014613f945750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613dea565b9015613f89575090613f8461ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e4d565b0390a2565b926103e19492613840565b1692613f1d565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138eb915050565b90611fa261401b9261401589614000614028979b30614439565b9961ffff166000526007602052604060002090565b90610e69565b805460ff19166001179055565b88888b613ef5565b60065460ff16156140775760228251106135ac5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906135a58215156134cf565b505161139e57565b7f000000000000000000000000000000000000000000000000000000000000000090811561410157046001600160401b03908181116140bc571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b61314c565b7f0000000000000000000000000000000000000000000000000000000000000000801561410157810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d985760405290565b1561418a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142278151809260208686019101610600565b8101036051810184520182610d9d565b9061424f600160ff614248856146a4565b1614614183565b61425882614654565b90614262836146ef565b9060498451106142d35760498401519360518151106142975761429460518201519161428e8151613171565b906145d0565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036143d2575b801561438357816143588461434b60009560018060a01b03166000526008602052604060002090565b5461280f828210156143e2565b5561436683600a5403600a55565b60405183815260008051602061477d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6143dd8333846129c6565b614322565b156143e957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613cf357600a5490828201809211610af05760009261448d60209260008051602061477d83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b0381163081141590816144c8575b50156127aa5761095b8333836129c6565b9050331415386144b7565b156144da57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561451757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145648261455d816126ce565b10156144d3565b6145718282511015614510565b81614589575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106145bd5750508252601f01601f191660405290565b90928351815260208091019301906145a5565b6145dd8261455d816126ce565b6145f281516145eb846126dc565b1115614510565b8161460a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146415750508252601f01601f191660405290565b9092835181526020809101930190614629565b602181511061466757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106146b4576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614297576029015190565b6040519392909160009160c08601916001600160401b03831187841017610d985783926040526096875282602088019560a036883760208451940192f1903d9060968211614753575b6000908286523e9190565b6096915061474856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cc227ceba903e0e4b7ac4348a112a3843a08f0e5ace294f83033ab46679fd1764736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/USDOMarketDestinationModule.json b/src/artifacts/tapioca-bar/USDOMarketDestinationModule.json new file mode 100644 index 00000000..3fb6b5ec --- /dev/null +++ b/src/artifacts/tapioca-bar/USDOMarketDestinationModule.json @@ -0,0 +1,1917 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "USDOMarketDestinationModule", + "sourceName": "contracts/usd0/modules/USDOMarketDestinationModule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lzEndpoint", + "type": "address" + }, + { + "internalType": "contract IYieldBoxBase", + "name": "_yieldBox", + "type": "address" + }, + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CallOFTReceivedSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_reason", + "type": "bytes" + } + ], + "name": "MessageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "NonContractAddress", + "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": false, + "internalType": "bool", + "name": "oldState", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "newState", + "type": "bool" + } + ], + "name": "PausedUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ReceiveFromChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_payloadHash", + "type": "bytes32" + } + ], + "name": "RetryMessageSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SendToChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetBurnerStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_type", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_minDstGas", + "type": "uint256" + } + ], + "name": "SetMinDstGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetMinterStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "precrime", + "type": "address" + } + ], + "name": "SetPrecrime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "SetTrustedRemote", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "SetTrustedRemoteAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "SetUseCustomAdapterParams", + "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": "DEFAULT_PAYLOAD_SIZE_LIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NO_EXTRA_GAS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND_AND_CALL", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "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": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedBurner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_from", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_gasForCall", + "type": "uint256" + } + ], + "name": "callOnOFTReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cluster", + "outputs": [ + { + "internalType": "contract ICluster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "conservator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "creditedPackets", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendAndCallFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "failedMessages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "forceResumeReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + } + ], + "name": "getConfig", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + } + ], + "name": "getTrustedRemoteAddress", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "components": [ + { + "internalType": "bool", + "name": "repay", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketHelper", + "type": "address" + }, + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "bool", + "name": "removeCollateral", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "removeCollateralAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "lock", + "type": "bool" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint128", + "name": "lockDuration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "fraction", + "type": "uint256" + } + ], + "internalType": "struct ITapiocaOptionLiquidityProvision.IOptionsLockData", + "name": "lockData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bool", + "name": "participate", + "type": "bool" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tOLPTokenId", + "type": "uint256" + } + ], + "internalType": "struct ITapiocaOptionsBroker.IOptionsParticipateData", + "name": "participateData", + "type": "tuple" + } + ], + "internalType": "struct IUSDOBase.ILendOrRepayParams", + "name": "lendParams", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bool", + "name": "permitAll", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "actionType", + "type": "uint16" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" + }, + { + "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" + } + ], + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "bool", + "name": "withdraw", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "withdrawLzFeeAmount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withdrawOnOtherChain", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "withdrawLzChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "withdrawAdapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonData.IWithdrawParams", + "name": "withdrawParams", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "airdropAmount", + "type": "uint256" + } + ], + "name": "lendInternal", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "minDstGasLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "nonblockingLzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "payloadSizeLimitLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "precrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "remove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "retryMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_config", + "type": "bytes" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_packetType", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_minGas", + "type": "uint256" + } + ], + "name": "setMinDstGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_size", + "type": "uint256" + } + ], + "name": "setPayloadSizeLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_precrime", + "type": "address" + } + ], + "name": "setPrecrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setReceiveVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setSendVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "setTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "setTrustedRemoteAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "setUseCustomAdapterParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sharedDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "trustedRemoteLookup", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "useCustomAdapterParams", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "yieldBox", + "outputs": [ + { + "internalType": "contract IYieldBoxBase", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x61010060409080825234620004d45760608162005e7a8038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161593590816200054582396080518181816104ad0152818161077001528181610cda01528181610e6e0152818161102f015281816120e90152818161225d015281816129ea015281816149370152614d9e015260a05181611730015260c051818181610b0301528181614b6b01528181614f8c015281816151ea0152615284015260e051816124df0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b7578063100b6523146103b257806310ddb137146103ad57806318160ddd1461034957806323b872dd146103a8578063313ce567146103a3578063365260b41461039e57806339509351146103995780633d8b38f6146103945780633f1f4fa41461038f57806342d65a8d1461038a57806344770515146103855780634c42899a146103855780635b8c41e6146103805780635c975abb1461037b57806366ad5c8a14610376578063695ef6bf1461037157806370a082311461036c578063715018a6146103675780637533d7881461036257806376203b481461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b1461034957806394f0093314610344578063950c8a741461033f57806395d89b411461033a57806398185308146103355780639bdb9812146103305780639f38369a1461032b578063a457c2d714610326578063a4c51df514610321578063a6c3d1651461031c578063a9059cbb14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612a54565b612980565b6128b9565b612896565b61284c565b612702565b612679565b612617565b6125fb565b61250e565b6124c9565b61246f565b612446565b6122fb565b6122d2565b612209565b6121ec565b61217c565b612132565b6120d3565b6120a9565b611f26565b611e8f565b611dd1565b611d2e565b611ce3565b611c1b565b611b77565b611b4e565b611a70565b610d3b565b6117a6565b611754565b611716565b6114f8565b6114a1565b61135b565b61131e565b61123b565b6111a7565b611184565b61111d565b611096565b611015565b610fdc565b610f80565b610eec565b610de4565b610d99565b610d59565b610cb1565b610a74565b610851565b61081c565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b611486565b805190818414918261055b575b5081610538575b506145bb565b36916109b8565b9236916109b8565b926146cb565b90506105453684866109b8565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816113b6565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b38188038261090f565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da906108a6565b80f35b6137fd565b5080fd5b6001600160a01b038116036103e157565b608435906103f1826107e6565b60a435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761084660043561083c816107e6565b6024359033612c98565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610871816103d5565b610879612a6f565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116108b957604052565b610890565b60a081019081106001600160401b038211176108b957604052565b606081019081106001600160401b038211176108b957604052565b604081019081106001600160401b038211176108b957604052565b90601f801991011681019081106001600160401b038211176108b957604052565b604051906101a082018281106001600160401b038211176108b957604052565b6040519061012082018281106001600160401b038211176108b957604052565b604051906103f1826108d9565b6040519061014082018281106001600160401b038211176108b957604052565b6001600160401b0381116108b957601f01601f191660200190565b9291926109c48261099d565b916109d2604051938461090f565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e157816020610664933591016109b8565b60a06003198201126103e157600435610a22816107e6565b91602435610a2f816103d5565b916001600160401b03916044358381116103e15782610a50916004016109ef565b92606435610a5d81610420565b926084359182116103e157610664916004016109ef565b346103e157610b29610a8536610a0a565b94909280949293610a97303314612e5b565b600560005260126020527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746546001600160a01b039790610adc908916868a1614612ea0565b610aef60208251830101602083016131ba565b9a949550926001600160401b039d9299919d7f0000000000000000000000000000000000000000000000000000000000000000911661526f565b97602081019889528a8988610b3d30612118565b549a610b8d610b89610b8284610b6a610b648661ffff166000526007602052604060002090565b896110f7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b610c68575b5050505030610ba090612118565b549960405193849360208501976394f0093360e01b8952169e8f936024860194610bc995613465565b03601f1981018252610bdb908261090f565b515a92600093928493f491610bee61352a565b92159661ffff966000805160206158c083398151915298610c2d575b5050505050505192610c286040519283921694829190602083019252565b0390a3005b610c4c95610c3a91613578565b865180911015610c57575b508861475f565b388080808080610c0a565b610c62908b30613585565b38610c45565b610ca893610c95610b6a92610c81610c9b96513061558f565b61ffff166000526007602052604060002090565b906110f7565b805460ff19166001179055565b8a89888e610b92565b346103e1576000602036600319011261074457600435610cd0816103d5565b610cd8612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e157610846600435610d79816107e6565b602435610d85816107e6565b60443591610d94833383612dc3565b612bc9565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b602435906103f182610db5565b60c435906103f182610db5565b35906103f182610db5565b346103e15760a03660031901126103e157600435610e01816103d5565b60643590610e0e82610db5565b608435906001600160401b0382116103e157610e3361052360409336906004016103f3565b90610e6a610e4d610e456044356151e8565b6024356152b9565b928451958694859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610ebb575b50604080519182526020820192909252f35b9050610ede915060403d8111610ee5575b610ed6818361090f565b810190614aaa565b9038610ea9565b503d610ecc565b346103e15760403660031901126103e157600435610f09816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610f43576108469133612c98565b612ad7565b9060406003198301126103e157600435610f61816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610fcd610f9636610f48565b9390911660005260018452610fb8610fbf6040600020604051928380926113f0565b038261090f565b8481519101209236916109b8565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ffc816103d5565b1660005260036020526020604060002054604051908152f35b346103e15761102336610f48565b919061102d612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281611084600098899788946004850161465c565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b9060606003198301126103e1576004356110cb816103d5565b91602435906001600160401b0382116103e1576110ea916004016109ef565b9060443561066481610420565b60209061111192826040519483868095519384920161060b565b82019081520301902090565b346103e157602061117b61ffff61115a83611137366110b2565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e1576111b536610431565b91929493903033036111d95761052a6111d3926100199736916109b8565b92614b04565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435611253816107e6565b60243561125f816103d5565b604435916084356001600160401b0381116103e157602061ffff6112966000805160206158a083398151915293369060040161122d565b9361130985356112a5816107e6565b6112c361052386890135986112b98a6107e6565b60408101906148b5565b6112cd818a6150e5565b6112e26112db606435615282565b5085615479565b976112ee891515614cba565b6113006112fa8a6151e8565b8c6152b9565b9234938b614d5a565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561133b816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e15760008060031936011261074457611375612a6f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156113e6575b60208310146113d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916113c5565b9060009291805491611401836113b6565b9182825260019384811690816000146114635750600114611423575b50505050565b90919394506000526020928360002092846000945b83861061144f57505050500101903880808061141d565b805485870183015294019385908201611438565b9294505050602093945060ff191683830152151560051b0101903880808061141d565b906103f161149a92604051938480926113f0565b038361090f565b346103e15760203660031901126103e15761ffff6004356114c1816103d5565b1660005260016020526106bf610fb86114e46040600020604051928380926113f0565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611510816107e6565b60243561151c816103d5565b604435916001600160401b03906084358281116103e1576115419036906004016103f3565b91909260a4359161155183610420565b60c4358281116103e15761156990369060040161122d565b926115a0843595611579876107e6565b61159861158e6020880135976112b9896107e6565b99909236916109b8565b9736916109b8565b9460ff6006541660001461169557602286511061165057856020956113006113099461161e8c61160b61ffff9a8b60226000805160206158a08339815191529f0151931660005260028d52841661160560406000206001600052602052604060002090565b54612b09565b9061161782151561513a565b1015615186565b61163361162c606435615282565b5088615479565b9a61163f8c1515614cba565b8d6116498d6151e8565b9033615333565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516116c2576000805160206158a08339815191529460209461ffff946113006113099461161e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e157602061117b600435611776816103d5565b61ffff60243591611786836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b6001600160801b038116036103e157565b60a0906101031901126103e157604051906117fa826108be565b816101043561180881610db5565b815261012435611817816107e6565b602082015261014435611829816117cf565b60408201526101643561183b816117cf565b6060820152608061018435910152565b6060906101a31901126103e15760405190611865826108d9565b816101a43561187381610db5565b81526101c435611882816107e6565b602082015260406101e435910152565b6001600160401b0381116108b95760051b60200190565b60ff8116036103e157565b35906103f1826118a9565b81601f820112156103e1578035906118d682611892565b926040906118e68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410611917575050505050505090565b86848303126103e15784879161192b610930565b61193487610dd9565b8152611941838801610dd9565b83820152611950868801610dd9565b8682015260606119618189016103e6565b908201526080611972818901610811565b9082015260a0611983818901610dd9565b9082015260c0611994818901610811565b9082015260e06119a5818901610811565b90820152610100808801359082015261012080880135908201526101406119cd8189016118b4565b9082015261016080880135908201526101808088013590820152815201930192611906565b919060a0838203126103e15760405190611a0b826108be565b81938035611a1881610db5565b8352602081013560208401526040810135611a3281610db5565b60408401526060810135611a45816103d5565b60608401526080810135916001600160401b0383116103e157608092611a6b92016109ef565b910152565b6102603660031901126103e157600435611a89816107e6565b6101e03660231901126103e157611a9e610950565b90611aa7610dbf565b825260443560208301526064356040830152611ac16107f7565b6060830152611ace610804565b6080830152611adb610dcc565b60a083015260e43560c0830152611af1366117e0565b60e0830152611aff3661184b565b6101008301526001600160401b0391610204358381116103e157611b279036906004016118bf565b610224359384116103e157611b436100199436906004016119f2565b91610244359361386d565b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c54611b99816113b6565b8084529060019081811690811561071c5750600114611bc2576106bf846106b38188038261090f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c0857505050816106bf936106b392820101936106a3565b8054858501870152928501928101611bec565b346103e157611c4b611c2c36610a0a565b9350505050611c3c303314614313565b6020808251830101910161441e565b94508092919251611cd4575b508051611c7a90611c6e906001600160a01b031681565b6001600160a01b031690565b90813b156103e157604051639391dd6d60e01b815294600094869485938492611cb19291906001600160a01b0316600485016144d2565b03925af180156107dd57611cc157005b80611cce610019926108a6565b80610600565b611cdd90613c50565b38611c57565b346103e157602060ff611d2261ffff61115a84611cff366110b2565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611d4e816103d5565b166000526001602052610fb8611d6e6040600020604051928380926113f0565b805115611d8c576106b381611d866106bf935161355a565b90615693565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611dee816107e6565b60243590336000526009602052611e1b8160406000209060018060a01b0316600052602052604060002090565b5491808310611e3c57611e3092039033612c98565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611eac816103d5565b6001600160401b03906064358281116103e157611ecd9036906004016103f3565b608492919235611edc81610420565b60a43591611ee983610db5565b60c4359586116103e157611f04611f149636906004016103f3565b95909460443590602435906148e7565b60408051928352602083019190915290f35b346103e157611f3436610f48565b90611f3d612a6f565b60405192602092808385870137611f696034868381013060601b8882015203601481018852018661090f565b60009361ffff8316855260019081815260408620918751916001600160401b0383116108b957611fa383611f9d86546113b6565b86614677565b80601f84116001146120135750918080926120029695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612008575b50501b916000199060031b1c19161790555b6040519384938461465c565b0390a180f35b015192503880611fe4565b91939498601f19841661202b87600052602060002090565b938a905b828210612092575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a9593918561200298969410612079575b505050811b019055611ff6565b015160001960f88460031b161c1916905538808061206c565b80888697829497870151815501960194019061202f565b346103e15760403660031901126103e1576108466004356120c9816107e6565b6024359033612bc9565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff611d22602435612156816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356121bc816107e6565b6121c4612a6f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435612226816103d5565b602435612232816103d5565b6064356001600160401b0381116103e1576122519036906004016103f3565b909261225b612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611cb1604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161463b565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b61230436610431565b9161ffff8694929616600052600560205261234b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156123f5576123e484836123dd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006123c984610b6a8e8a8f6123f09f908f6123af906123a26123c39436908d6109b8565b6020815191012014614828565b61ffff166000526005602052604060002090565b9161480f565b556123d536878d6109b8565b9336916109b8565b9188614b04565b6040519586958661487e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e157602061117b600435612491816107e6565b6024359061249e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561252b816103d5565b602435612537816103d5565b60443591612543612a6f565b82156125be576123f07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806125988560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561265781610db5565b61265f612a6f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612697816103d5565b6001600160401b03906024358281116103e1576126b89036906004016103f3565b9190604435906126c782610420565b6084356126d3816107e6565b60c4359586116103e1576126ee6100199636906004016103f3565b94909360e4359660a43594606435936149dd565b346103e15761271036610f48565b919061271a612a6f565b60009161ffff81168352600160209080825260408520916001600160401b0387116108b9576127538761274d85546113b6565b85614677565b8590601f88116001146127ba5750918680879893612002957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936127af575b501b906000198460031b1c19161790556040519384938461465c565b880135925038612793565b90601f1988166127cf85600052602060002090565b9288905b828210612835575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab989961200296941061281b575b505082811b019055611ff6565b870135600019600386901b60f8161c19169055388061280e565b808685968294968c013581550195019301906127d3565b346103e15760403660031901126103e157602060ff611d22602435612870816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356128d6816107e6565b6128de612a6f565b6001600160a01b03908116801561292c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561299d816103d5565b602435906129aa826103d5565b6129b56044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612a33575b5060405191829182610653565b612a4e913d8091833e612a46818361090f565b810190614616565b38612a26565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b03163303612a8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612ad29133612c98565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4357565b6051019081605111610f4357565b91908201809211610f4357565b15612b1d57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612b7557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612c4557612c2a826000805160206158e083398151915294612c40941696612c03881515612b16565b612c2484612c1083612118565b54612c1d82821015612b6e565b0391612118565b55612118565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612d72578216938415612d225780612d117f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612cfa612c409560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612dfb5750505050565b808410612e1657612e0d930391612c98565b3880808061141d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612e6257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612ea757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103f1826103d5565b51906103f182610db5565b51906103f1826107e6565b91908260a09103126103e157604051612f1e816108be565b60808082948051612f2e81610db5565b84526020810151612f3e816107e6565b60208501526040810151612f51816117cf565b60408501526060810151612f64816117cf565b60608501520151910152565b91908260609103126103e157604051612f88816108d9565b60408082948051612f9881610db5565b84526020810151612fa8816107e6565b60208501520151910152565b51906103f1826118a9565b81601f820112156103e157805190612fd682611892565b92604090612fe68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410613017575050505050505090565b86848303126103e15784879161302b610930565b61303487612ef0565b8152613041838801612ef0565b83820152613050868801612ef0565b868201526060613061818901612ee5565b908201526080613072818901612efb565b9082015260a0613083818901612ef0565b9082015260c0613094818901612efb565b9082015260e06130a5818901612efb565b90820152610100808801519082015261012080880151908201526101406130cd818901612fb4565b9082015261016080880151908201526101808088015190820152815201930192613006565b909291926130ff8161099d565b9161310d604051938461090f565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e1578151610664926020016130f2565b919060a0838203126103e1576040519061315a826108be565b8193805161316781610db5565b835260208101516020840152604081015161318181610db5565b60408401526060810151613194816103d5565b60608401526080810151916001600160401b0383116103e157608092611a6b9201613127565b9091818303906102a082126103e15782516131d4816103d5565b9360208401516131e3816107e6565b9360408101516131f281610420565b936101e08091605f1901126103e157613209610950565b9061321660608401612ef0565b82526080830151602083015260a0830151604083015261323860c08401612efb565b606083015261324960e08401612efb565b608083015261328b8461010092613261848701612ef0565b60a086015261012086015160c086015261327f826101408801612f06565b60e08601528501612f70565b9082015292610240820151926001600160401b03938481116103e157816132b3918501612fbf565b936102608401519081116103e157610280916132d0918501613141565b92015190565b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b90815180825260208080930193019160005b82811061335a575050505090565b90919293826101a0600192875161337382825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520195019392910161334c565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b9594939061024093613504613525946135169360018060a01b03168a528051151560208b0152602081015160408b0152604081015160608b01526134b8606082015160808c019060018060a01b03169052565b60808101516001600160a01b031660a08b015260a0810151151560c08b015260c081015160e08b015260e0810151906134f761010092838d01906132d6565b01516101a08a0190613316565b610260806102008a015288019061333a565b90868203610220880152613422565b930152565b3d15613555573d9061353b8261099d565b91613549604051938461090f565b82523d6000602084013e565b606090565b601319810191908211610f4357565b605019810191908211610f4357565b91908203918211610f4357565b60405163a9059cbb60e01b60208083019182526001600160a01b03949094166024830152604480830195909552938152919261361e929160009081906135cc60648661090f565b60018060a01b031692604051946135e2866108f4565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161361861352a565b916136a0565b80518061362a57505050565b818391810103126103e15781015161364181610db5565b156136495750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561370257508151156136b4575090565b3b156136bd5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156137155750805190602001fd5b60405162461bcd60e51b81529081906137319060048301610653565b0390fd5b926103f196919897956137bf6102409661379d60406137ca956137d5986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190604080918051151584526020810151602085015201511515910152565b8051151560e08801526020810151610100880152604001511515610120870152565b6101408501906132d6565b6101e0830190613316565b01906040908160018060a01b0391828151168552826020820151166020860152015116910152565b6040513d6000823e3d90fd5b908160209103126103e15751610664816107e6565b908160209103126103e1575190565b9260e0949161066497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613422565b9193909361387c303314612e5b565b8051613b1d575b506060840180519092906001600160a01b0316916020936138a985880194855190612ac7565b50865115613a45576040870194855115613939575b50516138d490611c6e906001600160a01b031681565b608087015190939060c0906001600160a01b031691519551970151843b156103e15760009661391a91604051998a98899788966303c592fd60e21b88526004880161382d565b03925af180156107dd5761392c575b50565b80611cce6103f1926108a6565b815160049190819061395590611c6e906001600160a01b031681565b6040516331d8733560e11b815293849182905afa9182156107dd576139b7928291600091613a18575b5060808b015188516040516305da91c960e31b81526001600160a01b039092166004830152602482015293849190829081906044820190565b03916001600160a01b03165afa9283156107dd576138d493611c6e93611c6e936000926139eb575b505088529250506138be565b613a0a9250803d10613a11575b613a02818361090f565b81019061381e565b38806139df565b503d6139f8565b613a389150823d8411613a3e575b613a30818361090f565b810190613809565b3861397e565b503d613a26565b5192945091613a5e90611c6e906001600160a01b031681565b91845191613a6a610970565b946000968787528782880152876040880152613a84610970565b96888852888389015260408801525197613a9c610970565b600181529889830152600160408a015260e0810151610100820151608090920151613ae9906001600160a01b0316613ad2610970565b8b81526001600160a01b0390911694810194909452565b886040840152863b15613b19579061391a92916040519a8b998a9889976339551beb60e21b895260048901613735565b8880fd5b613b2690613ee4565b38613883565b8051821015613b405760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613b5d57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613bbd60209295949560408552604085019061062e565b9416910152565b60009060033d11613bd157565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613c3f57818401948551938411613c47573d85010160208487010111613c3f57506106649291016020019061090f565b949350505050565b50949350505050565b9060005b8251811015613edf576040613c7581613c6d8487613b2c565b510151151590565b15613c97575080613c91613c8b60019386613b2c565b516140d4565b01613c54565b6060613cc161030561ffff613cba84613cb0888b613b2c565b51015161ffff1690565b1614613b56565b613cd060a0613c6d8588613b2c565b613cee60c0613cdf8689613b2c565b5101516001600160a01b031690565b91613dbf613d0160e0613cdf888b613b2c565b93613db1610100613d12898c613b2c565b5101518a610120613d238b83613b2c565b510151613d3f610140613d368d85613b2c565b51015160ff1690565b90610180613d5d8d610160613d548288613b2c565b51015195613b2c565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f19810185528461090f565b613de2613dd7611c6e611c6e6080613cdf8a8d613b2c565b91613cb0878a613b2c565b90803b156103e157613e106000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081613ecc575b50613e3a576001613e2a613bc4565b6308c379a014613e84575b613e45575b505050600190613c91565b613e5e610b89613e5361352a565b92613c6d878a613b2c565b15613e3a57613e6f6137319161405c565b925162461bcd60e51b81529283928301610653565b613e8c613be2565b80613e98575b50613e35565b60009150613ead610b8984613c6d898c613b2c565b15613e9257845162461bcd60e51b815290819061373190828701610653565b80611cce613ed9926108a6565b38613e1b565b509050565b9060005b8251811015613edf576040613f0181613c6d8487613b2c565b15613f1d575080613f17613c8b60019386613b2c565b01613ee8565b6060613f3661030661ffff613cba84613cb0888b613b2c565b613f4560a0613c6d8588613b2c565b613f5460c0613cdf8689613b2c565b91613f67613d0160e0613cdf888b613b2c565b613f7f613dd7611c6e611c6e6080613cdf8a8d613b2c565b90803b156103e157613fad6000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081614049575b50613fd7576001613fc7613bc4565b6308c379a014614001575b613fe2575b505050600190613f17565b613ff0610b89613e5361352a565b15613fd757613e6f6137319161405c565b614009613be2565b80614015575b50613fd2565b6000915061402a610b8984613c6d898c613b2c565b1561400f57845162461bcd60e51b815290819061373190828701610653565b80611cce614056926108a6565b38613fb8565b60448151106140ad576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e1576024820151610664926044016130f2565b506040516140ba816108f4565b600a8152695553444f3a206461746160b01b602082015290565b80511561424a5760808101516140f490611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101208401519061412761014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081614237575b506139295760016141a7613bc4565b6308c379a0146141fa575b6141b95750565b6141d1610b8960206141c961352a565b930151151590565b15613929576141e26137319161405c565b60405162461bcd60e51b815291829160048301610653565b614202613be2565b8061420e575b506141b2565b6020830151600092506142085760405162461bcd60e51b81529081906137319060048301610653565b80611cce614244926108a6565b38614198565b608081015161426390611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361429d61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161418d565b1561431a57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b91906101c0838203126103e15761436661097d565b9261437081612ef0565b84526020810151602085015261438860408201612ef0565b6040850152606081015160608501526143a360808201612ef0565b608085015260a081015160a08501526143bf8260c08301612f70565b60c0850152610120916143d481848401612f70565b60e08601526101808201516001600160401b03908181116103e157826143fb918501613141565b6101008701526101a08301519081116103e1576144189201613141565b90830152565b918282039161010083126103e1578351614437816103d5565b9360606020820151614448816107e6565b94603f1901126103e15760405161445e816108d9565b604082015161446c816107e6565b8152606082015161447c816107e6565b6020820152608082015161448f816107e6565b60408201529260a0820151926001600160401b03938481116103e157816144b7918501614351565b9360c08401519081116103e15760e0916132d0918501612fbf565b6001600160a01b03918216815282518216602080830191909152830151821660408083019190915290920151166060820152610664919060a0608082015261451f60a08201835115159052565b602082015160c08201526040820151151560e0820152606082015161010090818301526145a560808401519161455c610120938486019015159052565b60a085015161014085015261457a60c0860151610160860190613316565b60e0850151906145906101c09283870190613316565b85015190610220850152610260840190613422565b92015190610240609f1982850301910152613422565b156145c257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201613127565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff6106649593168152816020820152019161463b565b90601f811161468557505050565b600091825260208220906020601f850160051c830194106146c1575b601f0160051c01915b8281106146b657505050565b8181556001016146aa565b90925082906146a1565b92909161473d5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906147378261472961470860a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f19810184528361090f565b30615842565b93901561474c575b5050505050565b6147559461475f565b3880808080614745565b91936147fc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561480a939561ffff815160208301209616958660005260056020526147c38361115a60208b6040600020826040519483868095519384920161060b565b556001600160401b036147e8604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561482f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916148aa9060609461ffff6001600160401b03949998979916855260806020860152608085019161463b565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b949195989790611649614910604099614908614916976149339936916109b8565b9436916109b8565b976151e8565b928451968794859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361497657509190565b905061049291925060403d8111610ee557610ed6818361090f565b939694916149bf9061066499979461ffff6001600160401b039416875260c0602088015260c087019161463b565b961660408401526060830152608082015260a081850391015261463b565b91969792989594939094303303614a65576149f99085306155df565b60405181815290946001600160a01b03169390849061ffff8516906000805160206158c083398151915290602090a3833b156103e1576000988995614a55936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614991565b0393f180156107dd5761392c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103e1576020825192015190565b9192610664959361ffff614aef9316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff614b12846157e7565b1680614c655750505060ff614b26826157e7565b161580614c5a575b614b37906152ec565b614b49614b4382615797565b91615832565b90916001600160a01b039182841615614c50575b614b91906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661526f565b918316928315614c0b576000805160206158c083398151915291614bcb61ffff92614bc6614bc187600a54612b09565b600a55565b612118565b8481540190558460006000805160206158e083398151915260405180614bf689829190602083019252565b0390a360405193845216918060208101612c40565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614b5d565b508051602914614b2e565b600103614c75576103f193614f47565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614cc157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614d2761066497959361ffff614d359416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614d839193929561ffff81166000526001602052614d8a6040600020604051948580926113f0565b038461090f565b825115614df157614d9c855182614e4f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e15760009661391a91604051998a988997889662c5803160e81b885260048801614d02565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614eb4575b11614e7057565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614e69565b98979692936001600160401b03614ef060e0989461ffff6135259995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b6001600160401b03614f3c6040939695949660608452606084019061062e565b951660208201520152565b9091614f52846153a0565b9091614f7c610b8287610b6a614f768b61ffff166000526007602052604060002090565b8c6110f7565b91614fb26001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661526f565b9288888b83156150ae575b505050853b1561506357946150049694614737948a94614729948d9960001461505c5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614ebe565b901561505157509061504c61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614f1c565b0390a2565b926103f1949261475f565b1692614fe5565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061480a915050565b90610b6a610c9b92610c95896150c86150dd979b3061558f565b9961ffff166000526007602052604060002090565b88888b614fbd565b60065460ff16156151325760228251106116505761ffff60226103f193015191166000526002602052615125604060002060008052602052604060002090565b549061161782151561513a565b50516116c257565b1561514157565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561518d57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561526a57046001600160401b0390818111615225571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6151d2565b81810292918115918404141715610f4357565b7f0000000000000000000000000000000000000000000000000000000000000000801561526a57810690818103908111610f435791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152610664816108d9565b156152f357565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615390815180926020868601910161060b565b810103605181018452018261090f565b906153b8600160ff6153b1856157e7565b16146152ec565b6153c182615797565b906153cb83615832565b90604984511061543c576049840151936051815110615400576153fd6051820151916153f78151613569565b90615713565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615528575b80156154d957816154ae846154a1600095612118565b54612c1d82821015615538565b556154bc83600a5403600a55565b6040518381526000805160206158e083398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615533833384612dc3565b61548b565b1561553f57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614c0b57600a5490828201809211610f43576000926155d06020926000805160206158e083398151915294600a55612118565b818154019055604051908152a3565b6106649183916001600160a01b03811630811415908161560b575b5015612bc957610d94833383612dc3565b9050331415386155fa565b1561561d57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561565a57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6156a7826156a081612aed565b1015615616565b6156b48282511015615653565b816156cc575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106157005750508252601f01601f191660405290565b90928351815260208091019301906156e8565b615720826156a081612aed565b615735815161572e84612afb565b1115615653565b8161574d575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106157845750508252601f01601f191660405290565b909283518152602080910193019061576c565b60218151106157aa57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106157f7576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615400576029015190565b6040519392909160009160c08601916001600160401b038311878410176108b95783926040526096875282602088019560a036883760208451940192f1903d9060968211615896575b6000908286523e9190565b6096915061588b56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220aa56927203a9e7854bf7fd50f67fc6c4a0aef86bc68507d5cada8648507af73464736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b7578063100b6523146103b257806310ddb137146103ad57806318160ddd1461034957806323b872dd146103a8578063313ce567146103a3578063365260b41461039e57806339509351146103995780633d8b38f6146103945780633f1f4fa41461038f57806342d65a8d1461038a57806344770515146103855780634c42899a146103855780635b8c41e6146103805780635c975abb1461037b57806366ad5c8a14610376578063695ef6bf1461037157806370a082311461036c578063715018a6146103675780637533d7881461036257806376203b481461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b1461034957806394f0093314610344578063950c8a741461033f57806395d89b411461033a57806398185308146103355780639bdb9812146103305780639f38369a1461032b578063a457c2d714610326578063a4c51df514610321578063a6c3d1651461031c578063a9059cbb14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612a54565b612980565b6128b9565b612896565b61284c565b612702565b612679565b612617565b6125fb565b61250e565b6124c9565b61246f565b612446565b6122fb565b6122d2565b612209565b6121ec565b61217c565b612132565b6120d3565b6120a9565b611f26565b611e8f565b611dd1565b611d2e565b611ce3565b611c1b565b611b77565b611b4e565b611a70565b610d3b565b6117a6565b611754565b611716565b6114f8565b6114a1565b61135b565b61131e565b61123b565b6111a7565b611184565b61111d565b611096565b611015565b610fdc565b610f80565b610eec565b610de4565b610d99565b610d59565b610cb1565b610a74565b610851565b61081c565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b611486565b805190818414918261055b575b5081610538575b506145bb565b36916109b8565b9236916109b8565b926146cb565b90506105453684866109b8565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816113b6565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b38188038261090f565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da906108a6565b80f35b6137fd565b5080fd5b6001600160a01b038116036103e157565b608435906103f1826107e6565b60a435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761084660043561083c816107e6565b6024359033612c98565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610871816103d5565b610879612a6f565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116108b957604052565b610890565b60a081019081106001600160401b038211176108b957604052565b606081019081106001600160401b038211176108b957604052565b604081019081106001600160401b038211176108b957604052565b90601f801991011681019081106001600160401b038211176108b957604052565b604051906101a082018281106001600160401b038211176108b957604052565b6040519061012082018281106001600160401b038211176108b957604052565b604051906103f1826108d9565b6040519061014082018281106001600160401b038211176108b957604052565b6001600160401b0381116108b957601f01601f191660200190565b9291926109c48261099d565b916109d2604051938461090f565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e157816020610664933591016109b8565b60a06003198201126103e157600435610a22816107e6565b91602435610a2f816103d5565b916001600160401b03916044358381116103e15782610a50916004016109ef565b92606435610a5d81610420565b926084359182116103e157610664916004016109ef565b346103e157610b29610a8536610a0a565b94909280949293610a97303314612e5b565b600560005260126020527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746546001600160a01b039790610adc908916868a1614612ea0565b610aef60208251830101602083016131ba565b9a949550926001600160401b039d9299919d7f0000000000000000000000000000000000000000000000000000000000000000911661526f565b97602081019889528a8988610b3d30612118565b549a610b8d610b89610b8284610b6a610b648661ffff166000526007602052604060002090565b896110f7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b610c68575b5050505030610ba090612118565b549960405193849360208501976394f0093360e01b8952169e8f936024860194610bc995613465565b03601f1981018252610bdb908261090f565b515a92600093928493f491610bee61352a565b92159661ffff966000805160206158c083398151915298610c2d575b5050505050505192610c286040519283921694829190602083019252565b0390a3005b610c4c95610c3a91613578565b865180911015610c57575b508861475f565b388080808080610c0a565b610c62908b30613585565b38610c45565b610ca893610c95610b6a92610c81610c9b96513061558f565b61ffff166000526007602052604060002090565b906110f7565b805460ff19166001179055565b8a89888e610b92565b346103e1576000602036600319011261074457600435610cd0816103d5565b610cd8612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e157610846600435610d79816107e6565b602435610d85816107e6565b60443591610d94833383612dc3565b612bc9565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b602435906103f182610db5565b60c435906103f182610db5565b35906103f182610db5565b346103e15760a03660031901126103e157600435610e01816103d5565b60643590610e0e82610db5565b608435906001600160401b0382116103e157610e3361052360409336906004016103f3565b90610e6a610e4d610e456044356151e8565b6024356152b9565b928451958694859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610ebb575b50604080519182526020820192909252f35b9050610ede915060403d8111610ee5575b610ed6818361090f565b810190614aaa565b9038610ea9565b503d610ecc565b346103e15760403660031901126103e157600435610f09816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610f43576108469133612c98565b612ad7565b9060406003198301126103e157600435610f61816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610fcd610f9636610f48565b9390911660005260018452610fb8610fbf6040600020604051928380926113f0565b038261090f565b8481519101209236916109b8565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ffc816103d5565b1660005260036020526020604060002054604051908152f35b346103e15761102336610f48565b919061102d612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281611084600098899788946004850161465c565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b9060606003198301126103e1576004356110cb816103d5565b91602435906001600160401b0382116103e1576110ea916004016109ef565b9060443561066481610420565b60209061111192826040519483868095519384920161060b565b82019081520301902090565b346103e157602061117b61ffff61115a83611137366110b2565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e1576111b536610431565b91929493903033036111d95761052a6111d3926100199736916109b8565b92614b04565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435611253816107e6565b60243561125f816103d5565b604435916084356001600160401b0381116103e157602061ffff6112966000805160206158a083398151915293369060040161122d565b9361130985356112a5816107e6565b6112c361052386890135986112b98a6107e6565b60408101906148b5565b6112cd818a6150e5565b6112e26112db606435615282565b5085615479565b976112ee891515614cba565b6113006112fa8a6151e8565b8c6152b9565b9234938b614d5a565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561133b816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e15760008060031936011261074457611375612a6f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156113e6575b60208310146113d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916113c5565b9060009291805491611401836113b6565b9182825260019384811690816000146114635750600114611423575b50505050565b90919394506000526020928360002092846000945b83861061144f57505050500101903880808061141d565b805485870183015294019385908201611438565b9294505050602093945060ff191683830152151560051b0101903880808061141d565b906103f161149a92604051938480926113f0565b038361090f565b346103e15760203660031901126103e15761ffff6004356114c1816103d5565b1660005260016020526106bf610fb86114e46040600020604051928380926113f0565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611510816107e6565b60243561151c816103d5565b604435916001600160401b03906084358281116103e1576115419036906004016103f3565b91909260a4359161155183610420565b60c4358281116103e15761156990369060040161122d565b926115a0843595611579876107e6565b61159861158e6020880135976112b9896107e6565b99909236916109b8565b9736916109b8565b9460ff6006541660001461169557602286511061165057856020956113006113099461161e8c61160b61ffff9a8b60226000805160206158a08339815191529f0151931660005260028d52841661160560406000206001600052602052604060002090565b54612b09565b9061161782151561513a565b1015615186565b61163361162c606435615282565b5088615479565b9a61163f8c1515614cba565b8d6116498d6151e8565b9033615333565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516116c2576000805160206158a08339815191529460209461ffff946113006113099461161e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e157602061117b600435611776816103d5565b61ffff60243591611786836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b6001600160801b038116036103e157565b60a0906101031901126103e157604051906117fa826108be565b816101043561180881610db5565b815261012435611817816107e6565b602082015261014435611829816117cf565b60408201526101643561183b816117cf565b6060820152608061018435910152565b6060906101a31901126103e15760405190611865826108d9565b816101a43561187381610db5565b81526101c435611882816107e6565b602082015260406101e435910152565b6001600160401b0381116108b95760051b60200190565b60ff8116036103e157565b35906103f1826118a9565b81601f820112156103e1578035906118d682611892565b926040906118e68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410611917575050505050505090565b86848303126103e15784879161192b610930565b61193487610dd9565b8152611941838801610dd9565b83820152611950868801610dd9565b8682015260606119618189016103e6565b908201526080611972818901610811565b9082015260a0611983818901610dd9565b9082015260c0611994818901610811565b9082015260e06119a5818901610811565b90820152610100808801359082015261012080880135908201526101406119cd8189016118b4565b9082015261016080880135908201526101808088013590820152815201930192611906565b919060a0838203126103e15760405190611a0b826108be565b81938035611a1881610db5565b8352602081013560208401526040810135611a3281610db5565b60408401526060810135611a45816103d5565b60608401526080810135916001600160401b0383116103e157608092611a6b92016109ef565b910152565b6102603660031901126103e157600435611a89816107e6565b6101e03660231901126103e157611a9e610950565b90611aa7610dbf565b825260443560208301526064356040830152611ac16107f7565b6060830152611ace610804565b6080830152611adb610dcc565b60a083015260e43560c0830152611af1366117e0565b60e0830152611aff3661184b565b6101008301526001600160401b0391610204358381116103e157611b279036906004016118bf565b610224359384116103e157611b436100199436906004016119f2565b91610244359361386d565b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c54611b99816113b6565b8084529060019081811690811561071c5750600114611bc2576106bf846106b38188038261090f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c0857505050816106bf936106b392820101936106a3565b8054858501870152928501928101611bec565b346103e157611c4b611c2c36610a0a565b9350505050611c3c303314614313565b6020808251830101910161441e565b94508092919251611cd4575b508051611c7a90611c6e906001600160a01b031681565b6001600160a01b031690565b90813b156103e157604051639391dd6d60e01b815294600094869485938492611cb19291906001600160a01b0316600485016144d2565b03925af180156107dd57611cc157005b80611cce610019926108a6565b80610600565b611cdd90613c50565b38611c57565b346103e157602060ff611d2261ffff61115a84611cff366110b2565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611d4e816103d5565b166000526001602052610fb8611d6e6040600020604051928380926113f0565b805115611d8c576106b381611d866106bf935161355a565b90615693565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611dee816107e6565b60243590336000526009602052611e1b8160406000209060018060a01b0316600052602052604060002090565b5491808310611e3c57611e3092039033612c98565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611eac816103d5565b6001600160401b03906064358281116103e157611ecd9036906004016103f3565b608492919235611edc81610420565b60a43591611ee983610db5565b60c4359586116103e157611f04611f149636906004016103f3565b95909460443590602435906148e7565b60408051928352602083019190915290f35b346103e157611f3436610f48565b90611f3d612a6f565b60405192602092808385870137611f696034868381013060601b8882015203601481018852018661090f565b60009361ffff8316855260019081815260408620918751916001600160401b0383116108b957611fa383611f9d86546113b6565b86614677565b80601f84116001146120135750918080926120029695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612008575b50501b916000199060031b1c19161790555b6040519384938461465c565b0390a180f35b015192503880611fe4565b91939498601f19841661202b87600052602060002090565b938a905b828210612092575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a9593918561200298969410612079575b505050811b019055611ff6565b015160001960f88460031b161c1916905538808061206c565b80888697829497870151815501960194019061202f565b346103e15760403660031901126103e1576108466004356120c9816107e6565b6024359033612bc9565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff611d22602435612156816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356121bc816107e6565b6121c4612a6f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435612226816103d5565b602435612232816103d5565b6064356001600160401b0381116103e1576122519036906004016103f3565b909261225b612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611cb1604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161463b565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b61230436610431565b9161ffff8694929616600052600560205261234b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156123f5576123e484836123dd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006123c984610b6a8e8a8f6123f09f908f6123af906123a26123c39436908d6109b8565b6020815191012014614828565b61ffff166000526005602052604060002090565b9161480f565b556123d536878d6109b8565b9336916109b8565b9188614b04565b6040519586958661487e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e157602061117b600435612491816107e6565b6024359061249e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561252b816103d5565b602435612537816103d5565b60443591612543612a6f565b82156125be576123f07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806125988560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561265781610db5565b61265f612a6f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612697816103d5565b6001600160401b03906024358281116103e1576126b89036906004016103f3565b9190604435906126c782610420565b6084356126d3816107e6565b60c4359586116103e1576126ee6100199636906004016103f3565b94909360e4359660a43594606435936149dd565b346103e15761271036610f48565b919061271a612a6f565b60009161ffff81168352600160209080825260408520916001600160401b0387116108b9576127538761274d85546113b6565b85614677565b8590601f88116001146127ba5750918680879893612002957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936127af575b501b906000198460031b1c19161790556040519384938461465c565b880135925038612793565b90601f1988166127cf85600052602060002090565b9288905b828210612835575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab989961200296941061281b575b505082811b019055611ff6565b870135600019600386901b60f8161c19169055388061280e565b808685968294968c013581550195019301906127d3565b346103e15760403660031901126103e157602060ff611d22602435612870816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356128d6816107e6565b6128de612a6f565b6001600160a01b03908116801561292c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561299d816103d5565b602435906129aa826103d5565b6129b56044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612a33575b5060405191829182610653565b612a4e913d8091833e612a46818361090f565b810190614616565b38612a26565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b03163303612a8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612ad29133612c98565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4357565b6051019081605111610f4357565b91908201809211610f4357565b15612b1d57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612b7557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612c4557612c2a826000805160206158e083398151915294612c40941696612c03881515612b16565b612c2484612c1083612118565b54612c1d82821015612b6e565b0391612118565b55612118565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612d72578216938415612d225780612d117f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612cfa612c409560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612dfb5750505050565b808410612e1657612e0d930391612c98565b3880808061141d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612e6257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612ea757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103f1826103d5565b51906103f182610db5565b51906103f1826107e6565b91908260a09103126103e157604051612f1e816108be565b60808082948051612f2e81610db5565b84526020810151612f3e816107e6565b60208501526040810151612f51816117cf565b60408501526060810151612f64816117cf565b60608501520151910152565b91908260609103126103e157604051612f88816108d9565b60408082948051612f9881610db5565b84526020810151612fa8816107e6565b60208501520151910152565b51906103f1826118a9565b81601f820112156103e157805190612fd682611892565b92604090612fe68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410613017575050505050505090565b86848303126103e15784879161302b610930565b61303487612ef0565b8152613041838801612ef0565b83820152613050868801612ef0565b868201526060613061818901612ee5565b908201526080613072818901612efb565b9082015260a0613083818901612ef0565b9082015260c0613094818901612efb565b9082015260e06130a5818901612efb565b90820152610100808801519082015261012080880151908201526101406130cd818901612fb4565b9082015261016080880151908201526101808088015190820152815201930192613006565b909291926130ff8161099d565b9161310d604051938461090f565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e1578151610664926020016130f2565b919060a0838203126103e1576040519061315a826108be565b8193805161316781610db5565b835260208101516020840152604081015161318181610db5565b60408401526060810151613194816103d5565b60608401526080810151916001600160401b0383116103e157608092611a6b9201613127565b9091818303906102a082126103e15782516131d4816103d5565b9360208401516131e3816107e6565b9360408101516131f281610420565b936101e08091605f1901126103e157613209610950565b9061321660608401612ef0565b82526080830151602083015260a0830151604083015261323860c08401612efb565b606083015261324960e08401612efb565b608083015261328b8461010092613261848701612ef0565b60a086015261012086015160c086015261327f826101408801612f06565b60e08601528501612f70565b9082015292610240820151926001600160401b03938481116103e157816132b3918501612fbf565b936102608401519081116103e157610280916132d0918501613141565b92015190565b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b90815180825260208080930193019160005b82811061335a575050505090565b90919293826101a0600192875161337382825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520195019392910161334c565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b9594939061024093613504613525946135169360018060a01b03168a528051151560208b0152602081015160408b0152604081015160608b01526134b8606082015160808c019060018060a01b03169052565b60808101516001600160a01b031660a08b015260a0810151151560c08b015260c081015160e08b015260e0810151906134f761010092838d01906132d6565b01516101a08a0190613316565b610260806102008a015288019061333a565b90868203610220880152613422565b930152565b3d15613555573d9061353b8261099d565b91613549604051938461090f565b82523d6000602084013e565b606090565b601319810191908211610f4357565b605019810191908211610f4357565b91908203918211610f4357565b60405163a9059cbb60e01b60208083019182526001600160a01b03949094166024830152604480830195909552938152919261361e929160009081906135cc60648661090f565b60018060a01b031692604051946135e2866108f4565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161361861352a565b916136a0565b80518061362a57505050565b818391810103126103e15781015161364181610db5565b156136495750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561370257508151156136b4575090565b3b156136bd5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156137155750805190602001fd5b60405162461bcd60e51b81529081906137319060048301610653565b0390fd5b926103f196919897956137bf6102409661379d60406137ca956137d5986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190604080918051151584526020810151602085015201511515910152565b8051151560e08801526020810151610100880152604001511515610120870152565b6101408501906132d6565b6101e0830190613316565b01906040908160018060a01b0391828151168552826020820151166020860152015116910152565b6040513d6000823e3d90fd5b908160209103126103e15751610664816107e6565b908160209103126103e1575190565b9260e0949161066497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613422565b9193909361387c303314612e5b565b8051613b1d575b506060840180519092906001600160a01b0316916020936138a985880194855190612ac7565b50865115613a45576040870194855115613939575b50516138d490611c6e906001600160a01b031681565b608087015190939060c0906001600160a01b031691519551970151843b156103e15760009661391a91604051998a98899788966303c592fd60e21b88526004880161382d565b03925af180156107dd5761392c575b50565b80611cce6103f1926108a6565b815160049190819061395590611c6e906001600160a01b031681565b6040516331d8733560e11b815293849182905afa9182156107dd576139b7928291600091613a18575b5060808b015188516040516305da91c960e31b81526001600160a01b039092166004830152602482015293849190829081906044820190565b03916001600160a01b03165afa9283156107dd576138d493611c6e93611c6e936000926139eb575b505088529250506138be565b613a0a9250803d10613a11575b613a02818361090f565b81019061381e565b38806139df565b503d6139f8565b613a389150823d8411613a3e575b613a30818361090f565b810190613809565b3861397e565b503d613a26565b5192945091613a5e90611c6e906001600160a01b031681565b91845191613a6a610970565b946000968787528782880152876040880152613a84610970565b96888852888389015260408801525197613a9c610970565b600181529889830152600160408a015260e0810151610100820151608090920151613ae9906001600160a01b0316613ad2610970565b8b81526001600160a01b0390911694810194909452565b886040840152863b15613b19579061391a92916040519a8b998a9889976339551beb60e21b895260048901613735565b8880fd5b613b2690613ee4565b38613883565b8051821015613b405760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613b5d57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613bbd60209295949560408552604085019061062e565b9416910152565b60009060033d11613bd157565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613c3f57818401948551938411613c47573d85010160208487010111613c3f57506106649291016020019061090f565b949350505050565b50949350505050565b9060005b8251811015613edf576040613c7581613c6d8487613b2c565b510151151590565b15613c97575080613c91613c8b60019386613b2c565b516140d4565b01613c54565b6060613cc161030561ffff613cba84613cb0888b613b2c565b51015161ffff1690565b1614613b56565b613cd060a0613c6d8588613b2c565b613cee60c0613cdf8689613b2c565b5101516001600160a01b031690565b91613dbf613d0160e0613cdf888b613b2c565b93613db1610100613d12898c613b2c565b5101518a610120613d238b83613b2c565b510151613d3f610140613d368d85613b2c565b51015160ff1690565b90610180613d5d8d610160613d548288613b2c565b51015195613b2c565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f19810185528461090f565b613de2613dd7611c6e611c6e6080613cdf8a8d613b2c565b91613cb0878a613b2c565b90803b156103e157613e106000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081613ecc575b50613e3a576001613e2a613bc4565b6308c379a014613e84575b613e45575b505050600190613c91565b613e5e610b89613e5361352a565b92613c6d878a613b2c565b15613e3a57613e6f6137319161405c565b925162461bcd60e51b81529283928301610653565b613e8c613be2565b80613e98575b50613e35565b60009150613ead610b8984613c6d898c613b2c565b15613e9257845162461bcd60e51b815290819061373190828701610653565b80611cce613ed9926108a6565b38613e1b565b509050565b9060005b8251811015613edf576040613f0181613c6d8487613b2c565b15613f1d575080613f17613c8b60019386613b2c565b01613ee8565b6060613f3661030661ffff613cba84613cb0888b613b2c565b613f4560a0613c6d8588613b2c565b613f5460c0613cdf8689613b2c565b91613f67613d0160e0613cdf888b613b2c565b613f7f613dd7611c6e611c6e6080613cdf8a8d613b2c565b90803b156103e157613fad6000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081614049575b50613fd7576001613fc7613bc4565b6308c379a014614001575b613fe2575b505050600190613f17565b613ff0610b89613e5361352a565b15613fd757613e6f6137319161405c565b614009613be2565b80614015575b50613fd2565b6000915061402a610b8984613c6d898c613b2c565b1561400f57845162461bcd60e51b815290819061373190828701610653565b80611cce614056926108a6565b38613fb8565b60448151106140ad576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e1576024820151610664926044016130f2565b506040516140ba816108f4565b600a8152695553444f3a206461746160b01b602082015290565b80511561424a5760808101516140f490611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101208401519061412761014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081614237575b506139295760016141a7613bc4565b6308c379a0146141fa575b6141b95750565b6141d1610b8960206141c961352a565b930151151590565b15613929576141e26137319161405c565b60405162461bcd60e51b815291829160048301610653565b614202613be2565b8061420e575b506141b2565b6020830151600092506142085760405162461bcd60e51b81529081906137319060048301610653565b80611cce614244926108a6565b38614198565b608081015161426390611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361429d61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161418d565b1561431a57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b91906101c0838203126103e15761436661097d565b9261437081612ef0565b84526020810151602085015261438860408201612ef0565b6040850152606081015160608501526143a360808201612ef0565b608085015260a081015160a08501526143bf8260c08301612f70565b60c0850152610120916143d481848401612f70565b60e08601526101808201516001600160401b03908181116103e157826143fb918501613141565b6101008701526101a08301519081116103e1576144189201613141565b90830152565b918282039161010083126103e1578351614437816103d5565b9360606020820151614448816107e6565b94603f1901126103e15760405161445e816108d9565b604082015161446c816107e6565b8152606082015161447c816107e6565b6020820152608082015161448f816107e6565b60408201529260a0820151926001600160401b03938481116103e157816144b7918501614351565b9360c08401519081116103e15760e0916132d0918501612fbf565b6001600160a01b03918216815282518216602080830191909152830151821660408083019190915290920151166060820152610664919060a0608082015261451f60a08201835115159052565b602082015160c08201526040820151151560e0820152606082015161010090818301526145a560808401519161455c610120938486019015159052565b60a085015161014085015261457a60c0860151610160860190613316565b60e0850151906145906101c09283870190613316565b85015190610220850152610260840190613422565b92015190610240609f1982850301910152613422565b156145c257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201613127565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff6106649593168152816020820152019161463b565b90601f811161468557505050565b600091825260208220906020601f850160051c830194106146c1575b601f0160051c01915b8281106146b657505050565b8181556001016146aa565b90925082906146a1565b92909161473d5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906147378261472961470860a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f19810184528361090f565b30615842565b93901561474c575b5050505050565b6147559461475f565b3880808080614745565b91936147fc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561480a939561ffff815160208301209616958660005260056020526147c38361115a60208b6040600020826040519483868095519384920161060b565b556001600160401b036147e8604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561482f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916148aa9060609461ffff6001600160401b03949998979916855260806020860152608085019161463b565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b949195989790611649614910604099614908614916976149339936916109b8565b9436916109b8565b976151e8565b928451968794859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361497657509190565b905061049291925060403d8111610ee557610ed6818361090f565b939694916149bf9061066499979461ffff6001600160401b039416875260c0602088015260c087019161463b565b961660408401526060830152608082015260a081850391015261463b565b91969792989594939094303303614a65576149f99085306155df565b60405181815290946001600160a01b03169390849061ffff8516906000805160206158c083398151915290602090a3833b156103e1576000988995614a55936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614991565b0393f180156107dd5761392c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103e1576020825192015190565b9192610664959361ffff614aef9316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff614b12846157e7565b1680614c655750505060ff614b26826157e7565b161580614c5a575b614b37906152ec565b614b49614b4382615797565b91615832565b90916001600160a01b039182841615614c50575b614b91906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661526f565b918316928315614c0b576000805160206158c083398151915291614bcb61ffff92614bc6614bc187600a54612b09565b600a55565b612118565b8481540190558460006000805160206158e083398151915260405180614bf689829190602083019252565b0390a360405193845216918060208101612c40565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614b5d565b508051602914614b2e565b600103614c75576103f193614f47565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614cc157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614d2761066497959361ffff614d359416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614d839193929561ffff81166000526001602052614d8a6040600020604051948580926113f0565b038461090f565b825115614df157614d9c855182614e4f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e15760009661391a91604051998a988997889662c5803160e81b885260048801614d02565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614eb4575b11614e7057565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614e69565b98979692936001600160401b03614ef060e0989461ffff6135259995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b6001600160401b03614f3c6040939695949660608452606084019061062e565b951660208201520152565b9091614f52846153a0565b9091614f7c610b8287610b6a614f768b61ffff166000526007602052604060002090565b8c6110f7565b91614fb26001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661526f565b9288888b83156150ae575b505050853b1561506357946150049694614737948a94614729948d9960001461505c5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614ebe565b901561505157509061504c61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614f1c565b0390a2565b926103f1949261475f565b1692614fe5565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061480a915050565b90610b6a610c9b92610c95896150c86150dd979b3061558f565b9961ffff166000526007602052604060002090565b88888b614fbd565b60065460ff16156151325760228251106116505761ffff60226103f193015191166000526002602052615125604060002060008052602052604060002090565b549061161782151561513a565b50516116c257565b1561514157565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561518d57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561526a57046001600160401b0390818111615225571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6151d2565b81810292918115918404141715610f4357565b7f0000000000000000000000000000000000000000000000000000000000000000801561526a57810690818103908111610f435791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152610664816108d9565b156152f357565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615390815180926020868601910161060b565b810103605181018452018261090f565b906153b8600160ff6153b1856157e7565b16146152ec565b6153c182615797565b906153cb83615832565b90604984511061543c576049840151936051815110615400576153fd6051820151916153f78151613569565b90615713565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615528575b80156154d957816154ae846154a1600095612118565b54612c1d82821015615538565b556154bc83600a5403600a55565b6040518381526000805160206158e083398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615533833384612dc3565b61548b565b1561553f57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614c0b57600a5490828201809211610f43576000926155d06020926000805160206158e083398151915294600a55612118565b818154019055604051908152a3565b6106649183916001600160a01b03811630811415908161560b575b5015612bc957610d94833383612dc3565b9050331415386155fa565b1561561d57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561565a57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6156a7826156a081612aed565b1015615616565b6156b48282511015615653565b816156cc575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106157005750508252601f01601f191660405290565b90928351815260208091019301906156e8565b615720826156a081612aed565b615735815161572e84612afb565b1115615653565b8161574d575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106157845750508252601f01601f191660405290565b909283518152602080910193019061576c565b60218151106157aa57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106157f7576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615400576029015190565b6040519392909160009160c08601916001600160401b038311878410176108b95783926040526096875282602088019560a036883760208451940192f1903d9060968211615896575b6000908286523e9190565b6096915061588b56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220aa56927203a9e7854bf7fd50f67fc6c4a0aef86bc68507d5cada8648507af73464736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/USDOMarketModule.json b/src/artifacts/tapioca-bar/USDOMarketModule.json index 65e11807..df7a040d 100644 --- a/src/artifacts/tapioca-bar/USDOMarketModule.json +++ b/src/artifacts/tapioca-bar/USDOMarketModule.json @@ -80,63 +80,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -911,19 +854,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1043,252 +973,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "lend", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "components": [ - { - "internalType": "bool", - "name": "repay", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "depositAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "repayAmount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "marketHelper", - "type": "address" - }, - { - "internalType": "address", - "name": "market", - "type": "address" - }, - { - "internalType": "bool", - "name": "removeCollateral", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "removeCollateralAmount", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "bool", - "name": "lock", - "type": "bool" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint128", - "name": "lockDuration", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "uint256", - "name": "fraction", - "type": "uint256" - } - ], - "internalType": "struct ITapiocaOptionLiquidityProvision.IOptionsLockData", - "name": "lockData", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "bool", - "name": "participate", - "type": "bool" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tOLPTokenId", - "type": "uint256" - } - ], - "internalType": "struct ITapiocaOptionsBroker.IOptionsParticipateData", - "name": "participateData", - "type": "tuple" - } - ], - "internalType": "struct IUSDOBase.ILendOrRepayParams", - "name": "lendParams", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "bool", - "name": "permitAll", - "type": "bool" - }, - { - "internalType": "bool", - "name": "allowFailure", - "type": "bool" - }, - { - "internalType": "bool", - "name": "approveOnYieldBox", - "type": "bool" - }, - { - "internalType": "uint16", - "name": "actionType", - "type": "uint16" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bool", - "name": "permitBorrow", - "type": "bool" - }, - { - "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" - } - ], - "internalType": "struct ICommonData.IApproval[]", - "name": "approvals", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "bool", - "name": "withdraw", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "withdrawLzFeeAmount", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "withdrawOnOtherChain", - "type": "bool" - }, - { - "internalType": "uint16", - "name": "withdrawLzChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "withdrawAdapterParams", - "type": "bytes" - } - ], - "internalType": "struct ICommonData.IWithdrawParams", - "name": "withdrawParams", - "type": "tuple" - } - ], - "name": "lendInternal", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, { "inputs": [], "name": "lzEndpoint", @@ -1330,19 +1014,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1466,19 +1137,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "remove", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1687,7 +1345,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -1978,7 +1636,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -2473,8 +2131,8 @@ "type": "receive" } ], - "bytecode": "0x61010060409080825234620004ee57606081620067b28038038091620000268285620004f3565b833981010312620004ee5780516001600160a01b039182821691829003620004ee57602080820151918483168303620004ee5785015193808516809503620004ee57620000726200052d565b906200007d6200052d565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003f557600b54916001968784811c94168015620004e3575b89851014620004cf578190601f948581116200047b575b5089908583116001146200041557889262000409575b5050600019600383901b1c191690871b17600b555b8051928311620003f557600c548681811c91168015620003ea575b88821014620003d65790818389959493116200037e575b50839183116001146200031357600494929186918362000307575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002fd57908291899391620002b2575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d555161625390816200055f82396080518181816104ed015281816107b001528181610ceb01528181610e80015281816110490152818161207e0152818161244801528181612c21015281816136ec01528181614e9b0152615465015260a0518161179e015260c051818181610b4f01528181615692015281816158f401528181615aac0152615b44015260e051816126a70152f35b80929350858092503d8311620002f5575b620002cf8183620004f3565b81010312620002f1575161ffff81168103620002f15787919061ffff620001c5565b5080fd5b503d620002c3565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200036557509683600498106200034b575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200033c565b8289015184558b978b9690940193928301920162000327565b9091929350600c86528786208380860160051c8201928a8710620003cc575b9189918b97969594930160051c01915b828110620003bd57505062000162565b8881558a9650899101620003ad565b925081926200039d565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200046457505084116200044a575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200043b565b8385015186558d9790950194938401930162000428565b909150600b88528988208580850160051c8201928c8610620004c5575b918b91869594930160051c01915b828110620004b657505062000105565b8a81558594508b9101620004a6565b9250819262000498565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200051757604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005175760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f7578063100b6523146103f257806310ddb137146103ed57806318160ddd1461038457806323b872dd146103e8578063313ce567146103e3578063365260b4146103de57806339509351146103d95780633d8b38f6146103d45780633f1f4fa4146103cf57806342d65a8d146103ca57806344770515146103c55780634c42899a146103c557806358edef4c146103c05780635b8c41e6146103bb5780635c975abb146103b657806366ad5c8a146103b1578063695ef6bf146103ac57806370a08231146103a7578063715018a6146103a25780637533d7881461039d57806376203b4814610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a57806395d89b41146103755780639bdb9812146103705780639d3f4d1a1461036b5780639f38369a14610366578063a457c2d714610361578063a4c51df51461035c578063a6c3d16514610357578063a9059cbb14610352578063b02f69a21461034d578063b353aaa714610348578063ba03a8d714610343578063baf3292d1461033e578063bd147cd614610339578063c446183414610334578063cbed8b9c1461032f578063ce8849ed1461032a578063d1deba1f14610325578063dbd01de114610320578063dd62ed3e1461031b578063de40657714610316578063df2a5b3b14610311578063e6a20ae61461030c578063e78eb94614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612c8b565b612bb7565b612b02565b612adf565b612aa7565b61297e565b6128f5565b612893565b6127ee565b6127c3565b6126d6565b612691565b612647565b61261e565b6124e6565b6124bd565b6123f4565b6123d7565b61224b565b612130565b6120f8565b612068565b611fc1565b611ce6565b611b84565b611aed565b611a41565b61199e565b611980565b611935565b611891565b611868565b61184a565b610d4c565b611821565b6117c2565b611784565b6115ed565b611596565b611462565b611425565b611342565b61129d565b61127a565b611226565b6110cc565b6110b0565b61102f565b610ff6565b610f86565b610efe565b610df6565b610daa565b610d6a565b610cc2565b610a80565b6108c5565b610890565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b61157b565b805190818414918261059b575b5081610578575b50614da4565b3691610a2e565b923691610a2e565b926151f8565b9050610585368486610a2e565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c9816114ab565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610983565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a9061091a565b80f35b613548565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b6064359061043182610832565b60e4359061043182610832565b610104359061043182610832565b6084359061043182610832565b60a4359061043182610832565b359061043182610832565b34610421576040366003190112610421576108ba6004356108b081610832565b6024359033612ecf565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108e581610415565b6108ed612ca6565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161092d57604052565b610904565b60a081019081106001600160401b0382111761092d57604052565b606081019081106001600160401b0382111761092d57604052565b604081019081106001600160401b0382111761092d57604052565b601f909101601f19168101906001600160401b0382119082101761092d57604052565b6040519061012082016001600160401b0381118382101761092d57604052565b604051906101a082016001600160401b0381118382101761092d57604052565b6040519061014082016001600160401b0381118382101761092d57604052565b604051906104318261094d565b6001600160401b03811161092d57601f01601f191660200190565b929192610a3a82610a13565b91610a486040519384610983565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610a2e565b346104215760a036600319011261042157600435610a9d81610832565b602435610aa981610415565b6001600160401b039160443583811161042157610aca903690600401610a65565b9060643590610ad882610460565b60843591858311610421578492610af3903690600401610a65565b610afe3330146137f2565b6001600160a01b03831660009081526014602052604090205460ff16610b2390614561565b805181016020016020820190610b38916146a1565b97965097945099925090600160a01b60019003169a7f0000000000000000000000000000000000000000000000000000000000000000911690610b7a91615b2f565b8260208a0197889283528c30610b8f906120ad565b549883610b9b8d610fe2565b610ba590886111e9565b90610baf9161120f565b5460ff161560008051602061619e8339815191529d61ffff9d6000978897610c1394610c85575b505050610c05610be5306120ad565b549b6040519485936020850197635e8a3e6b60e11b895260248601614742565b03601f198101835282610983565b51915af493610c20613e74565b9415610c4a575b5050505050505192610c456040519283921694829190602083019252565b0390a3005b610c6995610c579161487e565b865180911015610c74575b508861528c565b388080808080610c27565b610c7f908b306148a6565b38610c62565b610ca8610ca2610cba94610c9d610cad955130615e4d565b610fe2565b8c6111e9565b61120f565b805460ff19166001179055565b8f8d8a610bd6565b34610421576000602036600319011261078457600435610ce181610415565b610ce9612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b34610421576060366003190112610421576108ba600435610d8a81610832565b602435610d9681610832565b60443591610da5833383612fd5565b612e00565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b610124359061043182610dc6565b60c4359061043182610dc6565b359061043182610dc6565b346104215760a036600319011261042157600435610e1381610415565b60643590610e2082610dc6565b608435906001600160401b03821161042157610e456105636040933690600401610433565b90610e7c610e5f610e57604435615aaa565b602435615b79565b928451958694859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ecd575b50604080519182526020820192909252f35b9050610ef0915060403d8111610ef7575b610ee88183610983565b8101906155d9565b9038610ebb565b503d610ede565b3461042157604036600319011261042157600435610f1b81610832565b336000526009602052610f328160406000206120e1565b546024358101809111610f49576108ba9133612ecf565b612d0e565b90604060031983011261042157600435610f6781610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610fd3610f9c36610f4e565b9390911660005260018452610fbe610fc56040600020604051928380926114e5565b0382610983565b848151910120923691610a2e565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff60043561101681610415565b1660005260036020526020604060002054604051908152f35b346104215761103d36610f4e565b9190611047612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b82528161109e6000988997889460048501615189565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b34610421576020366003190112610421576004356001600160401b038111610421576110ff611119913690600401610a65565b61110a3033146137f2565b60208082518301019101613b64565b809192945051611195575b5061113a6111356111358551610826565b610826565b803b1561042157604051639391dd6d60e01b81529360009385938492869284926111729290916001600160a01b031660048501613c7e565b03925af1801561081d5761118257005b8061118f6100199261091a565b80610640565b61119e90613ea4565b38611124565b906060600319830112610421576004356111bd81610415565b91602435906001600160401b038211610421576111dc91600401610a65565b906044356106a481610460565b60209061120392826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461042157602061127161ffff61126383611240366111a4565b94909116600052600582526040600020826040519483868095519384920161064b565b82019081520301902061120f565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b34610421576112ab36610471565b91929493903033036112cf5761056a6112c992610019973691610a2e565b92615633565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126104215760a490565b908160609103126104215790565b60a03660031901126104215760043561135a81610832565b60243561136681610415565b604435916084356001600160401b03811161042157602061ffff61139d60008051602061615e833981519152933690600401611334565b9361141085356113ac81610832565b6113ca61056386890135986113c08a610832565b60408101906153e3565b6113d4818a615a45565b6113e96113e2606435615b42565b5085615d37565b976113f58915156157e8565b6114076114018a615aaa565b8c615b79565b9234938b614e57565b6040519485526001600160a01b0316941692a4005b346104215760203660031901126104215760043561144281610832565b60018060a01b031660005260086020526020604060002054604051908152f35b34610421576000806003193601126107845761147c612ca6565b80546001600160a01b03198116825581906001600160a01b03166000805160206161be8339815191528280a380f35b90600182811c921680156114db575b60208310146114c557565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ba565b90600092918054916114f6836114ab565b9182825260019384811690816000146115585750600114611518575b50505050565b90919394506000526020928360002092846000945b838610611544575050505001019038808080611512565b80548587018301529401938590820161152d565b9294505050602093945060ff191683830152151560051b01019038808080611512565b9061043161158f92604051938480926114e5565b0383610983565b346104215760203660031901126104215761ffff6004356115b681610415565b1660005260016020526106ff610fbe6115d96040600020604051928380926114e5565b60405191829160208352602083019061066e565b60e03660031901126104215760043561160581610832565b60243561161181610415565b604435916001600160401b039060843582811161042157611636903690600401610433565b91909260a43561164581610460565b60c4358281116104215761165d903690600401611334565b908661169583359661166e88610832565b61168d6116836020870135966113c088610832565b9a90923691610a2e565b983691610a2e565b9360ff60065416600014611702579360209593611407846116d060008051602061615e8339815191529a958561ffff9a6114109916916150a6565b6116e56116de606435615b42565b5088615d37565b9a6116f18c15156157e8565b8d6116fb8d615aaa565b9033615bf4565b505082939192516117305760008051602061615e8339815191529460209461ffff94611407611410946116d0565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104215760403660031901126104215760206112716004356117e481610415565b61ffff602435916117f483610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b34610421576000806003193601126107845760405181600c546118b3816114ab565b8084529060019081811690811561075c57506001146118dc576106ff846106f381880382610983565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061192257505050816106ff936106f392820101936106e3565b8054858501870152928501928101611906565b3461042157602060ff61197461ffff61126384611951366111a4565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff6004356119be81610415565b166000526001602052610fbe6119de6040600020604051928380926114e5565b8051156119fc576106f3816119f66106ff9351614860565b90615f51565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611a5e81610832565b60243590336000526009602052611a798160406000206120e1565b5491808310611a9a57611a8e92039033612ecf565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611b0a81610415565b6001600160401b039060643582811161042157611b2b903690600401610433565b608492919235611b3a81610460565b60a43591611b4783610dc6565b60c43595861161042157611b62611b72963690600401610433565b9590946044359060243590615415565b60408051928352602083019190915290f35b3461042157611b9236610f4e565b90611b9b612ca6565b60405192602092808385870137611bc76034868381013060601b88820152036014810188520186610983565b61ffff8216600090815260018086526040822087519296909291906001600160401b03831161092d57611c0483611bfe86546114ab565b866151a4565b80601f8411600114611c62575091808092611c519695948a9b60008051602061617e8339815191529b94611c57575b50501b916000199060031b1c19161790555b60405193849384615189565b0390a180f35b015192503880611c33565b91939498601f198416611c7a87600052602060002090565b938a905b828210611ccf5750509160008051602061617e833981519152999a95939185611c5198969410611cb6575b505050811b019055611c45565b015160001960f88460031b161c19169055388080611ca9565b808886978294978701518155019601940190611c7e565b34610421576040366003190112610421576108ba600435611d0681610832565b6024359033612e00565b6001600160801b0381160361042157565b60a0906101631901126104215760405190611d3b82610932565b8161016435611d4981610dc6565b815261018435611d5881610832565b60208201526101a435611d6a81611d10565b60408201526101c435611d7c81611d10565b606082015260806101e435910152565b60a0906101031901126104215760405190611da682610932565b8161010435611db481610dc6565b815261012435611dc381610832565b602082015261014435611dd581611d10565b604082015261016435611de781611d10565b6060820152608061018435910152565b6060906102031901126104215760405190611e118261094d565b8161020435611e1f81610dc6565b815261022435611e2e81610832565b6020820152604061024435910152565b6060906101a31901126104215760405190611e588261094d565b816101a435611e6681610dc6565b81526101c435611e7581610832565b602082015260406101e435910152565b906101e060831983011261042157611f00611e9e6109a6565b92608435611eab81610dc6565b845260a435602085015260c4356040850152611ec5610850565b6060850152611ed261085d565b6080850152611edf610dd0565b60a08501526101443560c0850152611ef681611d21565b60e0850152611df7565b610100830152565b906101e060231983011261042157611f00611f216109a6565b92602435611f2e81610dc6565b845260443560208501526064356040850152611f4861086b565b6060850152611f55610878565b6080850152611f62610dde565b60a085015260e43560c0850152611f7881611d8c565b60e0850152611e3e565b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b908160a09103126104215790565b6102c036600319011261042157600435611fda81610832565b602435611fe681610832565b60443591611ff383610415565b611ffb610843565b9261200536611e85565b6001600160401b03946102643586811161042157612027903690600401611f82565b9290916102843588811161042157612043903690600401611fb3565b946102a43598891161042157612060610019993690600401610433565b9890976136a6565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff61197460243561211c81610832565b600435600052600f845260406000206120e1565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561217081610832565b612178612ca6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b6001600160401b03811161092d5760051b60200190565b60ff81160361042157565b3590610431826121b7565b919060a08382031261042157604051906121e682610932565b819380356121f381610dc6565b835260208101356020840152604081013561220d81610dc6565b6040840152606081013561222081610415565b60608401526080810135916001600160401b038311610421576080926122469201610a65565b910152565b6102403660031901126104215760043561226481610832565b61226d36611f08565b6001600160401b0391906102043590838211610421573660238301121561042157816004013561229c816121a0565b9260406122ab81519586610983565b8285526020908186019060246101a08096028501019336851161042157602401915b8483106122fc5750505050505061022435938411610421576122f66100199436906004016121cd565b92614b13565b8583360312610421578386916123106109c6565b61231986610deb565b8152612326838701610deb565b83820152612335858701610deb565b858201526060612346818801610426565b908201526080612357818801610885565b9082015260a0612368818801610deb565b9082015260c0612379818801610885565b9082015260e061238a818801610885565b90820152610100808701359082015261012080870135908201526101406123b28188016121c2565b90820152610160808701359082015261018080870135908201528152019201916122cd565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561241181610415565b60243561241d81610415565b6064356001600160401b0381116104215761243c903690600401610433565b9092612446612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104215760008094611172604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613101565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b6124ef36610471565b9161ffff8694929616600052600560205261252381604060002060206040518092878b83378782019081520301902061120f565b549182156125cd576125bc84836125b57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125a184610ca88e8a8f6125c89f908f6125879061257a61259b9436908d610a2e565b6020815191012014615356565b61ffff166000526005602052604060002090565b9161533d565b556125ad36878d610a2e565b933691610a2e565b9188615633565b604051958695866153ac565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b3461042157604036600319011261042157602061127160043561266981610832565b6024359061267682610832565b6001600160a01b0316600090815260098452604090206120e1565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610421576060366003190112610421576004356126f381610415565b6024356126ff81610415565b6044359161270b612ca6565b8215612786576125c87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806127608560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b90816101c09103126104215790565b6101403660031901126104215760043561280781610832565b60243561281381610832565b6044359161282083610415565b612828610843565b6001600160401b0393906084358581116104215761284a903690600401610433565b9061285436611323565b92610104358881116104215761286e9036906004016127df565b94610124359889116104215761288b610019993690600401611f82565b989097613405565b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356128d381610dc6565b6128db612ca6565b151560ff196006541660ff821617600655604051908152a1005b34610421576101003660031901126104215760043561291381610415565b6001600160401b039060243582811161042157612934903690600401610433565b91906044359061294382610460565b60843561294f81610832565b60c4359586116104215761296a610019963690600401610433565b94909360e4359660a435946064359361550c565b346104215761298c36610f4e565b9190612996612ca6565b61ffff82166000908152600160208181526040832092949291906001600160401b03871161092d576129d2876129cc85546114ab565b856151a4565b8590601f8811600114612a275750918680879893611c51956000805160206161fe8339815191529993612a1c575b501b906000198460031b1c191617905560405193849384615189565b880135925038612a00565b90601f198816612a3c85600052602060002090565b9288905b828210612a90575050918893916000805160206161fe8339815191529899611c51969410612a76575b505082811b019055611c45565b870135600019600386901b60f8161c191690553880612a69565b808685968294968c01358155019501930190612a40565b3461042157604036600319011261042157602060ff611974602435612acb81610832565b6004356000526010845260406000206120e1565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612b1f81610832565b612b27612ca6565b6001600160a01b039081168015612b6357600080546001600160a01b03198116831782559092166000805160206161be8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612bd481610415565b60243590612be182610415565b612bec604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612c6a575b5060405191829182610693565b612c85913d8091833e612c7d8183610983565b810190615164565b38612c5d565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612cba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612d099133612ecf565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4957565b6051019081605111610f4957565b91908201809211610f4957565b15612d5457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612dac57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612e7c57612e61826000805160206161de83398151915294612e77941696612e3a881515612d4d565b612e5b84612e47836120ad565b54612e5482821015612da5565b03916120ad565b556120ad565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612f84578216938415612f345780612f237f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612f1e612e77956120c7565b6120e1565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612ff58160406000206120e1565b5492600184016130055750505050565b80841061302057613017930391612ecf565b38808080611512565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b356106a481610dc6565b1561307657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356130c681610dc6565b1515845260208101356130d881610832565b6001600160a01b031660208501520135910152565b9035609e1982360301811215610421570190565b908060209392818452848401376000828201840152601f01601f1916010190565b803561312d81610dc6565b1515825260208101356020830152604081013561314981610dc6565b1515604083015261ffff606082013561316181610415565b1660608301526080810135601e198236030181121561042157016020810190356001600160401b0381116104215780360382136104215760a0838160806106a49601520191613101565b9190808252602080920192916000905b8282106131c9575050505090565b90919293806131e36001926131dd88610deb565b15159052565b6131f96131f1848801610deb565b151582850152565b6132116040613209818901610deb565b151590830152565b61322b6060613221818901610426565b61ffff1690830152565b613244608061323b818901610885565b90830190611814565b61325460a0613209818901610deb565b61326460c061323b818901610885565b61327460e061323b818901610885565b610100808701359082015261012080870135908201526132a461014061329b8189016121c2565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906131bb565b9391926133f79160406106a49795610305885260018060a01b0380931660208901528281356132f981610832565b168289015282602082013561330d81610832565b166060890152013561331e81610832565b16608086015260e060a086015261333b60e086016131dd83610deb565b60208101356101008601526133e561335560408301610deb565b91613367610120938489019015159052565b606081013561014088015261338b61338160808301610deb565b1515610160890152565b6133dc6133c861018060a0840135818b01526133c06101a0966133b3888d0160c088016130b7565b6102008c019086016130b7565b8301836130ed565b6101c06102608a01526102a0890190613122565b928101906130ed565b85820360df1901610280870152613122565b9260c08185039101526131ab565b92819794989399959299969196600160a01b60019003958682169a8b92338414159a61346061ffff9b6134939a61348c9660008051602061615e8339815191529f9561346e966134aa575b506040519a8b95602087016132cb565b03601f198101875286610983565b6134838d61347d368985610a2e565b90614fdf565b34953691610a2e565b928b614e57565b60405160008152931694169180602081015b0390a4565b6134b382613065565b6134fa575b6134c460808301613065565b15613450576134f4906134da33612f1e836120c7565b54906134ed60a08501358093101561306f565b3390612fd5565b38613450565b61352361350a33612f1e846120c7565b5461351c60208501358092101561306f565b3383612fd5565b6134b8565b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b9061018061010061043193805115158452602081015160208501526040810151604085015260018060a01b03606082015116606085015261360160808201516080860190611814565b60a08181015115159085015260c081015160c085015261362960e082015160e0860190613554565b0151910190613594565b61030681526001600160a01b039182166020820152918116604083015290911660608201526001600160401b0390911660808201526106a49490939092613697929091906136859060a08701906135b8565b6102c0806102808701528501916131ab565b916102a0818403910152613122565b9590969298919897939760018060a01b039586881699338b036137c3575b60208101966136d38851615b42565b5088526040516303408e4760e41b81529960208b6004817f00000000000000000000000000000000000000000000000000000000000000008e165afa90811561081d5761346061377c998f96988f9960008051602061615e8339815191529f976137578f61348c9a61376799613795575b50613750815189615d37565b5051615aaa565b6040519c8d973360208a01613633565b6134838d613776368985610a2e565b90615068565b5160405190815292169361ffff169180602081016134a5565b6137b59060203d81116137bc575b6137ad8183610983565b810190613533565b5038613744565b503d6137a3565b6137ed6137d333612f1e8c6120c7565b546137e560208401918251111561306f565b51338b612fd5565b6136c4565b156137f957565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b519061043182610832565b519061043182610dc6565b9190826060910312610421576040516138658161094d565b6040808294805161387581610dc6565b8452602081015161388581610832565b60208501520151910152565b9092919261389e81610a13565b916138ac6040519384610983565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a492602001613891565b919060a08382031261042157604051906138f982610932565b8193805161390681610dc6565b835260208101516020840152604081015161392081610dc6565b6040840152606081015161393381610415565b60608401526080810151916001600160401b0383116104215760809261224692016138c6565b91906101c0838203126104215761396e6109e6565b9261397881613842565b84526020810151602085015261399060408201613842565b6040850152606081015160608501526139ab60808201613842565b608085015260a081015160a08501526139c78260c0830161384d565b60c0850152610120916139dc8184840161384d565b60e08601526101808201516001600160401b03908181116104215782613a039185016138e0565b6101008701526101a083015190811161042157613a2092016138e0565b90830152565b5190610431826121b7565b81601f8201121561042157805190613a48826121a0565b92604090613a5882519586610983565b83855260209182860191836101a080970286010194818611610421578401925b858410613a89575050505050505090565b868483031261042157848791613a9d6109c6565b613aa687613842565b8152613ab3838801613842565b83820152613ac2868801613842565b868201526060613ad3818901613528565b908201526080613ae4818901613837565b9082015260a0613af5818901613842565b9082015260c0613b06818901613837565b9082015260e0613b17818901613837565b9082015261010080880151908201526101208088015190820152610140613b3f818901613a26565b9082015261016080880151908201526101808088015190820152815201930192613a78565b8082039160e08312610421578151613b7b81610415565b9360606020840151613b8c81610832565b94603f19011261042157604051613ba28161094d565b6040840151613bb081610832565b81526060840151613bc081610832565b60208201526080840151613bd381610832565b604082015260a084015190936001600160401b039390918481116104215781613bfd918401613959565b9360c0830151908111610421576106a49201613a31565b80516001600160a01b03908116835260208083015182169084015260409182015116910152565b9060a060806106a4938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061066e565b6001600160a01b0390911681526106a49291613c9e906020830190613c14565b60a06080820152613cb460a08201835115159052565b602082015160c08201526040820151151560e082015260608201516101009081830152613d3a608084015191613cf1610120938486019015159052565b60a0850151610140850152613d0f60c0860151610160860190613594565b60e085015190613d256101c09283870190613594565b85015190610220850152610260840190613c3b565b92015190610240609f1982850301910152613c3b565b8051821015613d645760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613d8157565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613de160209295949560408552604085019061066e565b9416910152565b60009060033d11613df557565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d602484011117613e6357818401948551938411613e6b573d85010160208487010111613e6357506106a492910160200190610983565b949350505050565b50949350505050565b3d15613e9f573d90613e8582610a13565b91613e936040519384610983565b82523d6000602084013e565b606090565b9060005b825181101561413b576040613ec981613ec18487613d50565b510151151590565b15613eeb575080613ee5613edf60019386613d50565b51614330565b01613ea8565b6060613f1561030561ffff613f0e84613f04888b613d50565b51015161ffff1690565b1614613d7a565b613f2460a0613ec18588613d50565b613f4260c0613f338689613d50565b5101516001600160a01b031690565b91614013613f5560e0613f33888b613d50565b93614005610100613f66898c613d50565b5101518a610120613f778b83613d50565b510151613f93610140613f8a8d85613d50565b51015160ff1690565b90610180613fb18d610160613fa88288613d50565b51015195613d50565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610983565b61403661402b6111356111356080613f338a8d613d50565b91613f04878a613d50565b90803b15610421576140646000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af19081614128575b5061408e57600161407e613de8565b6308c379a0146140e0575b614099575b505050600190613ee5565b6140b66140b26140a7613e74565b92613ec1878a613d50565b1590565b1561408e576140c76140dc916142b8565b925162461bcd60e51b81529283928301610693565b0390fd5b6140e8613e06565b806140f4575b50614089565b600091506141096140b284613ec1898c613d50565b156140ee57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6141359261091a565b3861406f565b509050565b9060005b825181101561413b57604061415d81613ec18487613d50565b15614179575080614173613edf60019386613d50565b01614144565b606061419261030661ffff613f0e84613f04888b613d50565b6141a160a0613ec18588613d50565b6141b060c0613f338689613d50565b916141c3613f5560e0613f33888b613d50565b6141db61402b6111356111356080613f338a8d613d50565b90803b15610421576142096000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af190816142a5575b50614233576001614223613de8565b6308c379a01461425d575b61423e575b505050600190614173565b61424c6140b26140a7613e74565b15614233576140c76140dc916142b8565b614265613e06565b80614271575b5061422e565b600091506142866140b284613ec1898c613d50565b1561426b57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6142b29261091a565b38614214565b604481511061430957600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a492604401613891565b5060405161431681610968565b600a8152695553444f3a206461746160b01b602082015290565b8051156144a05761434a6111356111356080840151610826565b61435760c0830151610826565b61436460e0840151610826565b916101208401519061437b61014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af1908161448d575b5061440b5760016143fb613de8565b6308c379a01461444f575b61440e575b50565b6144266140b2602061441e613e74565b930151151590565b1561440b576144376140dc916142b8565b60405162461bcd60e51b815291829160048301610693565b614457613e06565b80614463575b50614406565b60208301516000925061445d575b60405162461bcd60e51b81529081906140dc9060048301610693565b8061118f61449a9261091a565b386143ec565b6144b36111356111356080840151610826565b6144c060c0830151610826565b6144cd60e0840151610826565b9161010084015190610120850151936144eb61014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e481016143e1565b1561456857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260a0910312610421576040516145be81610932565b608080829480516145ce81610dc6565b845260208101516145de81610832565b602085015260408101516145f181611d10565b6040850152606081015161460481611d10565b60608501520151910152565b91906101e08382031261042157611f009061018061462c6109a6565b9461463681613842565b8652602081015160208701526040810151604087015261465860608201613837565b606087015261466960808201613837565b608087015261467a60a08201613842565b60a087015260c081015160c08701526146968360e083016145a6565b60e08701520161384d565b9190916102c0818403126104215780516146ba81610415565b9260208201516146c981610832565b9260408301516146d881610832565b9260608101516146e781610832565b9260808201516146f681610460565b926147048260a08501614610565b61028084015190936001600160401b03939091848111610421578161472a918401613a31565b936102a0830151908111610421576106a492016138e0565b6001600160a01b03909116815260209493916102408083019161476890888501906135b8565b610200830152835180915285610260830194019060005b81811061479d575050506106a4939450610220818403910152613c3b565b909194876101a060019288516147b582825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526147eb60808083015190840190611814565b60a08181015115159083015261480960c08083015190840190611814565b61481b60e08083015190840190611814565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201960192910161477f565b601319810191908211610f4957565b605019810191908211610f4957565b91908203918211610f4957565b6001600160a01b039091168152602081019190915260400190565b61492491600080604051936148d2856134606020998a83019763a9059cbb60e01b89526024840161488b565b60018060a01b031692604051946148e886610968565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161491e613e74565b916149a6565b80518061493057505050565b818391810103126104215781015161494781610dc6565b1561494f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b91929015614a0857508151156149ba575090565b3b156149c35790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156144715750805190602001fd5b604080918051151584526020810151602085015201511515910152565b926104319691989795614a9261024096614a886040614a9d95614aa8986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190614a1b565b60e0870190614a1b565b610140850190613554565b6101e0830190613594565b0190613c14565b9081602091031261042157516106a481610832565b90816020910312610421575190565b9260e094916106a497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613c3b565b919290928051614d95575b506060830190614b2e8251610826565b92602092614b4184870195865190612cfe565b50855115614cc4576040860193845115614bca575b50611135611135614b679251610826565b9160c0614b776080880151610826565b9551945196015194833b1561042157614bac600096928793604051998a98899788966303c592fd60e21b885260048801614ad3565b03925af1801561081d57614bbd5750565b8061118f6104319261091a565b80600491614bde6111356111358651610826565b6040516331d8733560e11b815293849182905afa91821561081d57614c36928291600091614c97575b50614c1560808b0151610826565b89516040516305da91c960e31b81529586939284928392916004840161488b565b03916001600160a01b03165afa92831561081d57614b67936111359361113593600092614c6a575b50508752925050614b56565b614c899250803d10614c90575b614c818183610983565b810190614ac4565b3880614c5e565b503d614c77565b614cb79150823d8411614cbd575b614caf8183610983565b810190614aaf565b38614c07565b503d614ca5565b614cd79192506111356111359151610826565b90835190614ce3610a06565b936000958686528682870152866040870152614cfd610a06565b95878752878388015260408701525196614d15610a06565b6001815297888301526001604089015260e0810151614d5f614d406080610100850151940151610826565b614d48610a06565b8a81526001600160a01b0390911694810194909452565b876040840152853b15614d915791614bac918894936040519a8b998a9889976339551beb60e21b895260048901614a38565b8780fd5b614d9e90614140565b38614b1e565b15614dab57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92614e246106a497959361ffff614e329416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614e809193929561ffff81166000526001602052614e876040600020604051948580926114e5565b0384610983565b825115614eee57614e998551826150f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561042157600096614bac91604051998a988997889662c5803160e81b885260048801614dff565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614f5357565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614f9c57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103056000526020526040600020549061501d821515614f4c565b1015614f95565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103066000526020526040600020549061501d821515614f4c565b9190602281511061502457602261ffff910151921660005260026020526150db60406000206001600052602052604060002090565b54908101809111610f49576104319161501d821515614f4c565b61ffff16600052600360205260406000205490811561515a575b1161511657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061510f565b906020828203126104215781516001600160401b038111610421576106a492016138c6565b60409061ffff6106a495931681528160208201520191613101565b90601f81116151b257505050565b600091825260208220906020601f850160051c830194106151ee575b601f0160051c01915b8281106151e357505050565b8181556001016151d7565b90925082906151ce565b92909161526a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906152648261525661523560a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610983565b30616100565b939015615279575b5050505050565b6152829461528c565b3880808080615272565b919361532a7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95615338939561ffff815160208301209616958660005260056020526152f08361126360208b6040600020826040519483868095519384920161064b565b5561530d604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b1561535d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6153cf9398979698168452608060208501526080840191613101565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b9491959897906116fb61543e60409961543661544497615461993691610a2e565b943691610a2e565b97615aaa565b928451968794859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d5760009081936154a457509190565b90506104d291925060403d8111610ef757610ee88183610983565b939694916106a498969361ffff6154e49316865260c0602087015260c0860191613101565b6001600160401b0390961660408401526060830152608082015280840360a090910152613101565b9196979298959493909430330361559457615528908530615e9d565b60405181815290946001600160a01b03169390849061ffff85169060008051602061619e83398151915290602090a3833b15610421576000988995615584936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016154bf565b0393f1801561081d57614bbd5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff61561e9316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff615641846160a5565b16806157945750505060ff615655826160a5565b161580615789575b61566690615bad565b61567861567282616055565b916160f0565b90916001600160a01b03918284161561577f575b6156c0907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316615b2f565b91831692831561573a5760008051602061619e833981519152916156fa61ffff926156f56156f087600a54612d40565b600a55565b6120ad565b8481540190558460006000805160206161de8339815191526040518061572589829190602083019252565b0390a360405193845216918060208101612e77565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061568c565b50805160291461565d565b6001036157a457610431936158bd565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156157ef57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361585a60e0979361ffff61588f9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b930152565b6158ac6040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916158c884615c5e565b90916158e46158dd87610ca8610ca28b610fe2565b5460ff1690565b916001600160401b039161591b907f0000000000000000000000000000000000000000000000000000000000000000908416615b2f565b9288888b8315615a17575b505050853b156159cc579461596d9694615264948a94615256948d996000146159c55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01615830565b90156159ba5750906159b561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615894565b0390a2565b92610431949261528c565b169261594e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250615338915050565b90610ca8610cad92615a3789615a31615a3d979b30615e4d565b99610fe2565b906111e9565b88888b615926565b60065460ff1615615a8c5760228251106150245761ffff6022610431930151911660005260026020526040600020600080526020526040600020549061501d821515614f4c565b505161173057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115615b2a576001600160401b03919004818111615ae8571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615a94565b81810292918115918404141715610f4957565b7f00000000000000000000000000000000000000000000000000000000000000008015615b2a57810690818103908111610f495791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a48161094d565b15615bb457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615c4e815180926020868601910161064b565b8101036051810184520182610983565b90615c76600160ff615c6f856160a5565b1614615bad565b615c7f82616055565b90615c89836160f0565b906049845110615cfa576049840151936051815110615cbe57615cbb605182015191615cb5815161486f565b90615fd1565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615de6575b8015615d975781615d6c84615d5f6000956120ad565b54612e5482821015615df6565b55615d7a83600a5403600a55565b6040518381526000805160206161de83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615df1833384612fd5565b615d49565b15615dfd57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561573a57600a5490828201809211610f4957600092615e8e6020926000805160206161de83398151915294600a556120ad565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615ec9575b5015612e0057610da5833383612fd5565b905033141538615eb8565b15615edb57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615f1857565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615f6582615f5e81612d24565b1015615ed4565b615f728282511015615f11565b81615f8a575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615fbe5750508252601f01601f191660405290565b9092835181526020809101930190615fa6565b615fde82615f5e81612d24565b615ff38151615fec84612d32565b1115615f11565b8161600b575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106160425750508252601f01601f191660405290565b909283518152602080910193019061602a565b602181511061606857602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106160b5576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615cbe576029015190565b6040519392909160009160c08601916001600160401b0383118784101761092d5783926040526096875282602088019560a036883760208451940192f1903d9060968211616154575b6000908286523e9190565b6096915061614956fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122080a73f07412f4ee891301df8400b22e8798824fa57aa40e52aedf8d89231c60164736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f7578063100b6523146103f257806310ddb137146103ed57806318160ddd1461038457806323b872dd146103e8578063313ce567146103e3578063365260b4146103de57806339509351146103d95780633d8b38f6146103d45780633f1f4fa4146103cf57806342d65a8d146103ca57806344770515146103c55780634c42899a146103c557806358edef4c146103c05780635b8c41e6146103bb5780635c975abb146103b657806366ad5c8a146103b1578063695ef6bf146103ac57806370a08231146103a7578063715018a6146103a25780637533d7881461039d57806376203b4814610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a57806395d89b41146103755780639bdb9812146103705780639d3f4d1a1461036b5780639f38369a14610366578063a457c2d714610361578063a4c51df51461035c578063a6c3d16514610357578063a9059cbb14610352578063b02f69a21461034d578063b353aaa714610348578063ba03a8d714610343578063baf3292d1461033e578063bd147cd614610339578063c446183414610334578063cbed8b9c1461032f578063ce8849ed1461032a578063d1deba1f14610325578063dbd01de114610320578063dd62ed3e1461031b578063de40657714610316578063df2a5b3b14610311578063e6a20ae61461030c578063e78eb94614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612c8b565b612bb7565b612b02565b612adf565b612aa7565b61297e565b6128f5565b612893565b6127ee565b6127c3565b6126d6565b612691565b612647565b61261e565b6124e6565b6124bd565b6123f4565b6123d7565b61224b565b612130565b6120f8565b612068565b611fc1565b611ce6565b611b84565b611aed565b611a41565b61199e565b611980565b611935565b611891565b611868565b61184a565b610d4c565b611821565b6117c2565b611784565b6115ed565b611596565b611462565b611425565b611342565b61129d565b61127a565b611226565b6110cc565b6110b0565b61102f565b610ff6565b610f86565b610efe565b610df6565b610daa565b610d6a565b610cc2565b610a80565b6108c5565b610890565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b61157b565b805190818414918261059b575b5081610578575b50614da4565b3691610a2e565b923691610a2e565b926151f8565b9050610585368486610a2e565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c9816114ab565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610983565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a9061091a565b80f35b613548565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b6064359061043182610832565b60e4359061043182610832565b610104359061043182610832565b6084359061043182610832565b60a4359061043182610832565b359061043182610832565b34610421576040366003190112610421576108ba6004356108b081610832565b6024359033612ecf565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108e581610415565b6108ed612ca6565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161092d57604052565b610904565b60a081019081106001600160401b0382111761092d57604052565b606081019081106001600160401b0382111761092d57604052565b604081019081106001600160401b0382111761092d57604052565b601f909101601f19168101906001600160401b0382119082101761092d57604052565b6040519061012082016001600160401b0381118382101761092d57604052565b604051906101a082016001600160401b0381118382101761092d57604052565b6040519061014082016001600160401b0381118382101761092d57604052565b604051906104318261094d565b6001600160401b03811161092d57601f01601f191660200190565b929192610a3a82610a13565b91610a486040519384610983565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610a2e565b346104215760a036600319011261042157600435610a9d81610832565b602435610aa981610415565b6001600160401b039160443583811161042157610aca903690600401610a65565b9060643590610ad882610460565b60843591858311610421578492610af3903690600401610a65565b610afe3330146137f2565b6001600160a01b03831660009081526014602052604090205460ff16610b2390614561565b805181016020016020820190610b38916146a1565b97965097945099925090600160a01b60019003169a7f0000000000000000000000000000000000000000000000000000000000000000911690610b7a91615b2f565b8260208a0197889283528c30610b8f906120ad565b549883610b9b8d610fe2565b610ba590886111e9565b90610baf9161120f565b5460ff161560008051602061619e8339815191529d61ffff9d6000978897610c1394610c85575b505050610c05610be5306120ad565b549b6040519485936020850197635e8a3e6b60e11b895260248601614742565b03601f198101835282610983565b51915af493610c20613e74565b9415610c4a575b5050505050505192610c456040519283921694829190602083019252565b0390a3005b610c6995610c579161487e565b865180911015610c74575b508861528c565b388080808080610c27565b610c7f908b306148a6565b38610c62565b610ca8610ca2610cba94610c9d610cad955130615e4d565b610fe2565b8c6111e9565b61120f565b805460ff19166001179055565b8f8d8a610bd6565b34610421576000602036600319011261078457600435610ce181610415565b610ce9612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b34610421576060366003190112610421576108ba600435610d8a81610832565b602435610d9681610832565b60443591610da5833383612fd5565b612e00565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b610124359061043182610dc6565b60c4359061043182610dc6565b359061043182610dc6565b346104215760a036600319011261042157600435610e1381610415565b60643590610e2082610dc6565b608435906001600160401b03821161042157610e456105636040933690600401610433565b90610e7c610e5f610e57604435615aaa565b602435615b79565b928451958694859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ecd575b50604080519182526020820192909252f35b9050610ef0915060403d8111610ef7575b610ee88183610983565b8101906155d9565b9038610ebb565b503d610ede565b3461042157604036600319011261042157600435610f1b81610832565b336000526009602052610f328160406000206120e1565b546024358101809111610f49576108ba9133612ecf565b612d0e565b90604060031983011261042157600435610f6781610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610fd3610f9c36610f4e565b9390911660005260018452610fbe610fc56040600020604051928380926114e5565b0382610983565b848151910120923691610a2e565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff60043561101681610415565b1660005260036020526020604060002054604051908152f35b346104215761103d36610f4e565b9190611047612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b82528161109e6000988997889460048501615189565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b34610421576020366003190112610421576004356001600160401b038111610421576110ff611119913690600401610a65565b61110a3033146137f2565b60208082518301019101613b64565b809192945051611195575b5061113a6111356111358551610826565b610826565b803b1561042157604051639391dd6d60e01b81529360009385938492869284926111729290916001600160a01b031660048501613c7e565b03925af1801561081d5761118257005b8061118f6100199261091a565b80610640565b61119e90613ea4565b38611124565b906060600319830112610421576004356111bd81610415565b91602435906001600160401b038211610421576111dc91600401610a65565b906044356106a481610460565b60209061120392826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461042157602061127161ffff61126383611240366111a4565b94909116600052600582526040600020826040519483868095519384920161064b565b82019081520301902061120f565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b34610421576112ab36610471565b91929493903033036112cf5761056a6112c992610019973691610a2e565b92615633565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126104215760a490565b908160609103126104215790565b60a03660031901126104215760043561135a81610832565b60243561136681610415565b604435916084356001600160401b03811161042157602061ffff61139d60008051602061615e833981519152933690600401611334565b9361141085356113ac81610832565b6113ca61056386890135986113c08a610832565b60408101906153e3565b6113d4818a615a45565b6113e96113e2606435615b42565b5085615d37565b976113f58915156157e8565b6114076114018a615aaa565b8c615b79565b9234938b614e57565b6040519485526001600160a01b0316941692a4005b346104215760203660031901126104215760043561144281610832565b60018060a01b031660005260086020526020604060002054604051908152f35b34610421576000806003193601126107845761147c612ca6565b80546001600160a01b03198116825581906001600160a01b03166000805160206161be8339815191528280a380f35b90600182811c921680156114db575b60208310146114c557565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ba565b90600092918054916114f6836114ab565b9182825260019384811690816000146115585750600114611518575b50505050565b90919394506000526020928360002092846000945b838610611544575050505001019038808080611512565b80548587018301529401938590820161152d565b9294505050602093945060ff191683830152151560051b01019038808080611512565b9061043161158f92604051938480926114e5565b0383610983565b346104215760203660031901126104215761ffff6004356115b681610415565b1660005260016020526106ff610fbe6115d96040600020604051928380926114e5565b60405191829160208352602083019061066e565b60e03660031901126104215760043561160581610832565b60243561161181610415565b604435916001600160401b039060843582811161042157611636903690600401610433565b91909260a43561164581610460565b60c4358281116104215761165d903690600401611334565b908661169583359661166e88610832565b61168d6116836020870135966113c088610832565b9a90923691610a2e565b983691610a2e565b9360ff60065416600014611702579360209593611407846116d060008051602061615e8339815191529a958561ffff9a6114109916916150a6565b6116e56116de606435615b42565b5088615d37565b9a6116f18c15156157e8565b8d6116fb8d615aaa565b9033615bf4565b505082939192516117305760008051602061615e8339815191529460209461ffff94611407611410946116d0565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104215760403660031901126104215760206112716004356117e481610415565b61ffff602435916117f483610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b34610421576000806003193601126107845760405181600c546118b3816114ab565b8084529060019081811690811561075c57506001146118dc576106ff846106f381880382610983565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061192257505050816106ff936106f392820101936106e3565b8054858501870152928501928101611906565b3461042157602060ff61197461ffff61126384611951366111a4565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff6004356119be81610415565b166000526001602052610fbe6119de6040600020604051928380926114e5565b8051156119fc576106f3816119f66106ff9351614860565b90615f51565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611a5e81610832565b60243590336000526009602052611a798160406000206120e1565b5491808310611a9a57611a8e92039033612ecf565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611b0a81610415565b6001600160401b039060643582811161042157611b2b903690600401610433565b608492919235611b3a81610460565b60a43591611b4783610dc6565b60c43595861161042157611b62611b72963690600401610433565b9590946044359060243590615415565b60408051928352602083019190915290f35b3461042157611b9236610f4e565b90611b9b612ca6565b60405192602092808385870137611bc76034868381013060601b88820152036014810188520186610983565b61ffff8216600090815260018086526040822087519296909291906001600160401b03831161092d57611c0483611bfe86546114ab565b866151a4565b80601f8411600114611c62575091808092611c519695948a9b60008051602061617e8339815191529b94611c57575b50501b916000199060031b1c19161790555b60405193849384615189565b0390a180f35b015192503880611c33565b91939498601f198416611c7a87600052602060002090565b938a905b828210611ccf5750509160008051602061617e833981519152999a95939185611c5198969410611cb6575b505050811b019055611c45565b015160001960f88460031b161c19169055388080611ca9565b808886978294978701518155019601940190611c7e565b34610421576040366003190112610421576108ba600435611d0681610832565b6024359033612e00565b6001600160801b0381160361042157565b60a0906101631901126104215760405190611d3b82610932565b8161016435611d4981610dc6565b815261018435611d5881610832565b60208201526101a435611d6a81611d10565b60408201526101c435611d7c81611d10565b606082015260806101e435910152565b60a0906101031901126104215760405190611da682610932565b8161010435611db481610dc6565b815261012435611dc381610832565b602082015261014435611dd581611d10565b604082015261016435611de781611d10565b6060820152608061018435910152565b6060906102031901126104215760405190611e118261094d565b8161020435611e1f81610dc6565b815261022435611e2e81610832565b6020820152604061024435910152565b6060906101a31901126104215760405190611e588261094d565b816101a435611e6681610dc6565b81526101c435611e7581610832565b602082015260406101e435910152565b906101e060831983011261042157611f00611e9e6109a6565b92608435611eab81610dc6565b845260a435602085015260c4356040850152611ec5610850565b6060850152611ed261085d565b6080850152611edf610dd0565b60a08501526101443560c0850152611ef681611d21565b60e0850152611df7565b610100830152565b906101e060231983011261042157611f00611f216109a6565b92602435611f2e81610dc6565b845260443560208501526064356040850152611f4861086b565b6060850152611f55610878565b6080850152611f62610dde565b60a085015260e43560c0850152611f7881611d8c565b60e0850152611e3e565b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b908160a09103126104215790565b6102c036600319011261042157600435611fda81610832565b602435611fe681610832565b60443591611ff383610415565b611ffb610843565b9261200536611e85565b6001600160401b03946102643586811161042157612027903690600401611f82565b9290916102843588811161042157612043903690600401611fb3565b946102a43598891161042157612060610019993690600401610433565b9890976136a6565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff61197460243561211c81610832565b600435600052600f845260406000206120e1565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561217081610832565b612178612ca6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b6001600160401b03811161092d5760051b60200190565b60ff81160361042157565b3590610431826121b7565b919060a08382031261042157604051906121e682610932565b819380356121f381610dc6565b835260208101356020840152604081013561220d81610dc6565b6040840152606081013561222081610415565b60608401526080810135916001600160401b038311610421576080926122469201610a65565b910152565b6102403660031901126104215760043561226481610832565b61226d36611f08565b6001600160401b0391906102043590838211610421573660238301121561042157816004013561229c816121a0565b9260406122ab81519586610983565b8285526020908186019060246101a08096028501019336851161042157602401915b8483106122fc5750505050505061022435938411610421576122f66100199436906004016121cd565b92614b13565b8583360312610421578386916123106109c6565b61231986610deb565b8152612326838701610deb565b83820152612335858701610deb565b858201526060612346818801610426565b908201526080612357818801610885565b9082015260a0612368818801610deb565b9082015260c0612379818801610885565b9082015260e061238a818801610885565b90820152610100808701359082015261012080870135908201526101406123b28188016121c2565b90820152610160808701359082015261018080870135908201528152019201916122cd565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561241181610415565b60243561241d81610415565b6064356001600160401b0381116104215761243c903690600401610433565b9092612446612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104215760008094611172604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613101565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b6124ef36610471565b9161ffff8694929616600052600560205261252381604060002060206040518092878b83378782019081520301902061120f565b549182156125cd576125bc84836125b57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125a184610ca88e8a8f6125c89f908f6125879061257a61259b9436908d610a2e565b6020815191012014615356565b61ffff166000526005602052604060002090565b9161533d565b556125ad36878d610a2e565b933691610a2e565b9188615633565b604051958695866153ac565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b3461042157604036600319011261042157602061127160043561266981610832565b6024359061267682610832565b6001600160a01b0316600090815260098452604090206120e1565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610421576060366003190112610421576004356126f381610415565b6024356126ff81610415565b6044359161270b612ca6565b8215612786576125c87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806127608560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b90816101c09103126104215790565b6101403660031901126104215760043561280781610832565b60243561281381610832565b6044359161282083610415565b612828610843565b6001600160401b0393906084358581116104215761284a903690600401610433565b9061285436611323565b92610104358881116104215761286e9036906004016127df565b94610124359889116104215761288b610019993690600401611f82565b989097613405565b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356128d381610dc6565b6128db612ca6565b151560ff196006541660ff821617600655604051908152a1005b34610421576101003660031901126104215760043561291381610415565b6001600160401b039060243582811161042157612934903690600401610433565b91906044359061294382610460565b60843561294f81610832565b60c4359586116104215761296a610019963690600401610433565b94909360e4359660a435946064359361550c565b346104215761298c36610f4e565b9190612996612ca6565b61ffff82166000908152600160208181526040832092949291906001600160401b03871161092d576129d2876129cc85546114ab565b856151a4565b8590601f8811600114612a275750918680879893611c51956000805160206161fe8339815191529993612a1c575b501b906000198460031b1c191617905560405193849384615189565b880135925038612a00565b90601f198816612a3c85600052602060002090565b9288905b828210612a90575050918893916000805160206161fe8339815191529899611c51969410612a76575b505082811b019055611c45565b870135600019600386901b60f8161c191690553880612a69565b808685968294968c01358155019501930190612a40565b3461042157604036600319011261042157602060ff611974602435612acb81610832565b6004356000526010845260406000206120e1565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612b1f81610832565b612b27612ca6565b6001600160a01b039081168015612b6357600080546001600160a01b03198116831782559092166000805160206161be8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612bd481610415565b60243590612be182610415565b612bec604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612c6a575b5060405191829182610693565b612c85913d8091833e612c7d8183610983565b810190615164565b38612c5d565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612cba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612d099133612ecf565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4957565b6051019081605111610f4957565b91908201809211610f4957565b15612d5457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612dac57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612e7c57612e61826000805160206161de83398151915294612e77941696612e3a881515612d4d565b612e5b84612e47836120ad565b54612e5482821015612da5565b03916120ad565b556120ad565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612f84578216938415612f345780612f237f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612f1e612e77956120c7565b6120e1565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612ff58160406000206120e1565b5492600184016130055750505050565b80841061302057613017930391612ecf565b38808080611512565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b356106a481610dc6565b1561307657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356130c681610dc6565b1515845260208101356130d881610832565b6001600160a01b031660208501520135910152565b9035609e1982360301811215610421570190565b908060209392818452848401376000828201840152601f01601f1916010190565b803561312d81610dc6565b1515825260208101356020830152604081013561314981610dc6565b1515604083015261ffff606082013561316181610415565b1660608301526080810135601e198236030181121561042157016020810190356001600160401b0381116104215780360382136104215760a0838160806106a49601520191613101565b9190808252602080920192916000905b8282106131c9575050505090565b90919293806131e36001926131dd88610deb565b15159052565b6131f96131f1848801610deb565b151582850152565b6132116040613209818901610deb565b151590830152565b61322b6060613221818901610426565b61ffff1690830152565b613244608061323b818901610885565b90830190611814565b61325460a0613209818901610deb565b61326460c061323b818901610885565b61327460e061323b818901610885565b610100808701359082015261012080870135908201526132a461014061329b8189016121c2565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906131bb565b9391926133f79160406106a49795610305885260018060a01b0380931660208901528281356132f981610832565b168289015282602082013561330d81610832565b166060890152013561331e81610832565b16608086015260e060a086015261333b60e086016131dd83610deb565b60208101356101008601526133e561335560408301610deb565b91613367610120938489019015159052565b606081013561014088015261338b61338160808301610deb565b1515610160890152565b6133dc6133c861018060a0840135818b01526133c06101a0966133b3888d0160c088016130b7565b6102008c019086016130b7565b8301836130ed565b6101c06102608a01526102a0890190613122565b928101906130ed565b85820360df1901610280870152613122565b9260c08185039101526131ab565b92819794989399959299969196600160a01b60019003958682169a8b92338414159a61346061ffff9b6134939a61348c9660008051602061615e8339815191529f9561346e966134aa575b506040519a8b95602087016132cb565b03601f198101875286610983565b6134838d61347d368985610a2e565b90614fdf565b34953691610a2e565b928b614e57565b60405160008152931694169180602081015b0390a4565b6134b382613065565b6134fa575b6134c460808301613065565b15613450576134f4906134da33612f1e836120c7565b54906134ed60a08501358093101561306f565b3390612fd5565b38613450565b61352361350a33612f1e846120c7565b5461351c60208501358092101561306f565b3383612fd5565b6134b8565b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b9061018061010061043193805115158452602081015160208501526040810151604085015260018060a01b03606082015116606085015261360160808201516080860190611814565b60a08181015115159085015260c081015160c085015261362960e082015160e0860190613554565b0151910190613594565b61030681526001600160a01b039182166020820152918116604083015290911660608201526001600160401b0390911660808201526106a49490939092613697929091906136859060a08701906135b8565b6102c0806102808701528501916131ab565b916102a0818403910152613122565b9590969298919897939760018060a01b039586881699338b036137c3575b60208101966136d38851615b42565b5088526040516303408e4760e41b81529960208b6004817f00000000000000000000000000000000000000000000000000000000000000008e165afa90811561081d5761346061377c998f96988f9960008051602061615e8339815191529f976137578f61348c9a61376799613795575b50613750815189615d37565b5051615aaa565b6040519c8d973360208a01613633565b6134838d613776368985610a2e565b90615068565b5160405190815292169361ffff169180602081016134a5565b6137b59060203d81116137bc575b6137ad8183610983565b810190613533565b5038613744565b503d6137a3565b6137ed6137d333612f1e8c6120c7565b546137e560208401918251111561306f565b51338b612fd5565b6136c4565b156137f957565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b519061043182610832565b519061043182610dc6565b9190826060910312610421576040516138658161094d565b6040808294805161387581610dc6565b8452602081015161388581610832565b60208501520151910152565b9092919261389e81610a13565b916138ac6040519384610983565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a492602001613891565b919060a08382031261042157604051906138f982610932565b8193805161390681610dc6565b835260208101516020840152604081015161392081610dc6565b6040840152606081015161393381610415565b60608401526080810151916001600160401b0383116104215760809261224692016138c6565b91906101c0838203126104215761396e6109e6565b9261397881613842565b84526020810151602085015261399060408201613842565b6040850152606081015160608501526139ab60808201613842565b608085015260a081015160a08501526139c78260c0830161384d565b60c0850152610120916139dc8184840161384d565b60e08601526101808201516001600160401b03908181116104215782613a039185016138e0565b6101008701526101a083015190811161042157613a2092016138e0565b90830152565b5190610431826121b7565b81601f8201121561042157805190613a48826121a0565b92604090613a5882519586610983565b83855260209182860191836101a080970286010194818611610421578401925b858410613a89575050505050505090565b868483031261042157848791613a9d6109c6565b613aa687613842565b8152613ab3838801613842565b83820152613ac2868801613842565b868201526060613ad3818901613528565b908201526080613ae4818901613837565b9082015260a0613af5818901613842565b9082015260c0613b06818901613837565b9082015260e0613b17818901613837565b9082015261010080880151908201526101208088015190820152610140613b3f818901613a26565b9082015261016080880151908201526101808088015190820152815201930192613a78565b8082039160e08312610421578151613b7b81610415565b9360606020840151613b8c81610832565b94603f19011261042157604051613ba28161094d565b6040840151613bb081610832565b81526060840151613bc081610832565b60208201526080840151613bd381610832565b604082015260a084015190936001600160401b039390918481116104215781613bfd918401613959565b9360c0830151908111610421576106a49201613a31565b80516001600160a01b03908116835260208083015182169084015260409182015116910152565b9060a060806106a4938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061066e565b6001600160a01b0390911681526106a49291613c9e906020830190613c14565b60a06080820152613cb460a08201835115159052565b602082015160c08201526040820151151560e082015260608201516101009081830152613d3a608084015191613cf1610120938486019015159052565b60a0850151610140850152613d0f60c0860151610160860190613594565b60e085015190613d256101c09283870190613594565b85015190610220850152610260840190613c3b565b92015190610240609f1982850301910152613c3b565b8051821015613d645760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613d8157565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613de160209295949560408552604085019061066e565b9416910152565b60009060033d11613df557565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d602484011117613e6357818401948551938411613e6b573d85010160208487010111613e6357506106a492910160200190610983565b949350505050565b50949350505050565b3d15613e9f573d90613e8582610a13565b91613e936040519384610983565b82523d6000602084013e565b606090565b9060005b825181101561413b576040613ec981613ec18487613d50565b510151151590565b15613eeb575080613ee5613edf60019386613d50565b51614330565b01613ea8565b6060613f1561030561ffff613f0e84613f04888b613d50565b51015161ffff1690565b1614613d7a565b613f2460a0613ec18588613d50565b613f4260c0613f338689613d50565b5101516001600160a01b031690565b91614013613f5560e0613f33888b613d50565b93614005610100613f66898c613d50565b5101518a610120613f778b83613d50565b510151613f93610140613f8a8d85613d50565b51015160ff1690565b90610180613fb18d610160613fa88288613d50565b51015195613d50565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610983565b61403661402b6111356111356080613f338a8d613d50565b91613f04878a613d50565b90803b15610421576140646000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af19081614128575b5061408e57600161407e613de8565b6308c379a0146140e0575b614099575b505050600190613ee5565b6140b66140b26140a7613e74565b92613ec1878a613d50565b1590565b1561408e576140c76140dc916142b8565b925162461bcd60e51b81529283928301610693565b0390fd5b6140e8613e06565b806140f4575b50614089565b600091506141096140b284613ec1898c613d50565b156140ee57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6141359261091a565b3861406f565b509050565b9060005b825181101561413b57604061415d81613ec18487613d50565b15614179575080614173613edf60019386613d50565b01614144565b606061419261030661ffff613f0e84613f04888b613d50565b6141a160a0613ec18588613d50565b6141b060c0613f338689613d50565b916141c3613f5560e0613f33888b613d50565b6141db61402b6111356111356080613f338a8d613d50565b90803b15610421576142096000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af190816142a5575b50614233576001614223613de8565b6308c379a01461425d575b61423e575b505050600190614173565b61424c6140b26140a7613e74565b15614233576140c76140dc916142b8565b614265613e06565b80614271575b5061422e565b600091506142866140b284613ec1898c613d50565b1561426b57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6142b29261091a565b38614214565b604481511061430957600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a492604401613891565b5060405161431681610968565b600a8152695553444f3a206461746160b01b602082015290565b8051156144a05761434a6111356111356080840151610826565b61435760c0830151610826565b61436460e0840151610826565b916101208401519061437b61014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af1908161448d575b5061440b5760016143fb613de8565b6308c379a01461444f575b61440e575b50565b6144266140b2602061441e613e74565b930151151590565b1561440b576144376140dc916142b8565b60405162461bcd60e51b815291829160048301610693565b614457613e06565b80614463575b50614406565b60208301516000925061445d575b60405162461bcd60e51b81529081906140dc9060048301610693565b8061118f61449a9261091a565b386143ec565b6144b36111356111356080840151610826565b6144c060c0830151610826565b6144cd60e0840151610826565b9161010084015190610120850151936144eb61014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e481016143e1565b1561456857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260a0910312610421576040516145be81610932565b608080829480516145ce81610dc6565b845260208101516145de81610832565b602085015260408101516145f181611d10565b6040850152606081015161460481611d10565b60608501520151910152565b91906101e08382031261042157611f009061018061462c6109a6565b9461463681613842565b8652602081015160208701526040810151604087015261465860608201613837565b606087015261466960808201613837565b608087015261467a60a08201613842565b60a087015260c081015160c08701526146968360e083016145a6565b60e08701520161384d565b9190916102c0818403126104215780516146ba81610415565b9260208201516146c981610832565b9260408301516146d881610832565b9260608101516146e781610832565b9260808201516146f681610460565b926147048260a08501614610565b61028084015190936001600160401b03939091848111610421578161472a918401613a31565b936102a0830151908111610421576106a492016138e0565b6001600160a01b03909116815260209493916102408083019161476890888501906135b8565b610200830152835180915285610260830194019060005b81811061479d575050506106a4939450610220818403910152613c3b565b909194876101a060019288516147b582825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526147eb60808083015190840190611814565b60a08181015115159083015261480960c08083015190840190611814565b61481b60e08083015190840190611814565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201960192910161477f565b601319810191908211610f4957565b605019810191908211610f4957565b91908203918211610f4957565b6001600160a01b039091168152602081019190915260400190565b61492491600080604051936148d2856134606020998a83019763a9059cbb60e01b89526024840161488b565b60018060a01b031692604051946148e886610968565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161491e613e74565b916149a6565b80518061493057505050565b818391810103126104215781015161494781610dc6565b1561494f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b91929015614a0857508151156149ba575090565b3b156149c35790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156144715750805190602001fd5b604080918051151584526020810151602085015201511515910152565b926104319691989795614a9261024096614a886040614a9d95614aa8986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190614a1b565b60e0870190614a1b565b610140850190613554565b6101e0830190613594565b0190613c14565b9081602091031261042157516106a481610832565b90816020910312610421575190565b9260e094916106a497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613c3b565b919290928051614d95575b506060830190614b2e8251610826565b92602092614b4184870195865190612cfe565b50855115614cc4576040860193845115614bca575b50611135611135614b679251610826565b9160c0614b776080880151610826565b9551945196015194833b1561042157614bac600096928793604051998a98899788966303c592fd60e21b885260048801614ad3565b03925af1801561081d57614bbd5750565b8061118f6104319261091a565b80600491614bde6111356111358651610826565b6040516331d8733560e11b815293849182905afa91821561081d57614c36928291600091614c97575b50614c1560808b0151610826565b89516040516305da91c960e31b81529586939284928392916004840161488b565b03916001600160a01b03165afa92831561081d57614b67936111359361113593600092614c6a575b50508752925050614b56565b614c899250803d10614c90575b614c818183610983565b810190614ac4565b3880614c5e565b503d614c77565b614cb79150823d8411614cbd575b614caf8183610983565b810190614aaf565b38614c07565b503d614ca5565b614cd79192506111356111359151610826565b90835190614ce3610a06565b936000958686528682870152866040870152614cfd610a06565b95878752878388015260408701525196614d15610a06565b6001815297888301526001604089015260e0810151614d5f614d406080610100850151940151610826565b614d48610a06565b8a81526001600160a01b0390911694810194909452565b876040840152853b15614d915791614bac918894936040519a8b998a9889976339551beb60e21b895260048901614a38565b8780fd5b614d9e90614140565b38614b1e565b15614dab57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92614e246106a497959361ffff614e329416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614e809193929561ffff81166000526001602052614e876040600020604051948580926114e5565b0384610983565b825115614eee57614e998551826150f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561042157600096614bac91604051998a988997889662c5803160e81b885260048801614dff565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614f5357565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614f9c57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103056000526020526040600020549061501d821515614f4c565b1015614f95565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103066000526020526040600020549061501d821515614f4c565b9190602281511061502457602261ffff910151921660005260026020526150db60406000206001600052602052604060002090565b54908101809111610f49576104319161501d821515614f4c565b61ffff16600052600360205260406000205490811561515a575b1161511657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061510f565b906020828203126104215781516001600160401b038111610421576106a492016138c6565b60409061ffff6106a495931681528160208201520191613101565b90601f81116151b257505050565b600091825260208220906020601f850160051c830194106151ee575b601f0160051c01915b8281106151e357505050565b8181556001016151d7565b90925082906151ce565b92909161526a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906152648261525661523560a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610983565b30616100565b939015615279575b5050505050565b6152829461528c565b3880808080615272565b919361532a7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95615338939561ffff815160208301209616958660005260056020526152f08361126360208b6040600020826040519483868095519384920161064b565b5561530d604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b1561535d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6153cf9398979698168452608060208501526080840191613101565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b9491959897906116fb61543e60409961543661544497615461993691610a2e565b943691610a2e565b97615aaa565b928451968794859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d5760009081936154a457509190565b90506104d291925060403d8111610ef757610ee88183610983565b939694916106a498969361ffff6154e49316865260c0602087015260c0860191613101565b6001600160401b0390961660408401526060830152608082015280840360a090910152613101565b9196979298959493909430330361559457615528908530615e9d565b60405181815290946001600160a01b03169390849061ffff85169060008051602061619e83398151915290602090a3833b15610421576000988995615584936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016154bf565b0393f1801561081d57614bbd5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff61561e9316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff615641846160a5565b16806157945750505060ff615655826160a5565b161580615789575b61566690615bad565b61567861567282616055565b916160f0565b90916001600160a01b03918284161561577f575b6156c0907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316615b2f565b91831692831561573a5760008051602061619e833981519152916156fa61ffff926156f56156f087600a54612d40565b600a55565b6120ad565b8481540190558460006000805160206161de8339815191526040518061572589829190602083019252565b0390a360405193845216918060208101612e77565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061568c565b50805160291461565d565b6001036157a457610431936158bd565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156157ef57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361585a60e0979361ffff61588f9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b930152565b6158ac6040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916158c884615c5e565b90916158e46158dd87610ca8610ca28b610fe2565b5460ff1690565b916001600160401b039161591b907f0000000000000000000000000000000000000000000000000000000000000000908416615b2f565b9288888b8315615a17575b505050853b156159cc579461596d9694615264948a94615256948d996000146159c55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01615830565b90156159ba5750906159b561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615894565b0390a2565b92610431949261528c565b169261594e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250615338915050565b90610ca8610cad92615a3789615a31615a3d979b30615e4d565b99610fe2565b906111e9565b88888b615926565b60065460ff1615615a8c5760228251106150245761ffff6022610431930151911660005260026020526040600020600080526020526040600020549061501d821515614f4c565b505161173057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115615b2a576001600160401b03919004818111615ae8571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615a94565b81810292918115918404141715610f4957565b7f00000000000000000000000000000000000000000000000000000000000000008015615b2a57810690818103908111610f495791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a48161094d565b15615bb457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615c4e815180926020868601910161064b565b8101036051810184520182610983565b90615c76600160ff615c6f856160a5565b1614615bad565b615c7f82616055565b90615c89836160f0565b906049845110615cfa576049840151936051815110615cbe57615cbb605182015191615cb5815161486f565b90615fd1565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615de6575b8015615d975781615d6c84615d5f6000956120ad565b54612e5482821015615df6565b55615d7a83600a5403600a55565b6040518381526000805160206161de83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615df1833384612fd5565b615d49565b15615dfd57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561573a57600a5490828201809211610f4957600092615e8e6020926000805160206161de83398151915294600a556120ad565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615ec9575b5015612e0057610da5833383612fd5565b905033141538615eb8565b15615edb57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615f1857565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615f6582615f5e81612d24565b1015615ed4565b615f728282511015615f11565b81615f8a575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615fbe5750508252601f01601f191660405290565b9092835181526020809101930190615fa6565b615fde82615f5e81612d24565b615ff38151615fec84612d32565b1115615f11565b8161600b575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106160425750508252601f01601f191660405290565b909283518152602080910193019061602a565b602181511061606857602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106160b5576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615cbe576029015190565b6040519392909160009160c08601916001600160401b0383118784101761092d5783926040526096875282602088019560a036883760208451940192f1903d9060968211616154575b6000908286523e9190565b6096915061614956fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122080a73f07412f4ee891301df8400b22e8798824fa57aa40e52aedf8d89231c60164736f6c63430008120033", + "bytecode": "0x61010060409080825234620004d45760608162004d818038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161483c90816200054582396080518181816104a201528181610765015281816108bc01528181610a5101528181610c1201528181611b2501528181611c7f015281816124fb01528181613095015281816133e80152613a2c015260a05181611351015260c051818181613c7201528181613f05015281816140d80152614172015260e05181611f3c0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063950c8a741461033957806395d89b41146103345780639bdb98121461032f5780639f38369a1461032a578063a457c2d714610325578063a4c51df514610320578063a6c3d1651461031b578063a9059cbb14610316578063b02f69a214610311578063b353aaa71461030c578063ba03a8d714610307578063baf3292d14610302578063c4461834146102fd578063cbed8b9c146102f8578063ce8849ed146102f3578063d1deba1f146102ee578063dbd01de1146102e9578063dd62ed3e146102e4578063de406577146102df578063df2a5b3b146102da578063e6a20ae6146102d5578063e78eb946146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612565565b612491565b6123ca565b6123a7565b61235d565b612213565b61218a565b612128565b612083565b612058565b611f6b565b611f26565b611ecc565b611ea3565b611d40565b611d17565b611c2b565b611c0e565b611b9e565b611b54565b611b0f565b611a68565b61187f565b6116fc565b611669565b6115ab565b611508565b6114bd565b611419565b6113f0565b61091d565b6113c7565b611375565b611337565b6111a1565b61114a565b611004565b610fc7565b610ee4565b610e3f565b610e1c565b610db5565b610c79565b610bf8565b610bbf565b610b63565b610acf565b6109c7565b61097b565b61093b565b610893565b610854565b61081f565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b61112f565b8051908184149182610550575b508161052d575b506132f1565b3691610cff565b923691610cff565b926137c0565b905061053a368486610cff565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161105f565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610cc3565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610cab565b80f35b612f0f565b5080fd5b6001600160a01b038116036103d157565b606435906103e1826107db565b60e435906103e1826107db565b61010435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761084960043561083f816107db565b60243590336127d2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610874816103c5565b61087c612580565b166000526003602052602435604060002055600080f35b346103d15760006020366003190112610739576004356108b2816103c5565b6108ba612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761084960043561095b816107db565b602435610967816107db565b604435916109768333836128fd565b6126ca565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b608435906103e182610997565b61012435906103e182610997565b35906103e182610997565b346103d15760a03660031901126103d1576004356109e4816103c5565b606435906109f182610997565b608435906001600160401b0382116103d157610a1661051860409336906004016103e3565b90610a4d610a30610a286044356140d6565b6024356141a7565b928451958694859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a9e575b50604080519182526020820192909252f35b9050610ac1915060403d8111610ac8575b610ab98183610cc3565b810190613bb1565b9038610a8c565b503d610aaf565b346103d15760403660031901126103d157600435610aec816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610b265761084991336127d2565b6125d8565b9060406003198301126103d157600435610b44816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610bb0610b7936610b2b565b9390911660005260018452610b9b610ba2604060002060405192838092611099565b0382610cc3565b848151910120923691610cff565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610bdf816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610c0636610b2b565b9190610c10612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c676000988997889460048501613733565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbe57604052565b610c95565b90601f801991011681019081106001600160401b03821117610cbe57604052565b6001600160401b038111610cbe57601f01601f191660200190565b929192610d0b82610ce4565b91610d196040519384610cc3565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610d4e816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610d7f93600401359101610cff565b9160443590811681036103d15790565b602090610da9928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610e1361ffff610df283610dcf36610d36565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e4d36610426565b9192949390303303610e715761051f610e6b92610019973691610cff565b92613c0b565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126103d15760a490565b908160609103126103d15790565b60a03660031901126103d157600435610efc816107db565b602435610f08816103c5565b604435916084356001600160401b0381116103d157602061ffff610f3f6000805160206147c7833981519152933690600401610ed6565b93610fb28535610f4e816107db565b610f6c6105188689013598610f628a6107db565b60408101906139aa565b610f76818a614071565b610f8b610f84606435614170565b508561437a565b97610f97891515613de8565b610fa9610fa38a6140d6565b8c6141a7565b9234938b6133a4565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d157600435610fe4816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107395761101e612580565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561108f575b602083101461107957565b634e487b7160e01b600052602260045260246000fd5b91607f169161106e565b90600092918054916110aa8361105f565b91828252600193848116908160001461110c57506001146110cc575b50505050565b90919394506000526020928360002092846000945b8386106110f85750505050010190388080806110c6565b8054858701830152940193859082016110e1565b9294505050602093945060ff191683830152151560051b010190388080806110c6565b906103e16111439260405193848092611099565b0383610cc3565b346103d15760203660031901126103d15761ffff60043561116a816103c5565b1660005260016020526106b4610b9b61118d604060002060405192838092611099565b604051918291602083526020830190610623565b60e03660031901126103d1576004356111b9816107db565b6024356111c5816103c5565b604435916001600160401b03906084358281116103d1576111ea9036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d157611213903690600401610ed6565b9061124a823595611223876107db565b611242611238602086013595610f62876107db565b9990923691610cff565b973691610cff565b928760ff600654166000146112b5579360209593610fa9610fb2946112836000805160206147c78339815191529a958561ffff9a613617565b611298611291606435614170565b508861437a565b9a6112a48c1515613de8565b8d6112ae8d6140d6565b9033614234565b505082939192516112e3576000805160206147c78339815191529460209461ffff94610fa9610fb294611283565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e13600435611397816103c5565b61ffff602435916113a7836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c5461143b8161105f565b808452906001908181169081156107115750600114611464576106b4846106a881880382610cc3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114aa57505050816106b4936106a89282010193610698565b805485850187015292850192810161148e565b346103d157602060ff6114fc61ffff610df2846114d936610d36565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611528816103c5565b166000526001602052610b9b611548604060002060405192838092611099565b805115611566576106a8816115606106b493516137a2565b906145ba565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356115c8816107db565b602435903360005260096020526115f58160406000209060018060a01b0316600052602052604060002090565b54918083106116165761160a920390336127d2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611686816103c5565b6001600160401b03906064358281116103d1576116a79036906004016103e3565b6116b2929192610410565b60a435916116bf83610997565b60c4359586116103d1576116da6116ea9636906004016103e3565b95909460443590602435906139dc565b60408051928352602083019190915290f35b346103d15761170a36610b2b565b90611713612580565b6040519260209280838587013761173f6034868381013060601b88820152036014810188520186610cc3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610cbe5761177983611773865461105f565b8661374e565b80601f84116001146117e95750918080926117d89695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117de575b50501b916000199060031b1c19161790555b60405193849384613733565b0390a180f35b0151925038806117ba565b91939498601f19841661180187600052602060002090565b938a905b828210611868575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117d89896941061184f575b505050811b0190556117cc565b015160001960f88460031b161c19169055388080611842565b808886978294978701518155019601940190611805565b346103d15760403660031901126103d15761084960043561189f816107db565b60243590336126ca565b6101c435906001600160801b03821682036103d157565b60a0906101631901126103d1576040519060a082018281106001600160401b03821117610cbe5760405281610164356118f881610997565b815261018435611907816107db565b60208201526101a4356001600160801b03811681036103d157604082015261192d6118a9565b606082015260806101e435910152565b6060906102031901126103d15760405190606082018281106001600160401b03821117610cbe57604052816102043561197581610997565b815261022435611984816107db565b6020820152604061024435910152565b906101e06083198301126103d15760405161012081018181106001600160401b03821117610cbe57604052610100611a2482946119cf6109a1565b845260a435602085015260c43560408501526119e96107f9565b60608501526119f6610806565b6080850152611a036109ae565b60a08501526101443560c0850152611a1a816118c0565b60e085015261193d565b910152565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b908160a09103126103d15790565b6102c03660031901126103d157600435611a81816107db565b602435611a8d816107db565b60443591611a9a836103c5565b611aa26107ec565b92611aac36611994565b6001600160401b0394610264358681116103d157611ace903690600401611a29565b929091610284358881116103d157611aea903690600401611a5a565b946102a4359889116103d157611b076100199936906004016103e3565b98909761304f565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6114fc602435611b78816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611bde816107db565b611be6612580565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611c48816103c5565b602435611c54816103c5565b6064356001600160401b0381116103d157611c739036906004016103e3565b9092611c7d612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611cf4604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a31565b03925af180156107d257611d0457005b80611d1161001992610cab565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611d4936610426565b9161ffff86949296166000526005602052611d9081604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611e5257611e418483611e3a7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611e2684611e0e8e8a8f611e4d9f908f611df490611de7611e089436908d610cff565b602081519101201461391d565b61ffff166000526005602052604060002090565b91613904565b906001600160401b0316600052602052604060002090565b55611e3236878d610cff565b933691610cff565b9188613c0b565b60405195869586613973565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e13600435611eee816107db565b60243590611efb826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f88816103c5565b602435611f94816103c5565b60443591611fa0612580565b821561201b57611e4d7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611ff58560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b90816101c09103126103d15790565b6101403660031901126103d15760043561209c816107db565b6024356120a8816107db565b604435916120b5836103c5565b6120bd6107ec565b6001600160401b0393906084358581116103d1576120df9036906004016103e3565b906120e936610ec5565b92610104358881116103d157612103903690600401612074565b94610124359889116103d157612120610019993690600401611a29565b989097612d58565b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561216881610997565b612170612580565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d1576004356121a8816103c5565b6001600160401b03906024358281116103d1576121c99036906004016103e3565b91906044359084821682036103d1576084356121e4816107db565b60c4359586116103d1576121ff6100199636906004016103e3565b94909360e4359660a4359460643593613ad2565b346103d15761222136610b2b565b919061222b612580565b60009161ffff81168352600160209080825260408520916001600160401b038711610cbe576122648761225e855461105f565b8561374e565b8590601f88116001146122cb57509186808798936117d8957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936122c0575b501b906000198460031b1c191617905560405193849384613733565b8801359250386122a4565b90601f1988166122e085600052602060002090565b9288905b828210612346575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117d896941061232c575b505082811b0190556117cc565b870135600019600386901b60f8161c19169055388061231f565b808685968294968c013581550195019301906122e4565b346103d15760403660031901126103d157602060ff6114fc602435612381816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356123e7816107db565b6123ef612580565b6001600160a01b03908116801561243d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d1576004356124ae816103c5565b602435906124bb826103c5565b6124c66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612544575b5060405191829182610648565b61255f913d8091833e6125578183610cc3565b8101906136d5565b38612537565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361259457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2657565b6051019081605111610b2657565b91908201809211610b2657565b1561261e57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561267657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561277f57612764826000805160206147e78339815191529461277a941696612704881515612617565b6001600160a01b03811660009081526008602052604090206127499085905461272f8282101561266f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156128ac57821693841561285c578061284b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461283461277a9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129355750505050565b808410612950576129479303916127d2565b388080806110c6565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b3561065981610997565b156129a657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356129f681610997565b151584526020810135612a08816107db565b6001600160a01b031660208501520135910152565b9035609e19823603018112156103d1570190565b908060209392818452848401376000828201840152601f01601f1916010190565b8035612a5d81610997565b15158252602081013560208301526040810135612a7981610997565b1515604083015261ffff6060820135612a91816103c5565b1660608301526080810135601e19823603018112156103d15701602081359101906001600160401b0381116103d15780360382136103d15760a0838160806106599601520191612a31565b359060ff821682036103d157565b9190808252602080920192916000905b828210612b08575050505090565b9091929380612b22600192612b1c886109bc565b15159052565b612b38612b308488016109bc565b151582850152565b612b506040612b488189016109bc565b151590830152565b612b6a6060612b608189016103d6565b61ffff1690830152565b612b896080612b7a818901610814565b6001600160a01b031690830152565b612b9960a0612b488189016109bc565b612ba960c0612b7a818901610814565b612bb960e0612b7a818901610814565b61010080870135908201526101208087013590820152612be9610140612be0818901612adc565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612afa565b61030581526001600160a01b03918216602082015296959460e094612d539490939192612d4592604090828135612c46816107db565b16828d0152826020820135612c5a816107db565b1660608d01520135612c6b816107db565b1660808a0152612c886101008060a08c01528a01612b1c836109bc565b612d33610120916020810135838c0152612cb1612ca7604083016109bc565b15156101408d0152565b60608101356101608c0152612d2a8b612ccc608084016109bc565b94612cde610180968784019015159052565b610280612d1c6101a09760a087013589860152612d146101c094612d0786880160c08b016129e7565b61022087019089016129e7565b860186612a1d565b9201526102c08d0190612a52565b92810190612a1d565b89820360ff19016102a08b0152612a52565b9187830360c0890152612aea565b930152565b92819795929993989498969196600160a01b60019003958682169a8b92338414159a612dcb61ffff9b612dfe9a612df7966000805160206147c78339815191529f95612dd996612e15575b50612db7612db2368e8a610cff565b61323e565b50949150506040519b8c9660208801612c10565b03601f198101875286610cc3565b612dee8d612de8368985610cff565b9061354f565b34953691610cff565b928b6133a4565b60405160008152931694169180602081015b0390a4565b612e1e84612995565b612e78575b612e2f60808501612995565b15612da357612e7290612e58336128348360018060a01b03166000526009602052604060002090565b5490612e6b60a08701358093101561299f565b33906128fd565b38612da3565b612eb4612e9b336128348460018060a01b03166000526009602052604060002090565b54612ead60208701358092101561299f565b33836128fd565b612e23565b15612ec057565b60405162461bcd60e51b8152602060048201526012602482015271155114d3ce881b9bdd08185c1c1c9bdd995960721b6044820152606490fd5b908160209103126103d15751610659816103c5565b6040513d6000823e3d90fd5b979695929461302e89610280976001600160401b0361304096612d539996610306855260018060a01b0316602085015216604083015280511515606083015260208101516080830152604081015160a0830152612f87606082015160c084019060018060a01b03169052565b60808101516001600160a01b031660e083015260a081015115156101009283015260c08101516101208d015260e0810151805115156101408e015260208101516001600160a01b03166101608e015260408101516001600160801b039081166101808f01526060820151166101a08e0152608001516101c08d01520151805115156101e08c015260208101516001600160a01b03166102008c0152604001516102208b0152565b6102a0806102408b0152890191612aea565b90868203610260880152612a52565b9597939096949298919860018060a01b039586881699338b03613181575b602084019661307c8851614170565b5088526040516303408e4760e41b8152966020886004817f00000000000000000000000000000000000000000000000000000000000000008e165afa9081156107d257612dcb8a8f968f93966000805160206147c78339815191529f9761311561310a61313a9f8f613101612df79d612db2936131259d613153575b5089519061437a565b5036908c610cff565b5096915050516140d6565b9b6040519c8d9760208901612f1b565b612dee8d613134368985610cff565b906135d9565b5160405190815292169361ffff16918060208101612e10565b6131739060203d811161317a575b61316b8183610cc3565b810190612efa565b50386130f8565b503d613161565b6131be6131a4336128348c60018060a01b03166000526009602052604060002090565b546131b6602087019182511115612eb9565b51338b6128fd565b61306d565b156131ca57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561320b57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132e6575b50156132a957600283015193602284015193600261ffff87166001811480156132a0575b61327c906131c3565b613287871515613204565b1461328f5750565b925090506056604283015192015190565b50808214613273565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861324f565b156132f857565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261337161065997959361ffff61337f9416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133cd9193929561ffff811660005260016020526133d4604060002060405194858092611099565b0384610cc3565b825115613459576133e6855182613666565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661343b91604051998a988997889662c5803160e81b88526004880161334c565b03925af180156107d25761344c5750565b80611d116103e192610cab565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134be57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561350a57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103056000526020526040600020549061358d8215156134b7565b1015613503565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103066000526020526040600020549061358d8215156134b7565b9190602281511061359457602261ffff9101519216600052600260205261364c60406000206001600052602052604060002090565b54908101809111610b26576103e19161358d8215156134b7565b61ffff1660005260036020526040600020549081156136cb575b1161368757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613680565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161370781610ce4565b926137156040519485610cc3565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a31565b90601f811161375c57505050565b600091825260208220906020601f850160051c83019410613798575b601f0160051c01915b82811061378d57505050565b818155600101613781565b9092508290613778565b601319810191908211610b2657565b605019810191908211610b2657565b9290916138325a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061382c8261381e6137fd60a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b03601f198101845283610cc3565b30614769565b939015613841575b5050505050565b61384a94613854565b388080808061383a565b91936138f17fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138ff939561ffff815160208301209616958660005260056020526138b883610df260208b60406000208260405194838680955193849201610600565b556001600160401b036138dd604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561392457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161399f9060609461ffff6001600160401b039499989799168552608060208601526080850191612a31565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b9491959897906112ae613a056040996139fd613a0b97613a28993691610cff565b943691610cff565b976140d6565b928451968794859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a6b57509190565b905061048791925060403d8111610ac857610ab98183610cc3565b93969491613ab49061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a31565b961660408401526060830152608082015260a0818503910152612a31565b91969792989594939094303303613b6c57613aee908530614506565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b5c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a86565b0393f180156107d25761344c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bf69316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613c198461470e565b1680613d935750505060ff613c2d8261470e565b161580613d88575b613c3e906141ed565b613c50613c4a826146be565b91614759565b90916001600160a01b039182841615613d7e575b613c98906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661415d565b918316928315613d39577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cf961ffff92613cdf613cda87600a5461260a565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206147e783398151915260405180613d2489829190602083019252565b0390a36040519384521691806020810161277a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c64565b508051602914613c35565b600103613da3576103e193613eb9565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613def57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e6260e0989461ffff612d539995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b6001600160401b03613eae60409396959496606084526060840190610623565b951660208201520152565b9091613ec4846142a1565b9091613ef5613eee87611e0e613ee88b61ffff166000526007602052604060002090565b8c610d8f565b5460ff1690565b91613f2b6001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661415d565b9288888b8315614027575b505050853b15613fdc5794613f7d969461382c948a9461381e948d99600014613fd55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613e30565b9015613fca575090613fc561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e8e565b0390a2565b926103e19492613854565b1692613f5e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138ff915050565b90611e0e61405c9261405689614041614069979b306144a3565b9961ffff166000526007602052604060002090565b90610d8f565b805460ff19166001179055565b88888b613f36565b60065460ff16156140b85760228251106135945761ffff60226103e1930151911660005260026020526040600020600080526020526040600020549061358d8215156134b7565b50516112e357565b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561415857046001600160401b0390818111614113571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6140c0565b81810292918115918404141715610b2657565b7f0000000000000000000000000000000000000000000000000000000000000000801561415857810690818103908111610b265791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610cbe5760405290565b156141f457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142918151809260208686019101610600565b8101036051810184520182610cc3565b906142b9600160ff6142b28561470e565b16146141ed565b6142c2826146be565b906142cc83614759565b90604984511061433d576049840151936051815110614301576142fe6051820151916142f881516137b1565b9061463a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b03811633810361443c575b80156143ed57816143c2846143b560009560018060a01b03166000526008602052604060002090565b5461272f8282101561444c565b556143d083600a5403600a55565b6040518381526000805160206147e783398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6144478333846128fd565b61438c565b1561445357565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613d3957600a5490828201809211610b26576000926144f76020926000805160206147e783398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b038116308114159081614532575b50156126ca576109768333836128fd565b905033141538614521565b1561454457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561458157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145ce826145c7816125ee565b101561453d565b6145db828251101561457a565b816145f3575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106146275750508252601f01601f191660405290565b909283518152602080910193019061460f565b614647826145c7816125ee565b61465c8151614655846125fc565b111561457a565b81614674575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146ab5750508252601f01601f191660405290565b9092835181526020809101930190614693565b60218151106146d157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061471e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614301576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbe5783926040526096875282602088019560a036883760208451940192f1903d90609682116147bd575b6000908286523e9190565b609691506147b256fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4ccbe45cc23e303f3c84e7b6aa298e5acb1ae1c4dd689bde61adbf80546a7eb64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063950c8a741461033957806395d89b41146103345780639bdb98121461032f5780639f38369a1461032a578063a457c2d714610325578063a4c51df514610320578063a6c3d1651461031b578063a9059cbb14610316578063b02f69a214610311578063b353aaa71461030c578063ba03a8d714610307578063baf3292d14610302578063c4461834146102fd578063cbed8b9c146102f8578063ce8849ed146102f3578063d1deba1f146102ee578063dbd01de1146102e9578063dd62ed3e146102e4578063de406577146102df578063df2a5b3b146102da578063e6a20ae6146102d5578063e78eb946146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612565565b612491565b6123ca565b6123a7565b61235d565b612213565b61218a565b612128565b612083565b612058565b611f6b565b611f26565b611ecc565b611ea3565b611d40565b611d17565b611c2b565b611c0e565b611b9e565b611b54565b611b0f565b611a68565b61187f565b6116fc565b611669565b6115ab565b611508565b6114bd565b611419565b6113f0565b61091d565b6113c7565b611375565b611337565b6111a1565b61114a565b611004565b610fc7565b610ee4565b610e3f565b610e1c565b610db5565b610c79565b610bf8565b610bbf565b610b63565b610acf565b6109c7565b61097b565b61093b565b610893565b610854565b61081f565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b61112f565b8051908184149182610550575b508161052d575b506132f1565b3691610cff565b923691610cff565b926137c0565b905061053a368486610cff565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161105f565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610cc3565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610cab565b80f35b612f0f565b5080fd5b6001600160a01b038116036103d157565b606435906103e1826107db565b60e435906103e1826107db565b61010435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761084960043561083f816107db565b60243590336127d2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610874816103c5565b61087c612580565b166000526003602052602435604060002055600080f35b346103d15760006020366003190112610739576004356108b2816103c5565b6108ba612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761084960043561095b816107db565b602435610967816107db565b604435916109768333836128fd565b6126ca565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b608435906103e182610997565b61012435906103e182610997565b35906103e182610997565b346103d15760a03660031901126103d1576004356109e4816103c5565b606435906109f182610997565b608435906001600160401b0382116103d157610a1661051860409336906004016103e3565b90610a4d610a30610a286044356140d6565b6024356141a7565b928451958694859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a9e575b50604080519182526020820192909252f35b9050610ac1915060403d8111610ac8575b610ab98183610cc3565b810190613bb1565b9038610a8c565b503d610aaf565b346103d15760403660031901126103d157600435610aec816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610b265761084991336127d2565b6125d8565b9060406003198301126103d157600435610b44816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610bb0610b7936610b2b565b9390911660005260018452610b9b610ba2604060002060405192838092611099565b0382610cc3565b848151910120923691610cff565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610bdf816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610c0636610b2b565b9190610c10612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c676000988997889460048501613733565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbe57604052565b610c95565b90601f801991011681019081106001600160401b03821117610cbe57604052565b6001600160401b038111610cbe57601f01601f191660200190565b929192610d0b82610ce4565b91610d196040519384610cc3565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610d4e816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610d7f93600401359101610cff565b9160443590811681036103d15790565b602090610da9928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610e1361ffff610df283610dcf36610d36565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e4d36610426565b9192949390303303610e715761051f610e6b92610019973691610cff565b92613c0b565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126103d15760a490565b908160609103126103d15790565b60a03660031901126103d157600435610efc816107db565b602435610f08816103c5565b604435916084356001600160401b0381116103d157602061ffff610f3f6000805160206147c7833981519152933690600401610ed6565b93610fb28535610f4e816107db565b610f6c6105188689013598610f628a6107db565b60408101906139aa565b610f76818a614071565b610f8b610f84606435614170565b508561437a565b97610f97891515613de8565b610fa9610fa38a6140d6565b8c6141a7565b9234938b6133a4565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d157600435610fe4816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107395761101e612580565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561108f575b602083101461107957565b634e487b7160e01b600052602260045260246000fd5b91607f169161106e565b90600092918054916110aa8361105f565b91828252600193848116908160001461110c57506001146110cc575b50505050565b90919394506000526020928360002092846000945b8386106110f85750505050010190388080806110c6565b8054858701830152940193859082016110e1565b9294505050602093945060ff191683830152151560051b010190388080806110c6565b906103e16111439260405193848092611099565b0383610cc3565b346103d15760203660031901126103d15761ffff60043561116a816103c5565b1660005260016020526106b4610b9b61118d604060002060405192838092611099565b604051918291602083526020830190610623565b60e03660031901126103d1576004356111b9816107db565b6024356111c5816103c5565b604435916001600160401b03906084358281116103d1576111ea9036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d157611213903690600401610ed6565b9061124a823595611223876107db565b611242611238602086013595610f62876107db565b9990923691610cff565b973691610cff565b928760ff600654166000146112b5579360209593610fa9610fb2946112836000805160206147c78339815191529a958561ffff9a613617565b611298611291606435614170565b508861437a565b9a6112a48c1515613de8565b8d6112ae8d6140d6565b9033614234565b505082939192516112e3576000805160206147c78339815191529460209461ffff94610fa9610fb294611283565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e13600435611397816103c5565b61ffff602435916113a7836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c5461143b8161105f565b808452906001908181169081156107115750600114611464576106b4846106a881880382610cc3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114aa57505050816106b4936106a89282010193610698565b805485850187015292850192810161148e565b346103d157602060ff6114fc61ffff610df2846114d936610d36565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611528816103c5565b166000526001602052610b9b611548604060002060405192838092611099565b805115611566576106a8816115606106b493516137a2565b906145ba565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356115c8816107db565b602435903360005260096020526115f58160406000209060018060a01b0316600052602052604060002090565b54918083106116165761160a920390336127d2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611686816103c5565b6001600160401b03906064358281116103d1576116a79036906004016103e3565b6116b2929192610410565b60a435916116bf83610997565b60c4359586116103d1576116da6116ea9636906004016103e3565b95909460443590602435906139dc565b60408051928352602083019190915290f35b346103d15761170a36610b2b565b90611713612580565b6040519260209280838587013761173f6034868381013060601b88820152036014810188520186610cc3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610cbe5761177983611773865461105f565b8661374e565b80601f84116001146117e95750918080926117d89695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117de575b50501b916000199060031b1c19161790555b60405193849384613733565b0390a180f35b0151925038806117ba565b91939498601f19841661180187600052602060002090565b938a905b828210611868575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117d89896941061184f575b505050811b0190556117cc565b015160001960f88460031b161c19169055388080611842565b808886978294978701518155019601940190611805565b346103d15760403660031901126103d15761084960043561189f816107db565b60243590336126ca565b6101c435906001600160801b03821682036103d157565b60a0906101631901126103d1576040519060a082018281106001600160401b03821117610cbe5760405281610164356118f881610997565b815261018435611907816107db565b60208201526101a4356001600160801b03811681036103d157604082015261192d6118a9565b606082015260806101e435910152565b6060906102031901126103d15760405190606082018281106001600160401b03821117610cbe57604052816102043561197581610997565b815261022435611984816107db565b6020820152604061024435910152565b906101e06083198301126103d15760405161012081018181106001600160401b03821117610cbe57604052610100611a2482946119cf6109a1565b845260a435602085015260c43560408501526119e96107f9565b60608501526119f6610806565b6080850152611a036109ae565b60a08501526101443560c0850152611a1a816118c0565b60e085015261193d565b910152565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b908160a09103126103d15790565b6102c03660031901126103d157600435611a81816107db565b602435611a8d816107db565b60443591611a9a836103c5565b611aa26107ec565b92611aac36611994565b6001600160401b0394610264358681116103d157611ace903690600401611a29565b929091610284358881116103d157611aea903690600401611a5a565b946102a4359889116103d157611b076100199936906004016103e3565b98909761304f565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6114fc602435611b78816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611bde816107db565b611be6612580565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611c48816103c5565b602435611c54816103c5565b6064356001600160401b0381116103d157611c739036906004016103e3565b9092611c7d612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611cf4604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a31565b03925af180156107d257611d0457005b80611d1161001992610cab565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611d4936610426565b9161ffff86949296166000526005602052611d9081604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611e5257611e418483611e3a7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611e2684611e0e8e8a8f611e4d9f908f611df490611de7611e089436908d610cff565b602081519101201461391d565b61ffff166000526005602052604060002090565b91613904565b906001600160401b0316600052602052604060002090565b55611e3236878d610cff565b933691610cff565b9188613c0b565b60405195869586613973565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e13600435611eee816107db565b60243590611efb826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f88816103c5565b602435611f94816103c5565b60443591611fa0612580565b821561201b57611e4d7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611ff58560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b90816101c09103126103d15790565b6101403660031901126103d15760043561209c816107db565b6024356120a8816107db565b604435916120b5836103c5565b6120bd6107ec565b6001600160401b0393906084358581116103d1576120df9036906004016103e3565b906120e936610ec5565b92610104358881116103d157612103903690600401612074565b94610124359889116103d157612120610019993690600401611a29565b989097612d58565b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561216881610997565b612170612580565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d1576004356121a8816103c5565b6001600160401b03906024358281116103d1576121c99036906004016103e3565b91906044359084821682036103d1576084356121e4816107db565b60c4359586116103d1576121ff6100199636906004016103e3565b94909360e4359660a4359460643593613ad2565b346103d15761222136610b2b565b919061222b612580565b60009161ffff81168352600160209080825260408520916001600160401b038711610cbe576122648761225e855461105f565b8561374e565b8590601f88116001146122cb57509186808798936117d8957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936122c0575b501b906000198460031b1c191617905560405193849384613733565b8801359250386122a4565b90601f1988166122e085600052602060002090565b9288905b828210612346575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117d896941061232c575b505082811b0190556117cc565b870135600019600386901b60f8161c19169055388061231f565b808685968294968c013581550195019301906122e4565b346103d15760403660031901126103d157602060ff6114fc602435612381816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356123e7816107db565b6123ef612580565b6001600160a01b03908116801561243d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d1576004356124ae816103c5565b602435906124bb826103c5565b6124c66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612544575b5060405191829182610648565b61255f913d8091833e6125578183610cc3565b8101906136d5565b38612537565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361259457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2657565b6051019081605111610b2657565b91908201809211610b2657565b1561261e57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561267657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561277f57612764826000805160206147e78339815191529461277a941696612704881515612617565b6001600160a01b03811660009081526008602052604090206127499085905461272f8282101561266f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156128ac57821693841561285c578061284b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461283461277a9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129355750505050565b808410612950576129479303916127d2565b388080806110c6565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b3561065981610997565b156129a657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356129f681610997565b151584526020810135612a08816107db565b6001600160a01b031660208501520135910152565b9035609e19823603018112156103d1570190565b908060209392818452848401376000828201840152601f01601f1916010190565b8035612a5d81610997565b15158252602081013560208301526040810135612a7981610997565b1515604083015261ffff6060820135612a91816103c5565b1660608301526080810135601e19823603018112156103d15701602081359101906001600160401b0381116103d15780360382136103d15760a0838160806106599601520191612a31565b359060ff821682036103d157565b9190808252602080920192916000905b828210612b08575050505090565b9091929380612b22600192612b1c886109bc565b15159052565b612b38612b308488016109bc565b151582850152565b612b506040612b488189016109bc565b151590830152565b612b6a6060612b608189016103d6565b61ffff1690830152565b612b896080612b7a818901610814565b6001600160a01b031690830152565b612b9960a0612b488189016109bc565b612ba960c0612b7a818901610814565b612bb960e0612b7a818901610814565b61010080870135908201526101208087013590820152612be9610140612be0818901612adc565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612afa565b61030581526001600160a01b03918216602082015296959460e094612d539490939192612d4592604090828135612c46816107db565b16828d0152826020820135612c5a816107db565b1660608d01520135612c6b816107db565b1660808a0152612c886101008060a08c01528a01612b1c836109bc565b612d33610120916020810135838c0152612cb1612ca7604083016109bc565b15156101408d0152565b60608101356101608c0152612d2a8b612ccc608084016109bc565b94612cde610180968784019015159052565b610280612d1c6101a09760a087013589860152612d146101c094612d0786880160c08b016129e7565b61022087019089016129e7565b860186612a1d565b9201526102c08d0190612a52565b92810190612a1d565b89820360ff19016102a08b0152612a52565b9187830360c0890152612aea565b930152565b92819795929993989498969196600160a01b60019003958682169a8b92338414159a612dcb61ffff9b612dfe9a612df7966000805160206147c78339815191529f95612dd996612e15575b50612db7612db2368e8a610cff565b61323e565b50949150506040519b8c9660208801612c10565b03601f198101875286610cc3565b612dee8d612de8368985610cff565b9061354f565b34953691610cff565b928b6133a4565b60405160008152931694169180602081015b0390a4565b612e1e84612995565b612e78575b612e2f60808501612995565b15612da357612e7290612e58336128348360018060a01b03166000526009602052604060002090565b5490612e6b60a08701358093101561299f565b33906128fd565b38612da3565b612eb4612e9b336128348460018060a01b03166000526009602052604060002090565b54612ead60208701358092101561299f565b33836128fd565b612e23565b15612ec057565b60405162461bcd60e51b8152602060048201526012602482015271155114d3ce881b9bdd08185c1c1c9bdd995960721b6044820152606490fd5b908160209103126103d15751610659816103c5565b6040513d6000823e3d90fd5b979695929461302e89610280976001600160401b0361304096612d539996610306855260018060a01b0316602085015216604083015280511515606083015260208101516080830152604081015160a0830152612f87606082015160c084019060018060a01b03169052565b60808101516001600160a01b031660e083015260a081015115156101009283015260c08101516101208d015260e0810151805115156101408e015260208101516001600160a01b03166101608e015260408101516001600160801b039081166101808f01526060820151166101a08e0152608001516101c08d01520151805115156101e08c015260208101516001600160a01b03166102008c0152604001516102208b0152565b6102a0806102408b0152890191612aea565b90868203610260880152612a52565b9597939096949298919860018060a01b039586881699338b03613181575b602084019661307c8851614170565b5088526040516303408e4760e41b8152966020886004817f00000000000000000000000000000000000000000000000000000000000000008e165afa9081156107d257612dcb8a8f968f93966000805160206147c78339815191529f9761311561310a61313a9f8f613101612df79d612db2936131259d613153575b5089519061437a565b5036908c610cff565b5096915050516140d6565b9b6040519c8d9760208901612f1b565b612dee8d613134368985610cff565b906135d9565b5160405190815292169361ffff16918060208101612e10565b6131739060203d811161317a575b61316b8183610cc3565b810190612efa565b50386130f8565b503d613161565b6131be6131a4336128348c60018060a01b03166000526009602052604060002090565b546131b6602087019182511115612eb9565b51338b6128fd565b61306d565b156131ca57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561320b57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132e6575b50156132a957600283015193602284015193600261ffff87166001811480156132a0575b61327c906131c3565b613287871515613204565b1461328f5750565b925090506056604283015192015190565b50808214613273565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861324f565b156132f857565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261337161065997959361ffff61337f9416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133cd9193929561ffff811660005260016020526133d4604060002060405194858092611099565b0384610cc3565b825115613459576133e6855182613666565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661343b91604051998a988997889662c5803160e81b88526004880161334c565b03925af180156107d25761344c5750565b80611d116103e192610cab565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134be57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561350a57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103056000526020526040600020549061358d8215156134b7565b1015613503565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103066000526020526040600020549061358d8215156134b7565b9190602281511061359457602261ffff9101519216600052600260205261364c60406000206001600052602052604060002090565b54908101809111610b26576103e19161358d8215156134b7565b61ffff1660005260036020526040600020549081156136cb575b1161368757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613680565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161370781610ce4565b926137156040519485610cc3565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a31565b90601f811161375c57505050565b600091825260208220906020601f850160051c83019410613798575b601f0160051c01915b82811061378d57505050565b818155600101613781565b9092508290613778565b601319810191908211610b2657565b605019810191908211610b2657565b9290916138325a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061382c8261381e6137fd60a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b03601f198101845283610cc3565b30614769565b939015613841575b5050505050565b61384a94613854565b388080808061383a565b91936138f17fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138ff939561ffff815160208301209616958660005260056020526138b883610df260208b60406000208260405194838680955193849201610600565b556001600160401b036138dd604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561392457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161399f9060609461ffff6001600160401b039499989799168552608060208601526080850191612a31565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b9491959897906112ae613a056040996139fd613a0b97613a28993691610cff565b943691610cff565b976140d6565b928451968794859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a6b57509190565b905061048791925060403d8111610ac857610ab98183610cc3565b93969491613ab49061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a31565b961660408401526060830152608082015260a0818503910152612a31565b91969792989594939094303303613b6c57613aee908530614506565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b5c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a86565b0393f180156107d25761344c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bf69316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613c198461470e565b1680613d935750505060ff613c2d8261470e565b161580613d88575b613c3e906141ed565b613c50613c4a826146be565b91614759565b90916001600160a01b039182841615613d7e575b613c98906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661415d565b918316928315613d39577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cf961ffff92613cdf613cda87600a5461260a565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206147e783398151915260405180613d2489829190602083019252565b0390a36040519384521691806020810161277a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c64565b508051602914613c35565b600103613da3576103e193613eb9565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613def57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e6260e0989461ffff612d539995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b6001600160401b03613eae60409396959496606084526060840190610623565b951660208201520152565b9091613ec4846142a1565b9091613ef5613eee87611e0e613ee88b61ffff166000526007602052604060002090565b8c610d8f565b5460ff1690565b91613f2b6001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661415d565b9288888b8315614027575b505050853b15613fdc5794613f7d969461382c948a9461381e948d99600014613fd55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613e30565b9015613fca575090613fc561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e8e565b0390a2565b926103e19492613854565b1692613f5e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138ff915050565b90611e0e61405c9261405689614041614069979b306144a3565b9961ffff166000526007602052604060002090565b90610d8f565b805460ff19166001179055565b88888b613f36565b60065460ff16156140b85760228251106135945761ffff60226103e1930151911660005260026020526040600020600080526020526040600020549061358d8215156134b7565b50516112e357565b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561415857046001600160401b0390818111614113571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6140c0565b81810292918115918404141715610b2657565b7f0000000000000000000000000000000000000000000000000000000000000000801561415857810690818103908111610b265791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610cbe5760405290565b156141f457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142918151809260208686019101610600565b8101036051810184520182610cc3565b906142b9600160ff6142b28561470e565b16146141ed565b6142c2826146be565b906142cc83614759565b90604984511061433d576049840151936051815110614301576142fe6051820151916142f881516137b1565b9061463a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b03811633810361443c575b80156143ed57816143c2846143b560009560018060a01b03166000526008602052604060002090565b5461272f8282101561444c565b556143d083600a5403600a55565b6040518381526000805160206147e783398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6144478333846128fd565b61438c565b1561445357565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613d3957600a5490828201809211610b26576000926144f76020926000805160206147e783398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b038116308114159081614532575b50156126ca576109768333836128fd565b905033141538614521565b1561454457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561458157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145ce826145c7816125ee565b101561453d565b6145db828251101561457a565b816145f3575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106146275750508252601f01601f191660405290565b909283518152602080910193019061460f565b614647826145c7816125ee565b61465c8151614655846125fc565b111561457a565b81614674575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146ab5750508252601f01601f191660405290565b9092835181526020809101930190614693565b60218151106146d157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061471e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614301576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbe5783926040526096875282602088019560a036883760208451940192f1903d90609682116147bd575b6000908286523e9190565b609691506147b256fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4ccbe45cc23e303f3c84e7b6aa298e5acb1ae1c4dd689bde61adbf80546a7eb64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/USDOOptionsDestinationModule.json b/src/artifacts/tapioca-bar/USDOOptionsDestinationModule.json new file mode 100644 index 00000000..d706dce7 --- /dev/null +++ b/src/artifacts/tapioca-bar/USDOOptionsDestinationModule.json @@ -0,0 +1,1818 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "USDOOptionsDestinationModule", + "sourceName": "contracts/usd0/modules/USDOOptionsDestinationModule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lzEndpoint", + "type": "address" + }, + { + "internalType": "contract IYieldBoxBase", + "name": "_yieldBox", + "type": "address" + }, + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CallOFTReceivedSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_reason", + "type": "bytes" + } + ], + "name": "MessageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "NonContractAddress", + "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": false, + "internalType": "bool", + "name": "oldState", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "newState", + "type": "bool" + } + ], + "name": "PausedUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ReceiveFromChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_payloadHash", + "type": "bytes32" + } + ], + "name": "RetryMessageSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SendToChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetBurnerStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_type", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_minDstGas", + "type": "uint256" + } + ], + "name": "SetMinDstGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "SetMinterStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "precrime", + "type": "address" + } + ], + "name": "SetPrecrime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "SetTrustedRemote", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "SetTrustedRemoteAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "SetUseCustomAdapterParams", + "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": "DEFAULT_PAYLOAD_SIZE_LIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NO_EXTRA_GAS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_SEND_AND_CALL", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "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": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedBurner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowedMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_from", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_gasForCall", + "type": "uint256" + } + ], + "name": "callOnOFTReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cluster", + "outputs": [ + { + "internalType": "contract ICluster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "conservator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "creditedPackets", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendAndCallFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendFee", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "exercise", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "oTAPTokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tapAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "components": [ + { + "internalType": "bool", + "name": "withdrawOnAnotherChain", + "type": "bool" + }, + { + "internalType": "address", + "name": "tapOftAddress", + "type": "address" + }, + { + "internalType": "uint16", + "name": "lzDstChainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "extraGas", + "type": "uint256" + } + ], + "internalType": "struct ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapData", + "name": "tapSendData", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "paymentTokenAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "permitAll", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowFailure", + "type": "bool" + }, + { + "internalType": "bool", + "name": "yieldBoxTypeApproval", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "actionType", + "type": "uint16" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "permitBorrow", + "type": "bool" + }, + { + "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" + } + ], + "internalType": "struct ICommonData.IApproval[]", + "name": "approvals", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "airdropAmount", + "type": "uint256" + } + ], + "name": "exerciseInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "failedMessages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "forceResumeReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + } + ], + "name": "getConfig", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + } + ], + "name": "getTrustedRemoteAddress", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "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": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "minDstGasLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "nonblockingLzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "payloadSizeLimitLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "precrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "retryMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_dstGasForCall", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "_toAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address payable", + "name": "refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adapterParams", + "type": "bytes" + } + ], + "internalType": "struct ICommonOFT.LzCallParams", + "name": "_callParams", + "type": "tuple" + } + ], + "name": "sendFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_config", + "type": "bytes" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_packetType", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_minGas", + "type": "uint256" + } + ], + "name": "setMinDstGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_size", + "type": "uint256" + } + ], + "name": "setPayloadSizeLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_precrime", + "type": "address" + } + ], + "name": "setPrecrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setReceiveVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setSendVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "setTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "setTrustedRemoteAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_useCustomAdapterParams", + "type": "bool" + } + ], + "name": "setUseCustomAdapterParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sharedDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "trustedRemoteLookup", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "useCustomAdapterParams", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "yieldBox", + "outputs": [ + { + "internalType": "contract IYieldBoxBase", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x61010060409080825234620004d457606081620056b78038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551615172908162000545823960805181818161049d015281816107600152818161088f01528181610a0901528181610bca01528181611f86015281816120fa015281816128aa0152818161418001526145e7015260a05181611a14015260c051818181611745015281816143b4015281816147d501528181614a390152614ad3015260e0518161239f0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b48146103525780637e6b6e5a1461034d57806381618d0514610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612914565b612840565b612779565b612756565b61270c565b6125c2565b612539565b6124d7565b6124bb565b6123ce565b612389565b61232f565b612306565b6121bb565b612192565b6120a6565b612089565b612019565b611fcf565b611f70565b611f46565b611dc3565b611d2c565b611c6e565b611bcb565b611b80565b611adc565b611ab3565b6108f0565b611a8a565b611a38565b6119fa565b611646565b611566565b6111e8565b611191565b61104b565b61100e565b610f2b565b610e97565b610e74565b610e0d565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611176565b805190818414918261054b575b5081610528575b50613df3565b3691610d50565b923691610d50565b92613f14565b9050610535368486610d50565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816110a6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610ce7565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b61304a565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b6024359033612b48565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f61292f565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b60443591610949833383612c73565b612a79565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614a37565b602435614b08565b928451958694859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610ce7565b8101906142f3565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c9133612b48565b612987565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a6040600020604051928380926110e0565b0382610ce7565b848151910120923691610d50565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ea5565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b60c081019081106001600160401b03821117610c7657604052565b606081019081106001600160401b03821117610c7657604052565b608081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b604051906103e182610c96565b6001600160401b038111610c7657601f01601f191660200190565b929192610d5c82610d35565b91610d6a6040519384610ce7565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d50565b9060606003198301126103d157600435610dbb816103c5565b91602435906001600160401b0382116103d157610dda91600401610d87565b9060443561065481610410565b602090610e019282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e6b61ffff610e4a83610e2736610da2565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610ea536610421565b9192949390303303610ec95761051a610ec392610019973691610d50565b9261434d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d15790565b60a03660031901126103d157600435610f43816107d6565b602435610f4f816103c5565b604435916084356001600160401b0381116103d157602061ffff610f866000805160206150dd833981519152933690600401610f1d565b93610ff98535610f95816107d6565b610fb36105138689013598610fa98a6107d6565b60408101906140fe565b610fbd818a614934565b610fd2610fcb606435614ad1565b5085614cc8565b97610fde891515614503565b610ff0610fea8a614a37565b8c614b08565b9234938b6145a3565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561102b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107345761106561292f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156110d6575b60208310146110c057565b634e487b7160e01b600052602260045260246000fd5b91607f16916110b5565b90600092918054916110f1836110a6565b9182825260019384811690816000146111535750600114611113575b50505050565b90919394506000526020928360002092846000945b83861061113f57505050500101903880808061110d565b805485870183015294019385908201611128565b9294505050602093945060ff191683830152151560051b0101903880808061110d565b906103e161118a92604051938480926110e0565b0383610ce7565b346103d15760203660031901126103d15761ffff6004356111b1816103c5565b1660005260016020526106af610b536111d46040600020604051928380926110e0565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611200816107d6565b60243561120c816103c5565b604435916001600160401b03906084358281116103d1576112319036906004016103e3565b91909260a4359161124183610410565b60c4358281116103d157611259903690600401610f1d565b92611290843595611269876107d6565b61128861127e602088013597610fa9896107d6565b9990923691610d50565b973691610d50565b9460ff600654166000146113855760228651106113405785602095610ff0610ff99461130e8c6112fb61ffff9a8b60226000805160206150dd8339815191529f0151931660005260028d5284166112f560406000206001600052602052604060002090565b546129b9565b90611307821515614989565b10156149d5565b61132361131c606435614ad1565b5088614cc8565b9a61132f8c1515614503565b8d6113398d614a37565b9033614b82565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113b2576000805160206150dd8339815191529460209461ffff94610ff0610ff99461130e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610c765760051b60200190565b60ff8116036103d157565b35906103e18261141d565b81601f820112156103d15780359061144a82611406565b9260409061145a82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b85841061148b575050505050505090565b86848303126103d15784879161149f610d08565b6114a887610974565b81526114b5838801610974565b838201526114c4868801610974565b8682015260606114d58189016103d6565b9082015260806114e68189016107e7565b9082015260a06114f7818901610974565b9082015260c06115088189016107e7565b9082015260e06115198189016107e7565b9082015261010080880135908201526101208088013590820152610140611541818901611428565b908201526101608088013590820152610180808801359082015281520193019261147a565b346103d1576101c03660031901126103d157600435611584816107d6565b60443590611591826107d6565b60843561159d816107d6565b60c03660a31901126103d157604051926115b684610c7b565b60a4356115c28161096a565b845260c4356115d0816107d6565b602085015260e4356115e1816103c5565b6040850152610104356060850152610124356115fc816107d6565b60808501526101443560a085015261018435936001600160401b0385116103d15761162e610019953690600401611433565b926101a43594610164359360643591602435906134b3565b346103d15760a03660031901126103d1576116626004356107d6565b61166d6024356103c5565b6001600160401b036044358181116103d15761168d903690600401610d87565b611698606435610410565b6084358281116103d1576116b0903690600401610d87565b906116bc303314612d0b565b600760005260126020527f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc546001600160a01b039290611703908416600435851614612d50565b6117166020825183010160208301612f68565b9594509095929197611731602088015160018060a01b031690565b888116611940575b509061176b60009384937f00000000000000000000000000000000000000000000000000000000000000009116614abe565b60408a015261177930611fb5565b54966117cd6117c96117c26064356117aa6117a460243561ffff166000526007602052604060002090565b8a610de7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b6118f4575b6118578a6118496117e230611fb5565b548251909a906001600160a01b0316606084015160808501519197909490916001600160a01b03169660a0820151916040611826602083015160018060a01b031690565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01613181565b03601f198101835282610ce7565b51906004355af492611867613218565b93156118a6575b865160408089015190519081529087166001600160a01b03169061ffff60243516906000805160206150fd83398151915290602090a3005b6118ce946118b391613266565b6040870151809110156118d8575b5060643590602435613fa8565b388080808061186e565b86516118ee91906001600160a01b031630613273565b386118c1565b61190260408b015130614dde565b61193b61192e6064356117aa61192860243561ffff166000526007602052604060002090565b89610de7565b805460ff19166001179055565b6117d2565b600d54919361199d93929091602091611969906001600160a01b03165b6001600160a01b031690565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529094859190829081906044820190565b03915afa9081156107cd576000946119c161176b93879687916119cb575b50613056565b9293509350611739565b6119ed915060203d6020116119f3575b6119e58183610ce7565b810190613035565b386119bb565b503d6119db565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e6b600435611a5a816103c5565b61ffff60243591611a6a836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107345760405181600c54611afe816110a6565b8084529060019081811690811561070c5750600114611b27576106af846106a381880382610ce7565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b6d57505050816106af936106a39282010193610693565b8054858501870152928501928101611b51565b346103d157602060ff611bbf61ffff610e4a84611b9c36610da2565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611beb816103c5565b166000526001602052610b53611c0b6040600020604051928380926110e0565b805115611c29576106a381611c236106af9351613248565b90614ee2565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d157600435611c8b816107d6565b60243590336000526009602052611cb88160406000209060018060a01b0316600052602052604060002090565b5491808310611cd957611ccd92039033612b48565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611d49816103c5565b6001600160401b03906064358281116103d157611d6a9036906004016103e3565b608492919235611d7981610410565b60a43591611d868361096a565b60c4359586116103d157611da1611db19636906004016103e3565b9590946044359060243590614130565b60408051928352602083019190915290f35b346103d157611dd136610ae3565b90611dda61292f565b60405192602092808385870137611e066034868381013060601b88820152036014810188520186610ce7565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c7657611e4083611e3a86546110a6565b86613ec0565b80601f8411600114611eb0575091808092611e9f9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611ea5575b50501b916000199060031b1c19161790555b60405193849384613ea5565b0390a180f35b015192503880611e81565b91939498601f198416611ec887600052602060002090565b938a905b828210611f2f575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611e9f98969410611f16575b505050811b019055611e93565b015160001960f88460031b161c19169055388080611f09565b808886978294978701518155019601940190611ecc565b346103d15760403660031901126103d15761081c600435611f66816107d6565b6024359033612a79565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103d15760403660031901126103d157602060ff611bbf602435611ff3816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612059816107d6565b61206161292f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d1576004356120c3816103c5565b6024356120cf816103c5565b6064356001600160401b0381116103d1576120ee9036906004016103e3565b90926120f861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d1576000809461216f604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613e84565b03925af180156107cd5761217f57005b8061218c61001992610c63565b806105f0565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b6121c436610421565b9161ffff8694929616600052600560205261220b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156122b5576122a4848361229d7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000612289846117aa8e8a8f6122b09f908f61226f906122626122839436908d610d50565b6020815191012014614071565b61ffff166000526005602052604060002090565b91614058565b5561229536878d610d50565b933691610d50565b918861434d565b604051958695866140c7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e6b600435612351816107d6565b6024359061235e826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d1576004356123eb816103c5565b6024356123f7816103c5565b6044359161240361292f565b821561247e576122b07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356125178161096a565b61251f61292f565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612557816103c5565b6001600160401b03906024358281116103d1576125789036906004016103e3565b91906044359061258782610410565b608435612593816107d6565b60c4359586116103d1576125ae6100199636906004016103e3565b94909360e4359660a4359460643593614226565b346103d1576125d036610ae3565b91906125da61292f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576126138761260d85546110a6565b85613ec0565b8590601f881160011461267a5750918680879893611e9f957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361266f575b501b906000198460031b1c191617905560405193849384613ea5565b880135925038612653565b90601f19881661268f85600052602060002090565b9288905b8282106126f5575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611e9f9694106126db575b505082811b019055611e93565b870135600019600386901b60f8161c1916905538806126ce565b808685968294968c01358155019501930190612693565b346103d15760403660031901126103d157602060ff611bbf602435612730816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d157600435612796816107d6565b61279e61292f565b6001600160a01b0390811680156127ec57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561285d816103c5565b6024359061286a826103c5565b6128756044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af916000916128f3575b5060405191829182610643565b61290e913d8091833e6129068183610ce7565b810190613e4e565b386128e6565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361294357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156129cd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612af557612ada8260008051602061511d83398151915294612af0941696612ab38815156129c6565b612ad484612ac083611fb5565b54612acd82821015612a1e565b0391611fb5565b55611fb5565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c22578216938415612bd25780612bc17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612baa612af09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612cab5750505050565b808410612cc657612cbd930391612b48565b3880808061110d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612d1257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612d5757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826103c5565b51906103e1826107d6565b51906103e18261096a565b91908260c09103126103d157604051612dce81610c7b565b60a08082948051612dde8161096a565b84526020810151612dee816107d6565b60208501526040810151612e01816103c5565b6040850152606081015160608501526080810151612e1e816107d6565b60808501520151910152565b51906103e18261141d565b81601f820112156103d157805190612e4c82611406565b92604090612e5c82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b858410612e8d575050505050505090565b86848303126103d157848791612ea1610d08565b612eaa87612dab565b8152612eb7838801612dab565b83820152612ec6868801612dab565b868201526060612ed7818901612d95565b908201526080612ee8818901612da0565b9082015260a0612ef9818901612dab565b9082015260c0612f0a818901612da0565b9082015260e0612f1b818901612da0565b9082015261010080880151908201526101208088015190820152610140612f43818901612e2a565b9082015261016080880151908201526101808088015190820152815201930192612e7c565b918282039161020083126103d1578351612f81816103c5565b9360c06020820151612f9281610410565b94603f1901126103d157604051612fa881610c7b565b6040820151612fb6816107d6565b81526060820151612fc6816107d6565b60208201526080820151604082015260a0820151606082015260c0820151612fed816107d6565b608082015260e082015160a08201529261300b836101008401612db6565b926101c08301516001600160401b0381116103d1576101e09161302f918501612e35565b92015190565b908160209103126103d157516106548161096a565b6040513d6000823e3d90fd5b1561305d57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b90815180825260208080930193019160005b8281106130b9575050505090565b90919293826101a060019287516130d282825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019501939291016130ab565b999897949161321396926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190613099565b930152565b3d15613243573d9061322982610d35565b916132376040519384610ce7565b82523d6000602084013e565b606090565b601319810191908211610ade57565b605019810191908211610ade57565b91908203918211610ade57565b91906132fd91600080604051936020968786019463a9059cbb60e01b865260018060a01b0380931660248801526044870152604486526132b286610cb1565b1692604051946132c186610ccc565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16132f7613218565b91613379565b8051908161330a57505050565b828061331a938301019101613035565b156133225750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b919290156133db575081511561338d575090565b3b156133965790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156133ee5750805190602001fd5b60405162461bcd60e51b815290819061340a9060048301610643565b0390fd5b1561341557565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d1575190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b9194939697929590976134c730331461340e565b8051613720575b50604080516370a0823160e01b80825230600483015260209a92996001600160a01b0398808a169492939192918d81602481895afa9384156107cd578b918f600096613701575b50501691823b156103d1578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af180156107cd576136ee575b5089519182523060048301528a82602481865afa80156107cd5785926000916136c1575b5080821161368d575b50505050506135a28351151590565b1561366757828701516135bf9061195d906001600160a01b031681565b936135ce8785015161ffff1690565b91169261361b6135f460a06135ec608085015160018060a01b031690565b930151613dd3565b916135fd610d28565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156103d157613648600096519788968795869463695ef6bf60e01b8652306004870161345b565b03925af180156107cd5761365a575b50565b8061218c6103e192610c63565b91909501516103e195509293509161368891506001600160a01b031661195d565b613273565b61369691613266565b928084106136a5575b80613593565b6136b8936136b291613266565b91613273565b3880828161369f565b6136e191508c8d3d106136e7575b6136d98183610ce7565b81019061344c565b3861358a565b503d6136cf565b8061218c6136fb92610c63565b38613566565b613718929650803d106136e7576136d98183610ce7565b93388f613515565b61372990613853565b386134ce565b80518210156137435760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561376057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff6137c060209295949560408552604085019061061e565b9416910152565b60009060033d116137d457565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d6024840111176138425781840194855193841161384a573d85010160208487010111613842575061065492910160200190610ce7565b949350505050565b50949350505050565b9060005b8251811015613ae257604061387881613870848761372f565b510151151590565b1561389a57508061389461388e6001938661372f565b51613b94565b01613857565b60606138c461030961ffff6138bd846138b3888b61372f565b51015161ffff1690565b1614613759565b6138d360a0613870858861372f565b6138f160c06138e2868961372f565b5101516001600160a01b031690565b916139c261390460e06138e2888b61372f565b936139b4610100613915898c61372f565b5101518a6101206139268b8361372f565b5101516139426101406139398d8561372f565b51015160ff1690565b906101806139608d610160613957828861372f565b5101519561372f565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610ce7565b6139e56139da61195d61195d60806138e28a8d61372f565b916138b3878a61372f565b90803b156103d157613a136000929183928751948580948193631221baf960e31b835260049a8b84016137a5565b03925af19081613acf575b50613a3d576001613a2d6137c7565b6308c379a014613a87575b613a48575b505050600190613894565b613a616117c9613a56613218565b92613870878a61372f565b15613a3d57613a7261340a91613b1c565b925162461bcd60e51b81529283928301610643565b613a8f6137e5565b80613a9b575b50613a38565b60009150613ab06117c984613870898c61372f565b15613a9557845162461bcd60e51b815290819061340a90828701610643565b8061218c613adc92610c63565b38613a1e565b509050565b90929192613af481610d35565b91613b026040519384610ce7565b8294828452828201116103d15760206103e19301906105fb565b6044815110613b6d576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401613ae7565b50604051613b7a81610ccc565b600a8152695553444f3a206461746160b01b602082015290565b805115613d0a576080810151613bb49061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b03169161012084015190613be761014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613cf7575b50613657576001613c676137c7565b6308c379a014613cba575b613c795750565b613c916117c96020613c89613218565b930151151590565b1561365757613ca261340a91613b1c565b60405162461bcd60e51b815291829160048301610643565b613cc26137e5565b80613cce575b50613c72565b602083015160009250613cc85760405162461bcd60e51b815290819061340a9060048301610643565b8061218c613d0492610c63565b38613c58565b6080810151613d239061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101008401519061012085015193613d5d61014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613c4d565b60405190600160f01b602083015260228201526022815261065481610c96565b15613dfa57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d1578051906001600160401b0382116103d157019080601f830112156103d157815161065492602001613ae7565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61065495931681528160208201520191613e84565b90601f8111613ece57505050565b600091825260208220906020601f850160051c83019410613f0a575b601f0160051c01915b828110613eff57505050565b818155600101613ef3565b9092508290613eea565b929091613f865a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613f8082613f72613f5160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610ce7565b30615091565b939015613f95575b5050505050565b613f9e94613fa8565b3880808080613f8e565b91936140457fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614053939561ffff8151602083012096169586600052600560205261400c83610e4a60208b604060002082604051948386809551938492016105fb565b556001600160401b03614031604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b1561407857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916140f39060609461ffff6001600160401b039499989799168552608060208601526080850191613e84565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b94919598979061133961415960409961415161415f9761417c993691610d50565b943691610d50565b97614a37565b928451968794859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd5760009081936141bf57509190565b905061048291925060403d8111610a8057610a718183610ce7565b939694916142089061065499979461ffff6001600160401b039416875260c0602088015260c0870191613e84565b961660408401526060830152608082015260a0818503910152613e84565b919697929895949390943033036142ae57614242908530614e2e565b60405181815290946001600160a01b03169390849061ffff8516906000805160206150fd83398151915290602090a3833b156103d157600098899561429e936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016141da565b0393f180156107cd5761365a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff6143389316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff61435b84615036565b16806144ae5750505060ff61436f82615036565b1615806144a3575b61438090614b3b565b61439261438c82614fe6565b91615081565b90916001600160a01b039182841615614499575b6143da906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116614abe565b918316928315614454576000805160206150fd8339815191529161441461ffff9261440f61440a87600a546129b9565b600a55565b611fb5565b84815401905584600060008051602061511d8339815191526040518061443f89829190602083019252565b0390a360405193845216918060208101612af0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead93506143a6565b508051602914614377565b6001036144be576103e193614790565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561450a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261457061065497959361ffff61457e9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946145cc9193929561ffff811660005260016020526145d36040600020604051948580926110e0565b0384610ce7565b82511561463a576145e5855182614698565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661364891604051998a988997889662c5803160e81b88526004880161454b565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156146fd575b116146b957565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506146b2565b98979692936001600160401b0361473960e0989461ffff6132139995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b036147856040939695949660608452606084019061061e565b951660208201520152565b909161479b84614bef565b90916147c56117c2876117aa6147bf8b61ffff166000526007602052604060002090565b8c610de7565b916147fb6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116614abe565b9288888b83156148f7575b505050853b156148ac579461484d9694613f80948a94613f72948d996000146148a55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614707565b901561489a57509061489561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614765565b0390a2565b926103e19492613fa8565b169261482e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614053915050565b906117aa61192e926149268961491161492c979b30614dde565b9961ffff166000526007602052604060002090565b90610de7565b88888b614806565b60065460ff16156149815760228251106113405761ffff60226103e193015191166000526002602052614974604060002060008052602052604060002090565b5490611307821515614989565b50516113b257565b1561499057565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156149dc57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614ab957046001600160401b0390818111614a74571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614a21565b81810292918115918404141715610ade57565b7f00000000000000000000000000000000000000000000000000000000000000008015614ab957810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c96565b15614b4257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152614bdf81518092602086860191016105fb565b8101036051810184520182610ce7565b90614c07600160ff614c0085615036565b1614614b3b565b614c1082614fe6565b90614c1a83615081565b906049845110614c8b576049840151936051815110614c4f57614c4c605182015191614c468151613257565b90614f62565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614d77575b8015614d285781614cfd84614cf0600095611fb5565b54612acd82821015614d87565b55614d0b83600a5403600a55565b60405183815260008051602061511d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614d82833384612c73565b614cda565b15614d8e57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561445457600a5490828201809211610ade57600092614e1f60209260008051602061511d83398151915294600a55611fb5565b818154019055604051908152a3565b6106549183916001600160a01b038116308114159081614e5a575b5015612a7957610949833383612c73565b905033141538614e49565b15614e6c57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15614ea957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b614ef682614eef8161299d565b1015614e65565b614f038282511015614ea2565b81614f1b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410614f4f5750508252601f01601f191660405290565b9092835181526020809101930190614f37565b614f6f82614eef8161299d565b614f848151614f7d846129ab565b1115614ea2565b81614f9c575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614fd35750508252601f01601f191660405290565b9092835181526020809101930190614fbb565b6021815110614ff957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615046576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614c4f576029015190565b90929160008091604051956150a587610c7b565b6096875282602088019560a036883760208451940192f1903d90609682116150d3575b6000908286523e9190565b609691506150c856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c597d0a890767bed96150dae6c67c42327c0e0bbeeea009020c143eaac822ce164736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b48146103525780637e6b6e5a1461034d57806381618d0514610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612914565b612840565b612779565b612756565b61270c565b6125c2565b612539565b6124d7565b6124bb565b6123ce565b612389565b61232f565b612306565b6121bb565b612192565b6120a6565b612089565b612019565b611fcf565b611f70565b611f46565b611dc3565b611d2c565b611c6e565b611bcb565b611b80565b611adc565b611ab3565b6108f0565b611a8a565b611a38565b6119fa565b611646565b611566565b6111e8565b611191565b61104b565b61100e565b610f2b565b610e97565b610e74565b610e0d565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611176565b805190818414918261054b575b5081610528575b50613df3565b3691610d50565b923691610d50565b92613f14565b9050610535368486610d50565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816110a6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610ce7565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b61304a565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b6024359033612b48565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f61292f565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b60443591610949833383612c73565b612a79565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614a37565b602435614b08565b928451958694859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610ce7565b8101906142f3565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c9133612b48565b612987565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a6040600020604051928380926110e0565b0382610ce7565b848151910120923691610d50565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ea5565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b60c081019081106001600160401b03821117610c7657604052565b606081019081106001600160401b03821117610c7657604052565b608081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b604051906103e182610c96565b6001600160401b038111610c7657601f01601f191660200190565b929192610d5c82610d35565b91610d6a6040519384610ce7565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d50565b9060606003198301126103d157600435610dbb816103c5565b91602435906001600160401b0382116103d157610dda91600401610d87565b9060443561065481610410565b602090610e019282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e6b61ffff610e4a83610e2736610da2565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610ea536610421565b9192949390303303610ec95761051a610ec392610019973691610d50565b9261434d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d15790565b60a03660031901126103d157600435610f43816107d6565b602435610f4f816103c5565b604435916084356001600160401b0381116103d157602061ffff610f866000805160206150dd833981519152933690600401610f1d565b93610ff98535610f95816107d6565b610fb36105138689013598610fa98a6107d6565b60408101906140fe565b610fbd818a614934565b610fd2610fcb606435614ad1565b5085614cc8565b97610fde891515614503565b610ff0610fea8a614a37565b8c614b08565b9234938b6145a3565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561102b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107345761106561292f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156110d6575b60208310146110c057565b634e487b7160e01b600052602260045260246000fd5b91607f16916110b5565b90600092918054916110f1836110a6565b9182825260019384811690816000146111535750600114611113575b50505050565b90919394506000526020928360002092846000945b83861061113f57505050500101903880808061110d565b805485870183015294019385908201611128565b9294505050602093945060ff191683830152151560051b0101903880808061110d565b906103e161118a92604051938480926110e0565b0383610ce7565b346103d15760203660031901126103d15761ffff6004356111b1816103c5565b1660005260016020526106af610b536111d46040600020604051928380926110e0565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611200816107d6565b60243561120c816103c5565b604435916001600160401b03906084358281116103d1576112319036906004016103e3565b91909260a4359161124183610410565b60c4358281116103d157611259903690600401610f1d565b92611290843595611269876107d6565b61128861127e602088013597610fa9896107d6565b9990923691610d50565b973691610d50565b9460ff600654166000146113855760228651106113405785602095610ff0610ff99461130e8c6112fb61ffff9a8b60226000805160206150dd8339815191529f0151931660005260028d5284166112f560406000206001600052602052604060002090565b546129b9565b90611307821515614989565b10156149d5565b61132361131c606435614ad1565b5088614cc8565b9a61132f8c1515614503565b8d6113398d614a37565b9033614b82565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113b2576000805160206150dd8339815191529460209461ffff94610ff0610ff99461130e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610c765760051b60200190565b60ff8116036103d157565b35906103e18261141d565b81601f820112156103d15780359061144a82611406565b9260409061145a82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b85841061148b575050505050505090565b86848303126103d15784879161149f610d08565b6114a887610974565b81526114b5838801610974565b838201526114c4868801610974565b8682015260606114d58189016103d6565b9082015260806114e68189016107e7565b9082015260a06114f7818901610974565b9082015260c06115088189016107e7565b9082015260e06115198189016107e7565b9082015261010080880135908201526101208088013590820152610140611541818901611428565b908201526101608088013590820152610180808801359082015281520193019261147a565b346103d1576101c03660031901126103d157600435611584816107d6565b60443590611591826107d6565b60843561159d816107d6565b60c03660a31901126103d157604051926115b684610c7b565b60a4356115c28161096a565b845260c4356115d0816107d6565b602085015260e4356115e1816103c5565b6040850152610104356060850152610124356115fc816107d6565b60808501526101443560a085015261018435936001600160401b0385116103d15761162e610019953690600401611433565b926101a43594610164359360643591602435906134b3565b346103d15760a03660031901126103d1576116626004356107d6565b61166d6024356103c5565b6001600160401b036044358181116103d15761168d903690600401610d87565b611698606435610410565b6084358281116103d1576116b0903690600401610d87565b906116bc303314612d0b565b600760005260126020527f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc546001600160a01b039290611703908416600435851614612d50565b6117166020825183010160208301612f68565b9594509095929197611731602088015160018060a01b031690565b888116611940575b509061176b60009384937f00000000000000000000000000000000000000000000000000000000000000009116614abe565b60408a015261177930611fb5565b54966117cd6117c96117c26064356117aa6117a460243561ffff166000526007602052604060002090565b8a610de7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b6118f4575b6118578a6118496117e230611fb5565b548251909a906001600160a01b0316606084015160808501519197909490916001600160a01b03169660a0820151916040611826602083015160018060a01b031690565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01613181565b03601f198101835282610ce7565b51906004355af492611867613218565b93156118a6575b865160408089015190519081529087166001600160a01b03169061ffff60243516906000805160206150fd83398151915290602090a3005b6118ce946118b391613266565b6040870151809110156118d8575b5060643590602435613fa8565b388080808061186e565b86516118ee91906001600160a01b031630613273565b386118c1565b61190260408b015130614dde565b61193b61192e6064356117aa61192860243561ffff166000526007602052604060002090565b89610de7565b805460ff19166001179055565b6117d2565b600d54919361199d93929091602091611969906001600160a01b03165b6001600160a01b031690565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529094859190829081906044820190565b03915afa9081156107cd576000946119c161176b93879687916119cb575b50613056565b9293509350611739565b6119ed915060203d6020116119f3575b6119e58183610ce7565b810190613035565b386119bb565b503d6119db565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e6b600435611a5a816103c5565b61ffff60243591611a6a836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107345760405181600c54611afe816110a6565b8084529060019081811690811561070c5750600114611b27576106af846106a381880382610ce7565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b6d57505050816106af936106a39282010193610693565b8054858501870152928501928101611b51565b346103d157602060ff611bbf61ffff610e4a84611b9c36610da2565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611beb816103c5565b166000526001602052610b53611c0b6040600020604051928380926110e0565b805115611c29576106a381611c236106af9351613248565b90614ee2565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d157600435611c8b816107d6565b60243590336000526009602052611cb88160406000209060018060a01b0316600052602052604060002090565b5491808310611cd957611ccd92039033612b48565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611d49816103c5565b6001600160401b03906064358281116103d157611d6a9036906004016103e3565b608492919235611d7981610410565b60a43591611d868361096a565b60c4359586116103d157611da1611db19636906004016103e3565b9590946044359060243590614130565b60408051928352602083019190915290f35b346103d157611dd136610ae3565b90611dda61292f565b60405192602092808385870137611e066034868381013060601b88820152036014810188520186610ce7565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c7657611e4083611e3a86546110a6565b86613ec0565b80601f8411600114611eb0575091808092611e9f9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611ea5575b50501b916000199060031b1c19161790555b60405193849384613ea5565b0390a180f35b015192503880611e81565b91939498601f198416611ec887600052602060002090565b938a905b828210611f2f575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611e9f98969410611f16575b505050811b019055611e93565b015160001960f88460031b161c19169055388080611f09565b808886978294978701518155019601940190611ecc565b346103d15760403660031901126103d15761081c600435611f66816107d6565b6024359033612a79565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103d15760403660031901126103d157602060ff611bbf602435611ff3816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612059816107d6565b61206161292f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d1576004356120c3816103c5565b6024356120cf816103c5565b6064356001600160401b0381116103d1576120ee9036906004016103e3565b90926120f861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d1576000809461216f604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613e84565b03925af180156107cd5761217f57005b8061218c61001992610c63565b806105f0565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b6121c436610421565b9161ffff8694929616600052600560205261220b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156122b5576122a4848361229d7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000612289846117aa8e8a8f6122b09f908f61226f906122626122839436908d610d50565b6020815191012014614071565b61ffff166000526005602052604060002090565b91614058565b5561229536878d610d50565b933691610d50565b918861434d565b604051958695866140c7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e6b600435612351816107d6565b6024359061235e826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d1576004356123eb816103c5565b6024356123f7816103c5565b6044359161240361292f565b821561247e576122b07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356125178161096a565b61251f61292f565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612557816103c5565b6001600160401b03906024358281116103d1576125789036906004016103e3565b91906044359061258782610410565b608435612593816107d6565b60c4359586116103d1576125ae6100199636906004016103e3565b94909360e4359660a4359460643593614226565b346103d1576125d036610ae3565b91906125da61292f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576126138761260d85546110a6565b85613ec0565b8590601f881160011461267a5750918680879893611e9f957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361266f575b501b906000198460031b1c191617905560405193849384613ea5565b880135925038612653565b90601f19881661268f85600052602060002090565b9288905b8282106126f5575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611e9f9694106126db575b505082811b019055611e93565b870135600019600386901b60f8161c1916905538806126ce565b808685968294968c01358155019501930190612693565b346103d15760403660031901126103d157602060ff611bbf602435612730816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d157600435612796816107d6565b61279e61292f565b6001600160a01b0390811680156127ec57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561285d816103c5565b6024359061286a826103c5565b6128756044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af916000916128f3575b5060405191829182610643565b61290e913d8091833e6129068183610ce7565b810190613e4e565b386128e6565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361294357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156129cd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612af557612ada8260008051602061511d83398151915294612af0941696612ab38815156129c6565b612ad484612ac083611fb5565b54612acd82821015612a1e565b0391611fb5565b55611fb5565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c22578216938415612bd25780612bc17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612baa612af09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612cab5750505050565b808410612cc657612cbd930391612b48565b3880808061110d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612d1257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612d5757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826103c5565b51906103e1826107d6565b51906103e18261096a565b91908260c09103126103d157604051612dce81610c7b565b60a08082948051612dde8161096a565b84526020810151612dee816107d6565b60208501526040810151612e01816103c5565b6040850152606081015160608501526080810151612e1e816107d6565b60808501520151910152565b51906103e18261141d565b81601f820112156103d157805190612e4c82611406565b92604090612e5c82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b858410612e8d575050505050505090565b86848303126103d157848791612ea1610d08565b612eaa87612dab565b8152612eb7838801612dab565b83820152612ec6868801612dab565b868201526060612ed7818901612d95565b908201526080612ee8818901612da0565b9082015260a0612ef9818901612dab565b9082015260c0612f0a818901612da0565b9082015260e0612f1b818901612da0565b9082015261010080880151908201526101208088015190820152610140612f43818901612e2a565b9082015261016080880151908201526101808088015190820152815201930192612e7c565b918282039161020083126103d1578351612f81816103c5565b9360c06020820151612f9281610410565b94603f1901126103d157604051612fa881610c7b565b6040820151612fb6816107d6565b81526060820151612fc6816107d6565b60208201526080820151604082015260a0820151606082015260c0820151612fed816107d6565b608082015260e082015160a08201529261300b836101008401612db6565b926101c08301516001600160401b0381116103d1576101e09161302f918501612e35565b92015190565b908160209103126103d157516106548161096a565b6040513d6000823e3d90fd5b1561305d57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b90815180825260208080930193019160005b8281106130b9575050505090565b90919293826101a060019287516130d282825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019501939291016130ab565b999897949161321396926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190613099565b930152565b3d15613243573d9061322982610d35565b916132376040519384610ce7565b82523d6000602084013e565b606090565b601319810191908211610ade57565b605019810191908211610ade57565b91908203918211610ade57565b91906132fd91600080604051936020968786019463a9059cbb60e01b865260018060a01b0380931660248801526044870152604486526132b286610cb1565b1692604051946132c186610ccc565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16132f7613218565b91613379565b8051908161330a57505050565b828061331a938301019101613035565b156133225750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b919290156133db575081511561338d575090565b3b156133965790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156133ee5750805190602001fd5b60405162461bcd60e51b815290819061340a9060048301610643565b0390fd5b1561341557565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d1575190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b9194939697929590976134c730331461340e565b8051613720575b50604080516370a0823160e01b80825230600483015260209a92996001600160a01b0398808a169492939192918d81602481895afa9384156107cd578b918f600096613701575b50501691823b156103d1578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af180156107cd576136ee575b5089519182523060048301528a82602481865afa80156107cd5785926000916136c1575b5080821161368d575b50505050506135a28351151590565b1561366757828701516135bf9061195d906001600160a01b031681565b936135ce8785015161ffff1690565b91169261361b6135f460a06135ec608085015160018060a01b031690565b930151613dd3565b916135fd610d28565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156103d157613648600096519788968795869463695ef6bf60e01b8652306004870161345b565b03925af180156107cd5761365a575b50565b8061218c6103e192610c63565b91909501516103e195509293509161368891506001600160a01b031661195d565b613273565b61369691613266565b928084106136a5575b80613593565b6136b8936136b291613266565b91613273565b3880828161369f565b6136e191508c8d3d106136e7575b6136d98183610ce7565b81019061344c565b3861358a565b503d6136cf565b8061218c6136fb92610c63565b38613566565b613718929650803d106136e7576136d98183610ce7565b93388f613515565b61372990613853565b386134ce565b80518210156137435760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561376057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff6137c060209295949560408552604085019061061e565b9416910152565b60009060033d116137d457565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d6024840111176138425781840194855193841161384a573d85010160208487010111613842575061065492910160200190610ce7565b949350505050565b50949350505050565b9060005b8251811015613ae257604061387881613870848761372f565b510151151590565b1561389a57508061389461388e6001938661372f565b51613b94565b01613857565b60606138c461030961ffff6138bd846138b3888b61372f565b51015161ffff1690565b1614613759565b6138d360a0613870858861372f565b6138f160c06138e2868961372f565b5101516001600160a01b031690565b916139c261390460e06138e2888b61372f565b936139b4610100613915898c61372f565b5101518a6101206139268b8361372f565b5101516139426101406139398d8561372f565b51015160ff1690565b906101806139608d610160613957828861372f565b5101519561372f565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610ce7565b6139e56139da61195d61195d60806138e28a8d61372f565b916138b3878a61372f565b90803b156103d157613a136000929183928751948580948193631221baf960e31b835260049a8b84016137a5565b03925af19081613acf575b50613a3d576001613a2d6137c7565b6308c379a014613a87575b613a48575b505050600190613894565b613a616117c9613a56613218565b92613870878a61372f565b15613a3d57613a7261340a91613b1c565b925162461bcd60e51b81529283928301610643565b613a8f6137e5565b80613a9b575b50613a38565b60009150613ab06117c984613870898c61372f565b15613a9557845162461bcd60e51b815290819061340a90828701610643565b8061218c613adc92610c63565b38613a1e565b509050565b90929192613af481610d35565b91613b026040519384610ce7565b8294828452828201116103d15760206103e19301906105fb565b6044815110613b6d576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401613ae7565b50604051613b7a81610ccc565b600a8152695553444f3a206461746160b01b602082015290565b805115613d0a576080810151613bb49061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b03169161012084015190613be761014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613cf7575b50613657576001613c676137c7565b6308c379a014613cba575b613c795750565b613c916117c96020613c89613218565b930151151590565b1561365757613ca261340a91613b1c565b60405162461bcd60e51b815291829160048301610643565b613cc26137e5565b80613cce575b50613c72565b602083015160009250613cc85760405162461bcd60e51b815290819061340a9060048301610643565b8061218c613d0492610c63565b38613c58565b6080810151613d239061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101008401519061012085015193613d5d61014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613c4d565b60405190600160f01b602083015260228201526022815261065481610c96565b15613dfa57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d1578051906001600160401b0382116103d157019080601f830112156103d157815161065492602001613ae7565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61065495931681528160208201520191613e84565b90601f8111613ece57505050565b600091825260208220906020601f850160051c83019410613f0a575b601f0160051c01915b828110613eff57505050565b818155600101613ef3565b9092508290613eea565b929091613f865a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613f8082613f72613f5160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610ce7565b30615091565b939015613f95575b5050505050565b613f9e94613fa8565b3880808080613f8e565b91936140457fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614053939561ffff8151602083012096169586600052600560205261400c83610e4a60208b604060002082604051948386809551938492016105fb565b556001600160401b03614031604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b1561407857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916140f39060609461ffff6001600160401b039499989799168552608060208601526080850191613e84565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b94919598979061133961415960409961415161415f9761417c993691610d50565b943691610d50565b97614a37565b928451968794859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd5760009081936141bf57509190565b905061048291925060403d8111610a8057610a718183610ce7565b939694916142089061065499979461ffff6001600160401b039416875260c0602088015260c0870191613e84565b961660408401526060830152608082015260a0818503910152613e84565b919697929895949390943033036142ae57614242908530614e2e565b60405181815290946001600160a01b03169390849061ffff8516906000805160206150fd83398151915290602090a3833b156103d157600098899561429e936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016141da565b0393f180156107cd5761365a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff6143389316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff61435b84615036565b16806144ae5750505060ff61436f82615036565b1615806144a3575b61438090614b3b565b61439261438c82614fe6565b91615081565b90916001600160a01b039182841615614499575b6143da906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116614abe565b918316928315614454576000805160206150fd8339815191529161441461ffff9261440f61440a87600a546129b9565b600a55565b611fb5565b84815401905584600060008051602061511d8339815191526040518061443f89829190602083019252565b0390a360405193845216918060208101612af0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead93506143a6565b508051602914614377565b6001036144be576103e193614790565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561450a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261457061065497959361ffff61457e9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946145cc9193929561ffff811660005260016020526145d36040600020604051948580926110e0565b0384610ce7565b82511561463a576145e5855182614698565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661364891604051998a988997889662c5803160e81b88526004880161454b565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156146fd575b116146b957565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506146b2565b98979692936001600160401b0361473960e0989461ffff6132139995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b036147856040939695949660608452606084019061061e565b951660208201520152565b909161479b84614bef565b90916147c56117c2876117aa6147bf8b61ffff166000526007602052604060002090565b8c610de7565b916147fb6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116614abe565b9288888b83156148f7575b505050853b156148ac579461484d9694613f80948a94613f72948d996000146148a55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614707565b901561489a57509061489561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614765565b0390a2565b926103e19492613fa8565b169261482e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614053915050565b906117aa61192e926149268961491161492c979b30614dde565b9961ffff166000526007602052604060002090565b90610de7565b88888b614806565b60065460ff16156149815760228251106113405761ffff60226103e193015191166000526002602052614974604060002060008052602052604060002090565b5490611307821515614989565b50516113b257565b1561499057565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156149dc57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614ab957046001600160401b0390818111614a74571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614a21565b81810292918115918404141715610ade57565b7f00000000000000000000000000000000000000000000000000000000000000008015614ab957810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c96565b15614b4257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152614bdf81518092602086860191016105fb565b8101036051810184520182610ce7565b90614c07600160ff614c0085615036565b1614614b3b565b614c1082614fe6565b90614c1a83615081565b906049845110614c8b576049840151936051815110614c4f57614c4c605182015191614c468151613257565b90614f62565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614d77575b8015614d285781614cfd84614cf0600095611fb5565b54612acd82821015614d87565b55614d0b83600a5403600a55565b60405183815260008051602061511d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614d82833384612c73565b614cda565b15614d8e57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561445457600a5490828201809211610ade57600092614e1f60209260008051602061511d83398151915294600a55611fb5565b818154019055604051908152a3565b6106549183916001600160a01b038116308114159081614e5a575b5015612a7957610949833383612c73565b905033141538614e49565b15614e6c57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15614ea957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b614ef682614eef8161299d565b1015614e65565b614f038282511015614ea2565b81614f1b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410614f4f5750508252601f01601f191660405290565b9092835181526020809101930190614f37565b614f6f82614eef8161299d565b614f848151614f7d846129ab565b1115614ea2565b81614f9c575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614fd35750508252601f01601f191660405290565b9092835181526020809101930190614fbb565b6021815110614ff957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615046576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614c4f576029015190565b90929160008091604051956150a587610c7b565b6096875282602088019560a036883760208451940192f1903d90609682116150d3575b6000908286523e9190565b609691506150c856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c597d0a890767bed96150dae6c67c42327c0e0bbeeea009020c143eaac822ce164736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/USDOOptionsModule.json b/src/artifacts/tapioca-bar/USDOOptionsModule.json index be7b4b68..4d6fa894 100644 --- a/src/artifacts/tapioca-bar/USDOOptionsModule.json +++ b/src/artifacts/tapioca-bar/USDOOptionsModule.json @@ -80,63 +80,6 @@ "name": "CallOFTReceivedSuccess", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "old", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_new", - "type": "address" - } - ], - "name": "ConservatorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "FlashMintFeeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_old", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_new", - "type": "uint256" - } - ], - "name": "MaxFlashMintUpdated", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -882,191 +825,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_srcChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "_srcAddress", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "_nonce", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "exercise", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "oTAPTokenID", - "type": "uint256" - }, - { - "internalType": "address", - "name": "paymentToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tapAmount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "components": [ - { - "internalType": "bool", - "name": "withdrawOnAnotherChain", - "type": "bool" - }, - { - "internalType": "address", - "name": "tapOftAddress", - "type": "address" - }, - { - "internalType": "uint16", - "name": "lzDstChainId", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "zroPaymentAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "extraGas", - "type": "uint256" - } - ], - "internalType": "struct ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapData", - "name": "tapSendData", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "paymentTokenAmount", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "bool", - "name": "permitAll", - "type": "bool" - }, - { - "internalType": "bool", - "name": "allowFailure", - "type": "bool" - }, - { - "internalType": "bool", - "name": "approveOnYieldBox", - "type": "bool" - }, - { - "internalType": "uint16", - "name": "actionType", - "type": "uint16" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bool", - "name": "permitBorrow", - "type": "bool" - }, - { - "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" - } - ], - "internalType": "struct ICommonData.IApproval[]", - "name": "approvals", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "airdropAmount", - "type": "uint256" - } - ], - "name": "exerciseInternal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1179,7 +937,7 @@ }, { "internalType": "bool", - "name": "approveOnYieldBox", + "name": "yieldBoxTypeApproval", "type": "bool" }, { @@ -1277,19 +1035,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "flashMintFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1450,19 +1195,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "maxFlashMint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1731,19 +1463,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_payload", - "type": "bytes" - } - ], - "name": "sendFromDestination", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -2038,123 +1757,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "lzDstChainId", - "type": "uint16" - }, - { - "internalType": "bytes", - "name": "airdropAdapterParams", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "address payable", - "name": "refundAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "zroPaymentAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "adapterParams", - "type": "bytes" - } - ], - "internalType": "struct ISendFrom.LzCallParams", - "name": "sendFromData", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "bool", - "name": "permitAll", - "type": "bool" - }, - { - "internalType": "bool", - "name": "allowFailure", - "type": "bool" - }, - { - "internalType": "bool", - "name": "approveOnYieldBox", - "type": "bool" - }, - { - "internalType": "uint16", - "name": "actionType", - "type": "uint16" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bool", - "name": "permitBorrow", - "type": "bool" - }, - { - "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" - } - ], - "internalType": "struct ICommonData.IApproval[]", - "name": "approvals", - "type": "tuple[]" - } - ], - "name": "triggerSendFrom", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, { "inputs": [ { @@ -2205,8 +1807,8 @@ "type": "receive" } ], - "bytecode": "0x61010060409080825234620004fc576060816200635c803803809162000026828562000501565b833981010312620004fc5780516001600160a01b039182821691829003620004fc57602080820151918483168303620004fc5785015193808516809503620004fc57620000726200053b565b906200007d6200053b565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b03918282116200040357600b54916001968784811c94168015620004f1575b89851014620004dd578190601f9485811162000489575b5089908583116001146200042357889262000417575b5050600019600383901b1c191690871b17600b555b80519283116200040357600c548681811c91168015620003f8575b88821014620003e45790818389959493116200038c575b50839183116001146200032157600494929186918362000315575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa9081156200030b57908291899391620002c0575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d5551615def90816200056d82396080518181816104ed015281816107b0015281816108eb01528181610a6501528181610c2e01528181611b57015281816121fd015281816124670152818161264301528181612d8501528181614a5d0152615027015260a0518161196f015260c0518181816117660152818161213101528181615254015281816154b00152818161565a01526156f2015260e051816128bf0152f35b80929350858092503d831162000303575b620002dd818362000501565b81010312620002ff575161ffff81168103620002ff5787919061ffff620001c5565b5080fd5b503d620002d1565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000373575096836004981062000359575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200034a565b8289015184558b978b9690940193928301920162000335565b9091929350600c86528786208380860160051c8201928a8710620003da575b9189918b97969594930160051c01915b828110620003cb57505062000162565b8881558a9650899101620003bb565b92508192620003ab565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000472575050841162000458575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000449565b8385015186558d9790950194938401930162000436565b909150600b88528988208580850160051c8201928c8610620004d3575b918b91869594930160051c01915b828110620004c457505062000105565b8a81558594508b9101620004b4565b92508192620004a6565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200052557604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005255760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f757806310ddb137146103f257806318160ddd1461038457806323b872dd146103ed578063313ce567146103e8578063365260b4146103e357806339509351146103de5780633d8b38f6146103d95780633f1f4fa4146103d457806342d65a8d146103cf57806344770515146103ca5780634c42899a146103ca5780635b8c41e6146103c55780635c975abb146103c057806366ad5c8a146103bb578063695ef6bf146103b657806370a08231146103b1578063715018a6146103ac5780637533d788146103a757806376203b48146103a25780637e6b6e5a1461039d57806381618d0514610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a578063952168c51461037557806395d89b41146103705780639bdb98121461036b5780639d3f4d1a146103665780639f38369a14610361578063a457c2d71461035c578063a4c51df514610357578063a6c3d16514610352578063a9059cbb1461034d578063af2ee97514610348578063b353aaa714610343578063ba03a8d71461033e578063baf3292d14610339578063c056a8de14610334578063c44618341461032f578063cbed8b9c1461032a578063ce8849ed14610325578063d1deba1f14610320578063dbd01de11461031b578063dd62ed3e14610316578063de40657714610311578063df2a5b3b1461030c578063e6a20ae614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612def565b612d1b565b612c66565b612c43565b612c0b565b612ae2565b612a59565b6129f7565b6129db565b6128ee565b6128a9565b61285f565b612836565b6126fe565b6126d5565b6125ef565b6125d2565b612329565b612295565b61225d565b6121e7565b6120cf565b6120a5565b611f43565b611eac565b611e00565b611d5d565b611d3f565b611cf4565b611c50565b611aa6565b611a4c565b611a2e565b61094c565b611a05565b611993565b611955565b611628565b611548565b611251565b6111fa565b6110c6565b611089565b610fa6565b610f01565b610ede565b610e8a565b610c95565b610c14565b610bdb565b610b6b565b610ae3565b6109db565b6109aa565b61096a565b6108c2565b610883565b61084e565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b6111df565b805190818414918261059b575b5081610578575b50614966565b3691610db6565b923691610db6565b92614dba565b9050610585368486610db6565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c98161110f565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610d4b565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a90610cc7565b80f35b613211565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b359061043182610832565b346104215760403660031901126104215761087860043561086e81610832565b6024359033613048565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108a381610415565b6108ab612e0a565b166000526003602052602435604060002055600080f35b346104215760006020366003190112610784576004356108e181610415565b6108e9612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b346104215760603660031901126104215761087860043561098a81610832565b60243561099681610832565b604435916109a5833383613161565b612f79565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b3590610431826109c6565b346104215760a0366003190112610421576004356109f881610415565b60643590610a05826109c6565b608435906001600160401b03821161042157610a2a6105636040933690600401610433565b90610a61610a44610a3c604435615658565b602435615727565b928451958694859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ab2575b50604080519182526020820192909252f35b9050610ad5915060403d8111610adc575b610acd8183610d4b565b81019061519b565b9038610aa0565b503d610ac3565b3461042157604036600319011261042157600435610b0081610832565b336000526009602052610b17816040600020612246565b546024358101809111610b2e576108789133613048565b612e87565b90604060031983011261042157600435610b4c81610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610bb8610b8136610b33565b9390911660005260018452610ba3610baa604060002060405192838092611149565b0382610d4b565b848151910120923691610db6565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff600435610bfb81610415565b1660005260036020526020604060002054604051908152f35b3461042157610c2236610b33565b9190610c2c612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b825281610c836000988997889460048501614d4b565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cda57604052565b610cb1565b60c081019081106001600160401b03821117610cda57604052565b606081019081106001600160401b03821117610cda57604052565b604081019081106001600160401b03821117610cda57604052565b608081019081106001600160401b03821117610cda57604052565b601f909101601f19168101906001600160401b03821190821017610cda57604052565b604051906101a082016001600160401b03811183821017610cda57604052565b6040519061043182610cfa565b6001600160401b038111610cda57601f01601f191660200190565b929192610dc282610d9b565b91610dd06040519384610d4b565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610db6565b90606060031983011261042157600435610e2181610415565b91602435906001600160401b03821161042157610e4091600401610ded565b906044356106a481610460565b602090610e6792826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610421576020610ed561ffff610ec783610ea436610e08565b94909116600052600582526040600020826040519483868095519384920161064b565b820190815203019020610e73565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b3461042157610f0f36610471565b9192949390303303610f335761056a610f2d92610019973691610db6565b926151f5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104215760c490565b908160609103126104215790565b60a036600319011261042157600435610fbe81610832565b602435610fca81610415565b604435916084356001600160401b03811161042157602061ffff611001600080516020615cfa833981519152933690600401610f98565b93611074853561101081610832565b61102e61056386890135986110248a610832565b6040810190614fa5565b611038818a6155f3565b61104d6110466064356156f0565b50856158e5565b976110598915156153aa565b61106b6110658a615658565b8c615727565b9234938b614a19565b6040519485526001600160a01b0316941692a4005b34610421576020366003190112610421576004356110a681610832565b60018060a01b031660005260086020526020604060002054604051908152f35b3461042157600080600319360112610784576110e0612e0a565b80546001600160a01b03198116825581906001600160a01b0316600080516020615d5a8339815191528280a380f35b90600182811c9216801561113f575b602083101461112957565b634e487b7160e01b600052602260045260246000fd5b91607f169161111e565b906000929180549161115a8361110f565b9182825260019384811690816000146111bc575060011461117c575b50505050565b90919394506000526020928360002092846000945b8386106111a8575050505001019038808080611176565b805485870183015294019385908201611191565b9294505050602093945060ff191683830152151560051b01019038808080611176565b906104316111f39260405193848092611149565b0383610d4b565b346104215760203660031901126104215761ffff60043561121a81610415565b1660005260016020526106ff610ba361123d604060002060405192838092611149565b60405191829160208352602083019061066e565b60e03660031901126104215760043561126981610832565b60243561127581610415565b604435916001600160401b03906084358281116104215761129a903690600401610433565b91909260a4356112a981610460565b60c435828111610421576112c1903690600401610f98565b90866112f98335966112d288610832565b6112f16112e760208701359661102488610832565b9a90923691610db6565b983691610db6565b9360ff6006541660001461136657936020959361106b84611334600080516020615cfa8339815191529a958561ffff9a611074991691614c68565b6113496113426064356156f0565b50886158e5565b9a6113558c15156153aa565b8d61135f8d615658565b90336157a2565b5050829391925161139457600080516020615cfa8339815191529460209461ffff9461106b61107494611334565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610cda5760051b60200190565b60ff81160361042157565b3590610431826113ff565b81601f820112156104215780359061142c826113e8565b9260409061143c82519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b85841061146d575050505050505090565b868483031261042157848791611481610d6e565b61148a876109d0565b81526114978388016109d0565b838201526114a68688016109d0565b8682015260606114b7818901610426565b9082015260806114c8818901610843565b9082015260a06114d98189016109d0565b9082015260c06114ea818901610843565b9082015260e06114fb818901610843565b908201526101008088013590820152610120808801359082015261014061152381890161140a565b908201526101608088013590820152610180808801359082015281520193019261145c565b34610421576101c03660031901126104215760043561156681610832565b6044359061157382610832565b60843561157f81610832565b60c03660a3190112610421576040519261159884610cdf565b60a4356115a4816109c6565b845260c4356115b281610832565b602085015260e4356115c381610415565b6040850152610104356060850152610124356115de81610832565b60808501526101443560a085015261018435936001600160401b03851161042157611610610019953690600401611415565b926101a43594610164359360643591602435906145af565b346104215760a036600319011261042157611644600435610832565b61164f602435610415565b6001600160401b036044358181116104215761166f903690600401610ded565b61167a606435610460565b6084359180831161042157611696611740933690600401610ded565b6116a13033146140bc565b6001600160a01b036004351660009081526014602052604090206116d0906116cb905b5460ff1690565b614101565b6116e360208251830101602083016141ba565b91979450959260206117016116fc600d9b959b54610826565b610826565b61170d828b0151610826565b604051633a304d8b60e21b8152600060048201526001600160a01b03909116602482015294859190829081906044820190565b03915afa90811561081d5760009461176461178c9387968791611926575b50613457565b7f000000000000000000000000000000000000000000000000000000000000000091166156dd565b604089015261179a3061222c565b54966117c56117c16116c46064356117bc6117b6602435610bc7565b8a610e4d565b610e73565b1590565b6118e9575b6118416117d63061222c565b54976118336117e58c51610826565b9460608d0151928d6117fa6080820151610826565b9660a08201519160406118106020830151610826565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01614368565b03601f198101835282610d4b565b51906004355af4926118516139d3565b931561189d575b8560406118658251610826565b9101516040519081526001600160a01b039091169060243561ffff1690600080516020615d3a8339815191529080602081015b0390a3005b6118c5946118aa91614418565b6040860151809110156118cf575b5060643590602435614e4e565b3880808080611858565b6118e3906118dd8751610826565b30614425565b386118b8565b6118f760408a0151306159fb565b6119216119146064356117bc61190e602435610bc7565b89610e4d565b805460ff19166001179055565b6117ca565b611948915060203d60201161194e575b6119408183610d4b565b810190613442565b3861175e565b503d611936565b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610421576040366003190112610421576020610ed56004356119b581610415565b61ffff602435916119c583610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b6001600160a01b03909116815260200190565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b60a036600319011261042157600435611abe81610415565b6001600160401b0360243581811161042157611ade903690600401610433565b909160643581811161042157611af8903690600401610f98565b9060843590811161042157611b11903690600401611a75565b9390611b26611b21368685610db6565b6148b3565b50915050611b3e611b386044356156f0565b50615658565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d57611bf298611bb7611bdf956020958a95611bc595611be99a600091611c23575b506040519c8d96338b890161335e565b03601f198101885287610d4b565b611bd9611bd3368988610db6565b8a614c2a565b01613423565b9134943691610db6565b91339086614a19565b604051903391600080516020615cfa83398151915261ffff3393169180611c1e81906000602083019252565b0390a4005b611c439150893d8111611c49575b611c3b8183610d4b565b8101906131fc565b38611ba7565b503d611c31565b34610421576000806003193601126107845760405181600c54611c728161110f565b8084529060019081811690811561075c5750600114611c9b576106ff846106f381880382610d4b565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611ce157505050816106ff936106f392820101936106e3565b8054858501870152928501928101611cc5565b3461042157602060ff611d3361ffff610ec784611d1036610e08565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff600435611d7d81610415565b166000526001602052610ba3611d9d604060002060405192838092611149565b805115611dbb576106f381611db56106ff93516143fa565b90615aff565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611e1d81610832565b60243590336000526009602052611e38816040600020612246565b5491808310611e5957611e4d92039033613048565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611ec981610415565b6001600160401b039060643582811161042157611eea903690600401610433565b608492919235611ef981610460565b60a43591611f06836109c6565b60c43595861161042157611f21611f31963690600401610433565b9590946044359060243590614fd7565b60408051928352602083019190915290f35b3461042157611f5136610b33565b90611f5a612e0a565b60405192602092808385870137611f866034868381013060601b88820152036014810188520186610d4b565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cda57611fc383611fbd865461110f565b86614d66565b80601f84116001146120215750918080926120109695948a9b600080516020615d1a8339815191529b94612016575b50501b916000199060031b1c19161790555b60405193849384614d4b565b0390a180f35b015192503880611ff2565b91939498601f19841661203987600052602060002090565b938a905b82821061208e57505091600080516020615d1a833981519152999a9593918561201098969410612075575b505050811b019055612004565b015160001960f88460031b161c19169055388080612068565b80888697829497870151815501960194019061203d565b34610421576040366003190112610421576108786004356120c581610832565b6024359033612f79565b34610421576020366003190112610421576004356001600160401b0380821161042157612115612106612157933690600401610ded565b60208082518301019101613783565b95509692919360018060a09893981b03169680516121d8575b507f000000000000000000000000000000000000000000000000000000000000000091166156dd565b90303b156104215760405163695ef6bf60e01b815292600092849283918291612186918a8a8160048701613857565b0391305af1801561081d576121bf575b50600080516020615d3a83398151915261ffff6040519216918061189881906000602083019252565b806121cc6121d292610cc7565b80610640565b38612196565b6121e190613a03565b3861212e565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff611d3360243561228181610832565b600435600052600f84526040600020612246565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356122d581610832565b6122dd612e0a565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261042157600490565b60c0906101231901126104215761012490565b6102203660031901126104215761233f36612305565b61234836610f87565b9061235236612316565b6001600160401b03906101e43582811161042157612374903690600401611a75565b92610204359081116104215761238e903690600401610433565b959061239e6116fc600d54610826565b916123f26123ab8261342d565b9360209485916123bc838a01613423565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa801561081d5761240d916000916125bb5750613457565b61241687613423565b6001600160a01b0394903390861603612581575b6124366116fc89613423565b98604089013597612446896156f0565b50946124518b613423565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa801561081d57600080516020615cfa8339815191529b6118338f969a6125479b6125429a6124c761254d9f84908c996124f299612564575b506158e5565b506124e36124d9611b21368e8d610db6565b5095915050615658565b946040519788968a880161354d565b61250f6124fe8861342d565b612509368887610db6565b90614ba1565b61253c61253261252a6116fc6125248b61342d565b97613423565b938901613423565b9334963691610db6565b93614a19565b61342d565b94613423565b604051938452169261ffff16918060208101611c1e565b61257a908c8d3d10611c4957611c3b8183610d4b565b50386124c1565b6125b6612596336125918b613423565b612e62565b6125a760408b01358092101561349a565b336125b18b613423565b613161565b61242a565b6119489150853d871161194e576119408183610d4b565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561260c81610415565b60243561261881610415565b6064356001600160401b03811161042157612637903690600401610433565b9092612641612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561042157600080946126b8604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161321d565b03925af1801561081d576126c857005b806121cc61001992610cc7565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b61270736610471565b9161ffff8694929616600052600560205261273b81604060002060206040518092878b833787820190815203019020610e73565b549182156127e5576127d484836127cd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006127b9846117bc8e8a8f6127e09f908f61279f906127926127b39436908d610db6565b6020815191012014614f18565b61ffff166000526005602052604060002090565b91614eff565b556127c536878d610db6565b933691610db6565b91886151f5565b60405195869586614f6e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b34610421576040366003190112610421576020610ed560043561288181610832565b6024359061288e82610832565b6001600160a01b031660009081526009845260409020612246565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104215760603660031901126104215760043561290b81610415565b60243561291781610415565b60443591612923612e0a565b821561299e576127e07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612a37816109c6565b612a3f612e0a565b151560ff196006541660ff821617600655604051908152a1005b346104215761010036600319011261042157600435612a7781610415565b6001600160401b039060243582811161042157612a98903690600401610433565b919060443590612aa782610460565b608435612ab381610832565b60c43595861161042157612ace610019963690600401610433565b94909360e4359660a43594606435936150ce565b3461042157612af036610b33565b9190612afa612e0a565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cda57612b3687612b30855461110f565b85614d66565b8590601f8811600114612b8b575091868087989361201095600080516020615d9a8339815191529993612b80575b501b906000198460031b1c191617905560405193849384614d4b565b880135925038612b64565b90601f198816612ba085600052602060002090565b9288905b828210612bf457505091889391600080516020615d9a8339815191529899612010969410612bda575b505082811b019055612004565b870135600019600386901b60f8161c191690553880612bcd565b808685968294968c01358155019501930190612ba4565b3461042157604036600319011261042157602060ff611d33602435612c2f81610832565b600435600052601084526040600020612246565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612c8381610832565b612c8b612e0a565b6001600160a01b039081168015612cc757600080546001600160a01b0319811683178255909216600080516020615d5a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612d3881610415565b60243590612d4582610415565b612d50604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612dce575b5060405191829182610693565b612de9913d8091833e612de18183610d4b565b810190614d26565b38612dc1565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612e1e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b03166000908152600960205260409020612e839190612246565b5490565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2e57565b6051019081605111610b2e57565b91908201809211610b2e57565b15612ecd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612f2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612ff557612fda82600080516020615d7a83398151915294612ff0941696612fb3881515612ec6565b612fd484612fc08361222c565b54612fcd82821015612f1e565b039161222c565b5561222c565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156131105782169384156130c057806130af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946130aa612ff09560018060a01b03166000526009602052604060002090565b612246565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613181816040600020612246565b5492600184016131915750505050565b8084106131ac576131a3930391613048565b38808080611176565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9190808252602080920192916000905b82821061325c575050505090565b9091929380613276600192613270886109d0565b15159052565b61328c6132848488016109d0565b151582850152565b6132a4604061329c8189016109d0565b151590830152565b6132be60606132b4818901610426565b61ffff1690830152565b6132d760806132ce818901610843565b908301906119e5565b6132e760a061329c8189016109d0565b6132f760c06132ce818901610843565b61330760e06132ce818901610843565b6101008087013590820152610120808701359082015261333761014061332e81890161140a565b60ff1690830152565b610160868101359082015261018080870135908201526101a090810195019392019061324e565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e06060820152979695919493929080823561339e81610832565b1660e08a015260208201356133b281610832565b166101008901526040810135601e19823603018112156104215701926020843594019484116104215783360385136104215761341161340460c09661341e9660606101208d01526101408c019161321d565b61ffff90941660808a0152565b87830360a089015261323e565b930152565b356106a481610832565b356106a481610415565b5190610431826109c6565b9081602091031261042157516106a4816109c6565b1561345e57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b156134a157565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60a0809180356134f1816109c6565b15158452602081013561350381610832565b600180841b03809116602086015261ffff604083013561352281610415565b16604086015260608201356060860152608082013561354081610832565b1660808501520135910152565b9695949061341e9360a06101e096946135d9936103098c5260018060401b031660208c0152803561357d81610832565b600180841b0380911660408d015280602083013561359a81610832565b1660608d0152604082013560808d01526060820135838d015260808201356135c181610832565b1660c08c0152013560e08a01526101008901906134e2565b610200806101c089015287019161323e565b519061043182610832565b9092919261360381610d9b565b916136116040519384610d4b565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a4926020016135f6565b5190610431826113ff565b81601f8201121561042157805190613667826113e8565b9260409061367782519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b8584106136a8575050505050505090565b8684830312610421578487916136bc610d6e565b6136c587613437565b81526136d2838801613437565b838201526136e1868801613437565b8682015260606136f28189016131f1565b9082015260806137038189016135eb565b9082015260a0613714818901613437565b9082015260c06137258189016135eb565b9082015260e06137368189016135eb565b908201526101008088015190820152610120808801519082015261014061375e818901613645565b9082015261016080880151908201526101808088015190820152815201930192613697565b91909160e08184031261042157805161379b81610415565b9260208201516137aa81610832565b9260408301516137b981610460565b606084015190936001600160401b0392909183811161042157820160608186031261042157604051906137eb82610cfa565b80516137f681610832565b8252602081015161380681610832565b6020830152604081015190858211610421576138249187910161362b565b604082015293613836608084016131f1565b9360a08401519081116104215760c091613851918501613650565b92015190565b93906106a495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061066e565b80518210156138c35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b156138e057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff61394060209295949560408552604085019061066e565b9416910152565b60009060033d1161395457565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d6024840111176139c2578184019485519384116139ca573d850101602084870101116139c257506106a492910160200190610d4b565b949350505050565b50949350505050565b3d156139fe573d906139e482610d9b565b916139f26040519384610d4b565b82523d6000602084013e565b606090565b9060005b8251811015613c96576040613a2881613a2084876138af565b510151151590565b15613a4a575080613a44613a3e600193866138af565b51613e8b565b01613a07565b6060613a7461030a61ffff613a6d84613a63888b6138af565b51015161ffff1690565b16146138d9565b613a8360a0613a2085886138af565b613aa160c0613a9286896138af565b5101516001600160a01b031690565b91613b72613ab460e0613a92888b6138af565b93613b64610100613ac5898c6138af565b5101518a610120613ad68b836138af565b510151613af2610140613ae98d856138af565b51015160ff1690565b90610180613b108d610160613b0782886138af565b510151956138af565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610d4b565b613b95613b8a6116fc6116fc6080613a928a8d6138af565b91613a63878a6138af565b90803b1561042157613bc36000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613c83575b50613bed576001613bdd613947565b6308c379a014613c3b575b613bf8575b505050600190613a44565b613c116117c1613c066139d3565b92613a20878a6138af565b15613bed57613c22613c3791613e13565b925162461bcd60e51b81529283928301610693565b0390fd5b613c43613965565b80613c4f575b50613be8565b60009150613c646117c184613a20898c6138af565b15613c4957845162461bcd60e51b8152908190613c3790828701610693565b806121cc613c9092610cc7565b38613bce565b509050565b9060005b8251811015613c96576040613cb881613a2084876138af565b15613cd4575080613cce613a3e600193866138af565b01613c9f565b6060613ced61030961ffff613a6d84613a63888b6138af565b613cfc60a0613a2085886138af565b613d0b60c0613a9286896138af565b91613d1e613ab460e0613a92888b6138af565b613d36613b8a6116fc6116fc6080613a928a8d6138af565b90803b1561042157613d646000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613e00575b50613d8e576001613d7e613947565b6308c379a014613db8575b613d99575b505050600190613cce565b613da76117c1613c066139d3565b15613d8e57613c22613c3791613e13565b613dc0613965565b80613dcc575b50613d89565b60009150613de16117c184613a20898c6138af565b15613dc657845162461bcd60e51b8152908190613c3790828701610693565b806121cc613e0d92610cc7565b38613d6f565b6044815110613e6457600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a4926044016135f6565b50604051613e7181610d15565b600a8152695553444f3a206461746160b01b602082015290565b805115613ffb57613ea56116fc6116fc6080840151610826565b613eb260c0830151610826565b613ebf60e0840151610826565b9161012084015190613ed661014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613fe8575b50613f66576001613f56613947565b6308c379a014613faa575b613f69575b50565b613f816117c16020613f796139d3565b930151151590565b15613f6657613f92613c3791613e13565b60405162461bcd60e51b815291829160048301610693565b613fb2613965565b80613fbe575b50613f61565b602083015160009250613fb8575b60405162461bcd60e51b8152908190613c379060048301610693565b806121cc613ff592610cc7565b38613f47565b61400e6116fc6116fc6080840151610826565b61401b60c0830151610826565b61402860e0840151610826565b91610100840151906101208501519361404661014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613f3c565b156140c357565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561410857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260c09103126104215760405161415e81610cdf565b60a0808294805161416e816109c6565b8452602081015161417e81610832565b6020850152604081015161419181610415565b60408501526060810151606085015260808101516141ae81610832565b60808501520151910152565b918282039161020083126104215783516141d381610415565b9360c060208201516141e481610460565b94603f190112610421576040516141fa81610cdf565b604082015161420881610832565b8152606082015161421881610832565b60208201526080820151604082015260a0820151606082015260c082015161423f81610832565b608082015260e082015160a08201529261425d836101008401614146565b6101c08301519093906001600160401b038111610421576101e091613851918501613650565b90815180825260208080930193019160005b8281106142a3575050505090565b90919293826101a060019287516142bc82825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526142f2608080830151908401906119e5565b60a08181015115159083015261431060c080830151908401906119e5565b61432260e080830151908401906119e5565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201950193929101614295565b999897949161341e96926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190614283565b601319810191908211610b2e57565b605019810191908211610b2e57565b91908203918211610b2e57565b91906144af91600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261446486610d30565b16926040519461447386610d15565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16144a96139d3565b9161452b565b805190816144bc57505050565b82806144cc938301019101613442565b156144d45750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561458d575081511561453f575090565b3b156145485790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613fcc5750805190602001fd5b90816020910312610421575190565b9194939697929590978051614809575b50604080516370a0823160e01b80825260209a92996001600160a01b0398808a169492939192918d81806145f630600483016119f2565b0381895afa93841561081d578b918f6000966147ea575b50501691823b15610421578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af1801561081d576147d7575b5089519182528a828061467430600483016119f2565b0381865afa801561081d5785926000916147aa575b50808211614776575b50505050506146a18351151590565b15614759576146b86116fc6116fc89860151610826565b936146c78785015161ffff1690565b91169261470e6146e760a06146df6080850151610826565b930151614818565b916146f0610d8e565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156104215761473b600096519788968795869463695ef6bf60e01b86523060048701613857565b03925af1801561081d5761474c5750565b806121cc61043192610cc7565b939450506147719150610431946116fc910151610826565b614425565b61477f91614418565b9280841061478e575b80614692565b6147a19361479b91614418565b91614425565b38808281614788565b6147ca91508c8d3d106147d0575b6147c28183610d4b565b8101906145a0565b38614689565b503d6147b8565b806121cc6147e492610cc7565b3861465e565b614801929650803d106147d0576147c28183610d4b565b93388f61460d565b61481290613c9b565b386145bf565b60405190600160f01b60208301526022820152602281526106a481610cfa565b1561483f57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561488057565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b60008082516022811490811561495b575b501561491e57600283015193602284015193600261ffff8716600181148015614915575b6148f190614838565b6148fc871515614879565b146149045750565b925090506056604283015192015190565b508082146148e8565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b6042915011386148c4565b1561496d57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b926149e66106a497959361ffff6149f49416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614a429193929561ffff81166000526001602052614a49604060002060405194858092611149565b0384610d4b565b825115614ab057614a5b855182614cb7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104215760009661473b91604051998a988997889662c5803160e81b8852600488016149c1565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614b1557565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614b5e57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030960005260205260406000205490614bdf821515614b0e565b1015614b57565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030a60005260205260406000205490614bdf821515614b0e565b91906022815110614be657602261ffff91015192166000526002602052614c9d60406000206001600052602052604060002090565b54908101809111610b2e5761043191614bdf821515614b0e565b61ffff166000526003602052604060002054908115614d1c575b11614cd857565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614cd1565b906020828203126104215781516001600160401b038111610421576106a4920161362b565b60409061ffff6106a49593168152816020820152019161321d565b90601f8111614d7457505050565b600091825260208220906020601f850160051c83019410614db0575b601f0160051c01915b828110614da557505050565b818155600101614d99565b9092508290614d90565b929091614e2c5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614e2682614e18614df760a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610d4b565b30615cae565b939015614e3b575b5050505050565b614e4494614e4e565b3880808080614e34565b9193614eec7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614efa939561ffff81516020830120961695866000526005602052614eb283610ec760208b6040600020826040519483868095519384920161064b565b55614ecf604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b15614f1f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614f91939897969816845260806020850152608084019161321d565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b94919598979061135f615000604099614ff861500697615023993691610db6565b943691610db6565b97615658565b928451968794859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d57600090819361506657509190565b90506104d291925060403d8111610adc57610acd8183610d4b565b939694916106a498969361ffff6150a69316865260c0602087015260c086019161321d565b6001600160401b0390961660408401526060830152608082015280840360a09091015261321d565b91969792989594939094303303615156576150ea908530615a4b565b60405181815290946001600160a01b03169390849061ffff851690600080516020615d3a83398151915290602090a3833b15610421576000988995615146936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01615081565b0393f1801561081d5761474c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff6151e09316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff61520384615c53565b16806153565750505060ff61521782615c53565b16158061534b575b6152289061575b565b61523a61523482615c03565b91615c9e565b90916001600160a01b039182841615615341575b615282907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166156dd565b9183169283156152fc57600080516020615d3a833981519152916152bc61ffff926152b76152b287600a54612eb9565b600a55565b61222c565b848154019055846000600080516020615d7a833981519152604051806152e789829190602083019252565b0390a360405193845216918060208101612ff0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061524e565b50805160291461521f565b600103615366576104319361547a565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156153b157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361541c60e0979361ffff61341e9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b6154696040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916154858461580c565b90916154a06116c4876117bc61549a8b610bc7565b8c610e4d565b916001600160401b03916154d7907f00000000000000000000000000000000000000000000000000000000000000009084166156dd565b9288888b83156155c5575b505050853b1561558857946155299694614e26948a94614e18948d996000146155815750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016153f2565b901561557657509061557161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615451565b0390a2565b926104319492614e4e565b169261550a565b5050505050925050507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9250614efa9150604051918291826119f2565b906117bc611914926155e5896155df6155eb979b306159fb565b99610bc7565b90610e4d565b88888b6154e2565b60065460ff161561563a576022825110614be65761ffff60226104319301519116600052600260205260406000206000805260205260406000205490614bdf821515614b0e565b505161139457565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156156d8576001600160401b03919004818111615696571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615642565b81810292918115918404141715610b2e57565b7f000000000000000000000000000000000000000000000000000000000000000080156156d857810690818103908111610b2e5791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a481610cfa565b1561576257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526157fc815180926020868601910161064b565b8101036051810184520182610d4b565b90615824600160ff61581d85615c53565b161461575b565b61582d82615c03565b9061583783615c9e565b9060498451106158a857604984015193605181511061586c576158696051820151916158638151614409565b90615b7f565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615994575b8015615945578161591a8461590d60009561222c565b54612fcd828210156159a4565b5561592883600a5403600a55565b604051838152600080516020615d7a83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61599f833384613161565b6158f7565b156159ab57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156152fc57600a5490828201809211610b2e57600092615a3c602092600080516020615d7a83398151915294600a5561222c565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615a77575b5015612f79576109a5833383613161565b905033141538615a66565b15615a8957565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615ac657565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615b1382615b0c81612e9d565b1015615a82565b615b208282511015615abf565b81615b38575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615b6c5750508252601f01601f191660405290565b9092835181526020809101930190615b54565b615b8c82615b0c81612e9d565b615ba18151615b9a84612eab565b1115615abf565b81615bb9575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615bf05750508252601f01601f191660405290565b9092835181526020809101930190615bd8565b6021815110615c1657602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615c63576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061586c576029015190565b9092916000809160405195615cc287610cdf565b6096875282602088019560a036883760208451940192f1903d9060968211615cf0575b6000908286523e9190565b60969150615ce556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122006a90907d61707c488068a12d9608f1cdc2948408b95764078e77cecd6223a4f64736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f757806310ddb137146103f257806318160ddd1461038457806323b872dd146103ed578063313ce567146103e8578063365260b4146103e357806339509351146103de5780633d8b38f6146103d95780633f1f4fa4146103d457806342d65a8d146103cf57806344770515146103ca5780634c42899a146103ca5780635b8c41e6146103c55780635c975abb146103c057806366ad5c8a146103bb578063695ef6bf146103b657806370a08231146103b1578063715018a6146103ac5780637533d788146103a757806376203b48146103a25780637e6b6e5a1461039d57806381618d0514610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a578063952168c51461037557806395d89b41146103705780639bdb98121461036b5780639d3f4d1a146103665780639f38369a14610361578063a457c2d71461035c578063a4c51df514610357578063a6c3d16514610352578063a9059cbb1461034d578063af2ee97514610348578063b353aaa714610343578063ba03a8d71461033e578063baf3292d14610339578063c056a8de14610334578063c44618341461032f578063cbed8b9c1461032a578063ce8849ed14610325578063d1deba1f14610320578063dbd01de11461031b578063dd62ed3e14610316578063de40657714610311578063df2a5b3b1461030c578063e6a20ae614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612def565b612d1b565b612c66565b612c43565b612c0b565b612ae2565b612a59565b6129f7565b6129db565b6128ee565b6128a9565b61285f565b612836565b6126fe565b6126d5565b6125ef565b6125d2565b612329565b612295565b61225d565b6121e7565b6120cf565b6120a5565b611f43565b611eac565b611e00565b611d5d565b611d3f565b611cf4565b611c50565b611aa6565b611a4c565b611a2e565b61094c565b611a05565b611993565b611955565b611628565b611548565b611251565b6111fa565b6110c6565b611089565b610fa6565b610f01565b610ede565b610e8a565b610c95565b610c14565b610bdb565b610b6b565b610ae3565b6109db565b6109aa565b61096a565b6108c2565b610883565b61084e565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b6111df565b805190818414918261059b575b5081610578575b50614966565b3691610db6565b923691610db6565b92614dba565b9050610585368486610db6565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c98161110f565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610d4b565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a90610cc7565b80f35b613211565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b359061043182610832565b346104215760403660031901126104215761087860043561086e81610832565b6024359033613048565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108a381610415565b6108ab612e0a565b166000526003602052602435604060002055600080f35b346104215760006020366003190112610784576004356108e181610415565b6108e9612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b346104215760603660031901126104215761087860043561098a81610832565b60243561099681610832565b604435916109a5833383613161565b612f79565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b3590610431826109c6565b346104215760a0366003190112610421576004356109f881610415565b60643590610a05826109c6565b608435906001600160401b03821161042157610a2a6105636040933690600401610433565b90610a61610a44610a3c604435615658565b602435615727565b928451958694859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ab2575b50604080519182526020820192909252f35b9050610ad5915060403d8111610adc575b610acd8183610d4b565b81019061519b565b9038610aa0565b503d610ac3565b3461042157604036600319011261042157600435610b0081610832565b336000526009602052610b17816040600020612246565b546024358101809111610b2e576108789133613048565b612e87565b90604060031983011261042157600435610b4c81610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610bb8610b8136610b33565b9390911660005260018452610ba3610baa604060002060405192838092611149565b0382610d4b565b848151910120923691610db6565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff600435610bfb81610415565b1660005260036020526020604060002054604051908152f35b3461042157610c2236610b33565b9190610c2c612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b825281610c836000988997889460048501614d4b565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cda57604052565b610cb1565b60c081019081106001600160401b03821117610cda57604052565b606081019081106001600160401b03821117610cda57604052565b604081019081106001600160401b03821117610cda57604052565b608081019081106001600160401b03821117610cda57604052565b601f909101601f19168101906001600160401b03821190821017610cda57604052565b604051906101a082016001600160401b03811183821017610cda57604052565b6040519061043182610cfa565b6001600160401b038111610cda57601f01601f191660200190565b929192610dc282610d9b565b91610dd06040519384610d4b565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610db6565b90606060031983011261042157600435610e2181610415565b91602435906001600160401b03821161042157610e4091600401610ded565b906044356106a481610460565b602090610e6792826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610421576020610ed561ffff610ec783610ea436610e08565b94909116600052600582526040600020826040519483868095519384920161064b565b820190815203019020610e73565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b3461042157610f0f36610471565b9192949390303303610f335761056a610f2d92610019973691610db6565b926151f5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104215760c490565b908160609103126104215790565b60a036600319011261042157600435610fbe81610832565b602435610fca81610415565b604435916084356001600160401b03811161042157602061ffff611001600080516020615cfa833981519152933690600401610f98565b93611074853561101081610832565b61102e61056386890135986110248a610832565b6040810190614fa5565b611038818a6155f3565b61104d6110466064356156f0565b50856158e5565b976110598915156153aa565b61106b6110658a615658565b8c615727565b9234938b614a19565b6040519485526001600160a01b0316941692a4005b34610421576020366003190112610421576004356110a681610832565b60018060a01b031660005260086020526020604060002054604051908152f35b3461042157600080600319360112610784576110e0612e0a565b80546001600160a01b03198116825581906001600160a01b0316600080516020615d5a8339815191528280a380f35b90600182811c9216801561113f575b602083101461112957565b634e487b7160e01b600052602260045260246000fd5b91607f169161111e565b906000929180549161115a8361110f565b9182825260019384811690816000146111bc575060011461117c575b50505050565b90919394506000526020928360002092846000945b8386106111a8575050505001019038808080611176565b805485870183015294019385908201611191565b9294505050602093945060ff191683830152151560051b01019038808080611176565b906104316111f39260405193848092611149565b0383610d4b565b346104215760203660031901126104215761ffff60043561121a81610415565b1660005260016020526106ff610ba361123d604060002060405192838092611149565b60405191829160208352602083019061066e565b60e03660031901126104215760043561126981610832565b60243561127581610415565b604435916001600160401b03906084358281116104215761129a903690600401610433565b91909260a4356112a981610460565b60c435828111610421576112c1903690600401610f98565b90866112f98335966112d288610832565b6112f16112e760208701359661102488610832565b9a90923691610db6565b983691610db6565b9360ff6006541660001461136657936020959361106b84611334600080516020615cfa8339815191529a958561ffff9a611074991691614c68565b6113496113426064356156f0565b50886158e5565b9a6113558c15156153aa565b8d61135f8d615658565b90336157a2565b5050829391925161139457600080516020615cfa8339815191529460209461ffff9461106b61107494611334565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610cda5760051b60200190565b60ff81160361042157565b3590610431826113ff565b81601f820112156104215780359061142c826113e8565b9260409061143c82519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b85841061146d575050505050505090565b868483031261042157848791611481610d6e565b61148a876109d0565b81526114978388016109d0565b838201526114a68688016109d0565b8682015260606114b7818901610426565b9082015260806114c8818901610843565b9082015260a06114d98189016109d0565b9082015260c06114ea818901610843565b9082015260e06114fb818901610843565b908201526101008088013590820152610120808801359082015261014061152381890161140a565b908201526101608088013590820152610180808801359082015281520193019261145c565b34610421576101c03660031901126104215760043561156681610832565b6044359061157382610832565b60843561157f81610832565b60c03660a3190112610421576040519261159884610cdf565b60a4356115a4816109c6565b845260c4356115b281610832565b602085015260e4356115c381610415565b6040850152610104356060850152610124356115de81610832565b60808501526101443560a085015261018435936001600160401b03851161042157611610610019953690600401611415565b926101a43594610164359360643591602435906145af565b346104215760a036600319011261042157611644600435610832565b61164f602435610415565b6001600160401b036044358181116104215761166f903690600401610ded565b61167a606435610460565b6084359180831161042157611696611740933690600401610ded565b6116a13033146140bc565b6001600160a01b036004351660009081526014602052604090206116d0906116cb905b5460ff1690565b614101565b6116e360208251830101602083016141ba565b91979450959260206117016116fc600d9b959b54610826565b610826565b61170d828b0151610826565b604051633a304d8b60e21b8152600060048201526001600160a01b03909116602482015294859190829081906044820190565b03915afa90811561081d5760009461176461178c9387968791611926575b50613457565b7f000000000000000000000000000000000000000000000000000000000000000091166156dd565b604089015261179a3061222c565b54966117c56117c16116c46064356117bc6117b6602435610bc7565b8a610e4d565b610e73565b1590565b6118e9575b6118416117d63061222c565b54976118336117e58c51610826565b9460608d0151928d6117fa6080820151610826565b9660a08201519160406118106020830151610826565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01614368565b03601f198101835282610d4b565b51906004355af4926118516139d3565b931561189d575b8560406118658251610826565b9101516040519081526001600160a01b039091169060243561ffff1690600080516020615d3a8339815191529080602081015b0390a3005b6118c5946118aa91614418565b6040860151809110156118cf575b5060643590602435614e4e565b3880808080611858565b6118e3906118dd8751610826565b30614425565b386118b8565b6118f760408a0151306159fb565b6119216119146064356117bc61190e602435610bc7565b89610e4d565b805460ff19166001179055565b6117ca565b611948915060203d60201161194e575b6119408183610d4b565b810190613442565b3861175e565b503d611936565b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610421576040366003190112610421576020610ed56004356119b581610415565b61ffff602435916119c583610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b6001600160a01b03909116815260200190565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b60a036600319011261042157600435611abe81610415565b6001600160401b0360243581811161042157611ade903690600401610433565b909160643581811161042157611af8903690600401610f98565b9060843590811161042157611b11903690600401611a75565b9390611b26611b21368685610db6565b6148b3565b50915050611b3e611b386044356156f0565b50615658565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d57611bf298611bb7611bdf956020958a95611bc595611be99a600091611c23575b506040519c8d96338b890161335e565b03601f198101885287610d4b565b611bd9611bd3368988610db6565b8a614c2a565b01613423565b9134943691610db6565b91339086614a19565b604051903391600080516020615cfa83398151915261ffff3393169180611c1e81906000602083019252565b0390a4005b611c439150893d8111611c49575b611c3b8183610d4b565b8101906131fc565b38611ba7565b503d611c31565b34610421576000806003193601126107845760405181600c54611c728161110f565b8084529060019081811690811561075c5750600114611c9b576106ff846106f381880382610d4b565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611ce157505050816106ff936106f392820101936106e3565b8054858501870152928501928101611cc5565b3461042157602060ff611d3361ffff610ec784611d1036610e08565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff600435611d7d81610415565b166000526001602052610ba3611d9d604060002060405192838092611149565b805115611dbb576106f381611db56106ff93516143fa565b90615aff565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611e1d81610832565b60243590336000526009602052611e38816040600020612246565b5491808310611e5957611e4d92039033613048565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611ec981610415565b6001600160401b039060643582811161042157611eea903690600401610433565b608492919235611ef981610460565b60a43591611f06836109c6565b60c43595861161042157611f21611f31963690600401610433565b9590946044359060243590614fd7565b60408051928352602083019190915290f35b3461042157611f5136610b33565b90611f5a612e0a565b60405192602092808385870137611f866034868381013060601b88820152036014810188520186610d4b565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cda57611fc383611fbd865461110f565b86614d66565b80601f84116001146120215750918080926120109695948a9b600080516020615d1a8339815191529b94612016575b50501b916000199060031b1c19161790555b60405193849384614d4b565b0390a180f35b015192503880611ff2565b91939498601f19841661203987600052602060002090565b938a905b82821061208e57505091600080516020615d1a833981519152999a9593918561201098969410612075575b505050811b019055612004565b015160001960f88460031b161c19169055388080612068565b80888697829497870151815501960194019061203d565b34610421576040366003190112610421576108786004356120c581610832565b6024359033612f79565b34610421576020366003190112610421576004356001600160401b0380821161042157612115612106612157933690600401610ded565b60208082518301019101613783565b95509692919360018060a09893981b03169680516121d8575b507f000000000000000000000000000000000000000000000000000000000000000091166156dd565b90303b156104215760405163695ef6bf60e01b815292600092849283918291612186918a8a8160048701613857565b0391305af1801561081d576121bf575b50600080516020615d3a83398151915261ffff6040519216918061189881906000602083019252565b806121cc6121d292610cc7565b80610640565b38612196565b6121e190613a03565b3861212e565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff611d3360243561228181610832565b600435600052600f84526040600020612246565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356122d581610832565b6122dd612e0a565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261042157600490565b60c0906101231901126104215761012490565b6102203660031901126104215761233f36612305565b61234836610f87565b9061235236612316565b6001600160401b03906101e43582811161042157612374903690600401611a75565b92610204359081116104215761238e903690600401610433565b959061239e6116fc600d54610826565b916123f26123ab8261342d565b9360209485916123bc838a01613423565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa801561081d5761240d916000916125bb5750613457565b61241687613423565b6001600160a01b0394903390861603612581575b6124366116fc89613423565b98604089013597612446896156f0565b50946124518b613423565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa801561081d57600080516020615cfa8339815191529b6118338f969a6125479b6125429a6124c761254d9f84908c996124f299612564575b506158e5565b506124e36124d9611b21368e8d610db6565b5095915050615658565b946040519788968a880161354d565b61250f6124fe8861342d565b612509368887610db6565b90614ba1565b61253c61253261252a6116fc6125248b61342d565b97613423565b938901613423565b9334963691610db6565b93614a19565b61342d565b94613423565b604051938452169261ffff16918060208101611c1e565b61257a908c8d3d10611c4957611c3b8183610d4b565b50386124c1565b6125b6612596336125918b613423565b612e62565b6125a760408b01358092101561349a565b336125b18b613423565b613161565b61242a565b6119489150853d871161194e576119408183610d4b565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561260c81610415565b60243561261881610415565b6064356001600160401b03811161042157612637903690600401610433565b9092612641612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561042157600080946126b8604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161321d565b03925af1801561081d576126c857005b806121cc61001992610cc7565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b61270736610471565b9161ffff8694929616600052600560205261273b81604060002060206040518092878b833787820190815203019020610e73565b549182156127e5576127d484836127cd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006127b9846117bc8e8a8f6127e09f908f61279f906127926127b39436908d610db6565b6020815191012014614f18565b61ffff166000526005602052604060002090565b91614eff565b556127c536878d610db6565b933691610db6565b91886151f5565b60405195869586614f6e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b34610421576040366003190112610421576020610ed560043561288181610832565b6024359061288e82610832565b6001600160a01b031660009081526009845260409020612246565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104215760603660031901126104215760043561290b81610415565b60243561291781610415565b60443591612923612e0a565b821561299e576127e07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612a37816109c6565b612a3f612e0a565b151560ff196006541660ff821617600655604051908152a1005b346104215761010036600319011261042157600435612a7781610415565b6001600160401b039060243582811161042157612a98903690600401610433565b919060443590612aa782610460565b608435612ab381610832565b60c43595861161042157612ace610019963690600401610433565b94909360e4359660a43594606435936150ce565b3461042157612af036610b33565b9190612afa612e0a565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cda57612b3687612b30855461110f565b85614d66565b8590601f8811600114612b8b575091868087989361201095600080516020615d9a8339815191529993612b80575b501b906000198460031b1c191617905560405193849384614d4b565b880135925038612b64565b90601f198816612ba085600052602060002090565b9288905b828210612bf457505091889391600080516020615d9a8339815191529899612010969410612bda575b505082811b019055612004565b870135600019600386901b60f8161c191690553880612bcd565b808685968294968c01358155019501930190612ba4565b3461042157604036600319011261042157602060ff611d33602435612c2f81610832565b600435600052601084526040600020612246565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612c8381610832565b612c8b612e0a565b6001600160a01b039081168015612cc757600080546001600160a01b0319811683178255909216600080516020615d5a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612d3881610415565b60243590612d4582610415565b612d50604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612dce575b5060405191829182610693565b612de9913d8091833e612de18183610d4b565b810190614d26565b38612dc1565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612e1e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b03166000908152600960205260409020612e839190612246565b5490565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2e57565b6051019081605111610b2e57565b91908201809211610b2e57565b15612ecd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612f2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612ff557612fda82600080516020615d7a83398151915294612ff0941696612fb3881515612ec6565b612fd484612fc08361222c565b54612fcd82821015612f1e565b039161222c565b5561222c565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156131105782169384156130c057806130af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946130aa612ff09560018060a01b03166000526009602052604060002090565b612246565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613181816040600020612246565b5492600184016131915750505050565b8084106131ac576131a3930391613048565b38808080611176565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9190808252602080920192916000905b82821061325c575050505090565b9091929380613276600192613270886109d0565b15159052565b61328c6132848488016109d0565b151582850152565b6132a4604061329c8189016109d0565b151590830152565b6132be60606132b4818901610426565b61ffff1690830152565b6132d760806132ce818901610843565b908301906119e5565b6132e760a061329c8189016109d0565b6132f760c06132ce818901610843565b61330760e06132ce818901610843565b6101008087013590820152610120808701359082015261333761014061332e81890161140a565b60ff1690830152565b610160868101359082015261018080870135908201526101a090810195019392019061324e565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e06060820152979695919493929080823561339e81610832565b1660e08a015260208201356133b281610832565b166101008901526040810135601e19823603018112156104215701926020843594019484116104215783360385136104215761341161340460c09661341e9660606101208d01526101408c019161321d565b61ffff90941660808a0152565b87830360a089015261323e565b930152565b356106a481610832565b356106a481610415565b5190610431826109c6565b9081602091031261042157516106a4816109c6565b1561345e57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b156134a157565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60a0809180356134f1816109c6565b15158452602081013561350381610832565b600180841b03809116602086015261ffff604083013561352281610415565b16604086015260608201356060860152608082013561354081610832565b1660808501520135910152565b9695949061341e9360a06101e096946135d9936103098c5260018060401b031660208c0152803561357d81610832565b600180841b0380911660408d015280602083013561359a81610832565b1660608d0152604082013560808d01526060820135838d015260808201356135c181610832565b1660c08c0152013560e08a01526101008901906134e2565b610200806101c089015287019161323e565b519061043182610832565b9092919261360381610d9b565b916136116040519384610d4b565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a4926020016135f6565b5190610431826113ff565b81601f8201121561042157805190613667826113e8565b9260409061367782519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b8584106136a8575050505050505090565b8684830312610421578487916136bc610d6e565b6136c587613437565b81526136d2838801613437565b838201526136e1868801613437565b8682015260606136f28189016131f1565b9082015260806137038189016135eb565b9082015260a0613714818901613437565b9082015260c06137258189016135eb565b9082015260e06137368189016135eb565b908201526101008088015190820152610120808801519082015261014061375e818901613645565b9082015261016080880151908201526101808088015190820152815201930192613697565b91909160e08184031261042157805161379b81610415565b9260208201516137aa81610832565b9260408301516137b981610460565b606084015190936001600160401b0392909183811161042157820160608186031261042157604051906137eb82610cfa565b80516137f681610832565b8252602081015161380681610832565b6020830152604081015190858211610421576138249187910161362b565b604082015293613836608084016131f1565b9360a08401519081116104215760c091613851918501613650565b92015190565b93906106a495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061066e565b80518210156138c35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b156138e057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff61394060209295949560408552604085019061066e565b9416910152565b60009060033d1161395457565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d6024840111176139c2578184019485519384116139ca573d850101602084870101116139c257506106a492910160200190610d4b565b949350505050565b50949350505050565b3d156139fe573d906139e482610d9b565b916139f26040519384610d4b565b82523d6000602084013e565b606090565b9060005b8251811015613c96576040613a2881613a2084876138af565b510151151590565b15613a4a575080613a44613a3e600193866138af565b51613e8b565b01613a07565b6060613a7461030a61ffff613a6d84613a63888b6138af565b51015161ffff1690565b16146138d9565b613a8360a0613a2085886138af565b613aa160c0613a9286896138af565b5101516001600160a01b031690565b91613b72613ab460e0613a92888b6138af565b93613b64610100613ac5898c6138af565b5101518a610120613ad68b836138af565b510151613af2610140613ae98d856138af565b51015160ff1690565b90610180613b108d610160613b0782886138af565b510151956138af565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610d4b565b613b95613b8a6116fc6116fc6080613a928a8d6138af565b91613a63878a6138af565b90803b1561042157613bc36000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613c83575b50613bed576001613bdd613947565b6308c379a014613c3b575b613bf8575b505050600190613a44565b613c116117c1613c066139d3565b92613a20878a6138af565b15613bed57613c22613c3791613e13565b925162461bcd60e51b81529283928301610693565b0390fd5b613c43613965565b80613c4f575b50613be8565b60009150613c646117c184613a20898c6138af565b15613c4957845162461bcd60e51b8152908190613c3790828701610693565b806121cc613c9092610cc7565b38613bce565b509050565b9060005b8251811015613c96576040613cb881613a2084876138af565b15613cd4575080613cce613a3e600193866138af565b01613c9f565b6060613ced61030961ffff613a6d84613a63888b6138af565b613cfc60a0613a2085886138af565b613d0b60c0613a9286896138af565b91613d1e613ab460e0613a92888b6138af565b613d36613b8a6116fc6116fc6080613a928a8d6138af565b90803b1561042157613d646000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613e00575b50613d8e576001613d7e613947565b6308c379a014613db8575b613d99575b505050600190613cce565b613da76117c1613c066139d3565b15613d8e57613c22613c3791613e13565b613dc0613965565b80613dcc575b50613d89565b60009150613de16117c184613a20898c6138af565b15613dc657845162461bcd60e51b8152908190613c3790828701610693565b806121cc613e0d92610cc7565b38613d6f565b6044815110613e6457600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a4926044016135f6565b50604051613e7181610d15565b600a8152695553444f3a206461746160b01b602082015290565b805115613ffb57613ea56116fc6116fc6080840151610826565b613eb260c0830151610826565b613ebf60e0840151610826565b9161012084015190613ed661014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613fe8575b50613f66576001613f56613947565b6308c379a014613faa575b613f69575b50565b613f816117c16020613f796139d3565b930151151590565b15613f6657613f92613c3791613e13565b60405162461bcd60e51b815291829160048301610693565b613fb2613965565b80613fbe575b50613f61565b602083015160009250613fb8575b60405162461bcd60e51b8152908190613c379060048301610693565b806121cc613ff592610cc7565b38613f47565b61400e6116fc6116fc6080840151610826565b61401b60c0830151610826565b61402860e0840151610826565b91610100840151906101208501519361404661014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613f3c565b156140c357565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561410857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260c09103126104215760405161415e81610cdf565b60a0808294805161416e816109c6565b8452602081015161417e81610832565b6020850152604081015161419181610415565b60408501526060810151606085015260808101516141ae81610832565b60808501520151910152565b918282039161020083126104215783516141d381610415565b9360c060208201516141e481610460565b94603f190112610421576040516141fa81610cdf565b604082015161420881610832565b8152606082015161421881610832565b60208201526080820151604082015260a0820151606082015260c082015161423f81610832565b608082015260e082015160a08201529261425d836101008401614146565b6101c08301519093906001600160401b038111610421576101e091613851918501613650565b90815180825260208080930193019160005b8281106142a3575050505090565b90919293826101a060019287516142bc82825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526142f2608080830151908401906119e5565b60a08181015115159083015261431060c080830151908401906119e5565b61432260e080830151908401906119e5565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201950193929101614295565b999897949161341e96926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190614283565b601319810191908211610b2e57565b605019810191908211610b2e57565b91908203918211610b2e57565b91906144af91600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261446486610d30565b16926040519461447386610d15565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16144a96139d3565b9161452b565b805190816144bc57505050565b82806144cc938301019101613442565b156144d45750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561458d575081511561453f575090565b3b156145485790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613fcc5750805190602001fd5b90816020910312610421575190565b9194939697929590978051614809575b50604080516370a0823160e01b80825260209a92996001600160a01b0398808a169492939192918d81806145f630600483016119f2565b0381895afa93841561081d578b918f6000966147ea575b50501691823b15610421578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af1801561081d576147d7575b5089519182528a828061467430600483016119f2565b0381865afa801561081d5785926000916147aa575b50808211614776575b50505050506146a18351151590565b15614759576146b86116fc6116fc89860151610826565b936146c78785015161ffff1690565b91169261470e6146e760a06146df6080850151610826565b930151614818565b916146f0610d8e565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156104215761473b600096519788968795869463695ef6bf60e01b86523060048701613857565b03925af1801561081d5761474c5750565b806121cc61043192610cc7565b939450506147719150610431946116fc910151610826565b614425565b61477f91614418565b9280841061478e575b80614692565b6147a19361479b91614418565b91614425565b38808281614788565b6147ca91508c8d3d106147d0575b6147c28183610d4b565b8101906145a0565b38614689565b503d6147b8565b806121cc6147e492610cc7565b3861465e565b614801929650803d106147d0576147c28183610d4b565b93388f61460d565b61481290613c9b565b386145bf565b60405190600160f01b60208301526022820152602281526106a481610cfa565b1561483f57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561488057565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b60008082516022811490811561495b575b501561491e57600283015193602284015193600261ffff8716600181148015614915575b6148f190614838565b6148fc871515614879565b146149045750565b925090506056604283015192015190565b508082146148e8565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b6042915011386148c4565b1561496d57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b926149e66106a497959361ffff6149f49416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614a429193929561ffff81166000526001602052614a49604060002060405194858092611149565b0384610d4b565b825115614ab057614a5b855182614cb7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104215760009661473b91604051998a988997889662c5803160e81b8852600488016149c1565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614b1557565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614b5e57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030960005260205260406000205490614bdf821515614b0e565b1015614b57565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030a60005260205260406000205490614bdf821515614b0e565b91906022815110614be657602261ffff91015192166000526002602052614c9d60406000206001600052602052604060002090565b54908101809111610b2e5761043191614bdf821515614b0e565b61ffff166000526003602052604060002054908115614d1c575b11614cd857565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614cd1565b906020828203126104215781516001600160401b038111610421576106a4920161362b565b60409061ffff6106a49593168152816020820152019161321d565b90601f8111614d7457505050565b600091825260208220906020601f850160051c83019410614db0575b601f0160051c01915b828110614da557505050565b818155600101614d99565b9092508290614d90565b929091614e2c5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614e2682614e18614df760a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610d4b565b30615cae565b939015614e3b575b5050505050565b614e4494614e4e565b3880808080614e34565b9193614eec7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614efa939561ffff81516020830120961695866000526005602052614eb283610ec760208b6040600020826040519483868095519384920161064b565b55614ecf604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b15614f1f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614f91939897969816845260806020850152608084019161321d565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b94919598979061135f615000604099614ff861500697615023993691610db6565b943691610db6565b97615658565b928451968794859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d57600090819361506657509190565b90506104d291925060403d8111610adc57610acd8183610d4b565b939694916106a498969361ffff6150a69316865260c0602087015260c086019161321d565b6001600160401b0390961660408401526060830152608082015280840360a09091015261321d565b91969792989594939094303303615156576150ea908530615a4b565b60405181815290946001600160a01b03169390849061ffff851690600080516020615d3a83398151915290602090a3833b15610421576000988995615146936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01615081565b0393f1801561081d5761474c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff6151e09316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff61520384615c53565b16806153565750505060ff61521782615c53565b16158061534b575b6152289061575b565b61523a61523482615c03565b91615c9e565b90916001600160a01b039182841615615341575b615282907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166156dd565b9183169283156152fc57600080516020615d3a833981519152916152bc61ffff926152b76152b287600a54612eb9565b600a55565b61222c565b848154019055846000600080516020615d7a833981519152604051806152e789829190602083019252565b0390a360405193845216918060208101612ff0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061524e565b50805160291461521f565b600103615366576104319361547a565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156153b157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361541c60e0979361ffff61341e9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b6154696040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916154858461580c565b90916154a06116c4876117bc61549a8b610bc7565b8c610e4d565b916001600160401b03916154d7907f00000000000000000000000000000000000000000000000000000000000000009084166156dd565b9288888b83156155c5575b505050853b1561558857946155299694614e26948a94614e18948d996000146155815750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016153f2565b901561557657509061557161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615451565b0390a2565b926104319492614e4e565b169261550a565b5050505050925050507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9250614efa9150604051918291826119f2565b906117bc611914926155e5896155df6155eb979b306159fb565b99610bc7565b90610e4d565b88888b6154e2565b60065460ff161561563a576022825110614be65761ffff60226104319301519116600052600260205260406000206000805260205260406000205490614bdf821515614b0e565b505161139457565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156156d8576001600160401b03919004818111615696571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615642565b81810292918115918404141715610b2e57565b7f000000000000000000000000000000000000000000000000000000000000000080156156d857810690818103908111610b2e5791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a481610cfa565b1561576257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526157fc815180926020868601910161064b565b8101036051810184520182610d4b565b90615824600160ff61581d85615c53565b161461575b565b61582d82615c03565b9061583783615c9e565b9060498451106158a857604984015193605181511061586c576158696051820151916158638151614409565b90615b7f565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615994575b8015615945578161591a8461590d60009561222c565b54612fcd828210156159a4565b5561592883600a5403600a55565b604051838152600080516020615d7a83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61599f833384613161565b6158f7565b156159ab57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156152fc57600a5490828201809211610b2e57600092615a3c602092600080516020615d7a83398151915294600a5561222c565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615a77575b5015612f79576109a5833383613161565b905033141538615a66565b15615a8957565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615ac657565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615b1382615b0c81612e9d565b1015615a82565b615b208282511015615abf565b81615b38575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615b6c5750508252601f01601f191660405290565b9092835181526020809101930190615b54565b615b8c82615b0c81612e9d565b615ba18151615b9a84612eab565b1115615abf565b81615bb9575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615bf05750508252601f01601f191660405290565b9092835181526020809101930190615bd8565b6021815110615c1657602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615c63576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061586c576029015190565b9092916000809160405195615cc287610cdf565b6096875282602088019560a036883760208451940192f1903d9060968211615cf0575b6000908286523e9190565b60969150615ce556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122006a90907d61707c488068a12d9608f1cdc2948408b95764078e77cecd6223a4f64736f6c63430008120033", + "bytecode": "0x61010060409080825234620004d457606081620048628038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161431d90816200054582396080518181816104920152818161075501528181610884015281816109fe01528181610bbf0152818161186c01528181611a790152818161224101528181612a7601528181612ee6015261350d015260a051816112fe015260c051818181613753015281816139e601528181613bb90152613c53015260e05181611d360152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103b057806301ffc9a7146103ab57806306fdde03146103a657806307e0db17146103a1578063095ea7b31461039c5780630df374831461039757806310ddb1371461039257806318160ddd1461032e57806323b872dd1461038d578063313ce56714610388578063365260b414610383578063395093511461037e5780633d8b38f6146103795780633f1f4fa41461037457806342d65a8d1461036f578063447705151461036a5780634c42899a1461036a5780635b8c41e6146103655780635c975abb1461036057806366ad5c8a1461035b578063695ef6bf1461035657806370a0823114610351578063715018a61461034c5780637533d7881461034757806376203b4814610342578063857749b01461033d5780638cfd8f5c146103385780638da5cb5b146103335780639358928b1461032e578063950c8a741461032957806395d89b41146103245780639bdb98121461031f5780639f38369a1461031a578063a457c2d714610315578063a4c51df514610310578063a6c3d1651461030b578063a9059cbb14610306578063b353aaa714610301578063ba03a8d7146102fc578063baf3292d146102f7578063c056a8de146102f2578063c4461834146102ed578063cbed8b9c146102e8578063ce8849ed146102e3578063d1deba1f146102de578063dbd01de1146102d9578063dd62ed3e146102d4578063de406577146102cf578063df2a5b3b146102ca578063e6a20ae6146102c5578063eab45d9c146102c0578063eaffd49a146102bb578063eb8d72b7146102b6578063ec6d062b146102b1578063ed629c5c146102ac578063f2fde38b146102a7578063f5ecbdbc146102a25763fc0c546a0361000e576122ab565b6121d7565b612110565b6120ed565b6120a3565b611f59565b611ed0565b611e6e565b611e52565b611d65565b611d20565b611cc6565b611c9d565b611b3a565b611b11565b611a25565b611a08565b611979565b6118e5565b61189b565b611856565b61182c565b6116a9565b611616565b611558565b6114b5565b61146a565b6113c6565b61139d565b6108e5565b611374565b611322565b6112e4565b61114e565b6110f7565b610fb1565b610f74565b610e91565b610dec565b610dc9565b610d62565b610c26565b610ba5565b610b6c565b610b10565b610a7c565b610974565b610943565b610903565b61085b565b61081c565b6107e7565b61072c565b61064c565b61058f565b61047b565b61ffff8116036103c157565b600080fd5b35906103d1826103b5565b565b9181601f840112156103c1578235916001600160401b0383116103c157602083818601950101116103c157565b608435906001600160401b03821682036103c157565b9060806003198301126103c15760043561042f816103b5565b916001600160401b03906024358281116103c15781610450916004016103d3565b9390939260443581811681036103c157926064359182116103c157610477916004016103d3565b9091565b346103c15761048936610416565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054a5761050f61051792610019976105086104ee6104e98a61ffff166000526001602052604060002090565b6110dc565b8051908184149182610540575b508161051d575b50612def565b3691610cac565b923691610cac565b926132a1565b905061052a368486610cac565b6020815191012090602081519101201438610502565b15159150386104fb565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103c15760203660031901126103c15760043563ffffffff60e01b81168091036103c157602090631f7ecdf760e01b81149081156105d4575b506040519015158152f35b6301ffc9a760e01b149050386105c9565b60009103126103c157565b60005b8381106106035750506000910152565b81810151838201526020016105f3565b9060209161062c815180928185528580860191016105f0565b601f01601f1916010190565b906020610649928181520190610613565b90565b346103c1576000806003193601126107295760405181600b5461066e8161100c565b8084529060019081811690811561070157506001146106a8575b6106a48461069881880382610c70565b60405191829182610638565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106ee57505050816106a4936106989282010193610688565b80548585018701529285019281016106d2565b6106a496506106989450602092508593915060ff191682840152151560051b82010193610688565b80fd5b346103c157600060203660031901126107295760043561074b816103b5565b6107536122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c2576107b6575080f35b6107bf90610c58565b80f35b612704565b5080fd5b6001600160a01b038116036103c157565b35906103d1826107cb565b346103c15760403660031901126103c157610811600435610807816107cb565b6024359033612518565b602060405160018152f35b346103c15760403660031901126103c15761ffff60043561083c816103b5565b6108446122c6565b166000526003602052602435604060002055600080f35b346103c157600060203660031901126107295760043561087a816103b5565b6108826122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c2576107b6575080f35b346103c15760003660031901126103c1576020600a54604051908152f35b346103c15760603660031901126103c157610811600435610923816107cb565b60243561092f816107cb565b6044359161093e833383612643565b612410565b346103c15760003660031901126103c157602060405160128152f35b801515036103c157565b35906103d18261095f565b346103c15760a03660031901126103c157600435610991816103b5565b6064359061099e8261095f565b608435906001600160401b0382116103c1576109c361050860409336906004016103d3565b906109fa6109dd6109d5604435613bb7565b602435613c88565b928451958694859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c2576000908192610a4b575b50604080519182526020820192909252f35b9050610a6e915060403d8111610a75575b610a668183610c70565b810190613692565b9038610a39565b503d610a5c565b346103c15760403660031901126103c157600435610a99816107cb565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ad3576108119133612518565b61231e565b9060406003198301126103c157600435610af1816103b5565b91602435906001600160401b0382116103c157610477916004016103d3565b346103c157602061ffff610b5d610b2636610ad8565b9390911660005260018452610b48610b4f604060002060405192838092611046565b0382610c70565b848151910120923691610cac565b82815191012014604051908152f35b346103c15760203660031901126103c15761ffff600435610b8c816103b5565b1660005260036020526020604060002054604051908152f35b346103c157610bb336610ad8565b9190610bbd6122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103c157604051928380926342d65a8d60e01b825281610c146000988997889460048501613214565b03925af180156107c2576107b6575080f35b346103c15760003660031901126103c157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c6b57604052565b610c42565b90601f801991011681019081106001600160401b03821117610c6b57604052565b6001600160401b038111610c6b57601f01601f191660200190565b929192610cb882610c91565b91610cc66040519384610c70565b8294818452818301116103c1578281602093846000960137010152565b60606003198201126103c157600435610cfb816103b5565b916024356001600160401b03928382116103c157806023830112156103c157816024610d2c93600401359101610cac565b9160443590811681036103c15790565b602090610d569282604051948386809551938492016105f0565b82019081520301902090565b346103c1576020610dc061ffff610d9f83610d7c36610ce3565b9490911660005260058252604060002082604051948386809551938492016105f0565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103c15760003660031901126103c157602060ff601154166040519015158152f35b346103c157610dfa36610416565b9192949390303303610e1e5761050f610e1892610019973691610cac565b926136ec565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126103c15760c490565b908160609103126103c15790565b60a03660031901126103c157600435610ea9816107cb565b602435610eb5816103b5565b604435916084356001600160401b0381116103c157602061ffff610eec6000805160206142a8833981519152933690600401610e83565b93610f5f8535610efb816107cb565b610f196105088689013598610f0f8a6107cb565b604081019061348b565b610f23818a613b52565b610f38610f31606435613c51565b5085613e5b565b97610f448915156138c9565b610f56610f508a613bb7565b8c613c88565b9234938b612ea2565b6040519485526001600160a01b0316941692a4005b346103c15760203660031901126103c157600435610f91816107cb565b60018060a01b031660005260086020526020604060002054604051908152f35b346103c15760008060031936011261072957610fcb6122c6565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561103c575b602083101461102657565b634e487b7160e01b600052602260045260246000fd5b91607f169161101b565b90600092918054916110578361100c565b9182825260019384811690816000146110b95750600114611079575b50505050565b90919394506000526020928360002092846000945b8386106110a5575050505001019038808080611073565b80548587018301529401938590820161108e565b9294505050602093945060ff191683830152151560051b01019038808080611073565b906103d16110f09260405193848092611046565b0383610c70565b346103c15760203660031901126103c15761ffff600435611117816103b5565b1660005260016020526106a4610b4861113a604060002060405192838092611046565b604051918291602083526020830190610613565b60e03660031901126103c157600435611166816107cb565b602435611172816103b5565b604435916001600160401b03906084358281116103c1576111979036906004016103d3565b91909260a435818116918282036103c15760c4359081116103c1576111c0903690600401610e83565b906111f78235956111d0876107cb565b6111ef6111e5602086013595610f0f876107cb565b9990923691610cac565b973691610cac565b928760ff60065416600014611262579360209593610f56610f5f946112306000805160206142a88339815191529a958561ffff9a6130d7565b61124561123e606435613c51565b5088613e5b565b9a6112518c15156138c9565b8d61125b8d613bb7565b9033613d15565b50508293919251611290576000805160206142a88339815191529460209461ffff94610f56610f5f94611230565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103c15760003660031901126103c157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103c15760403660031901126103c1576020610dc0600435611344816103b5565b61ffff60243591611354836103b5565b166000526002835260406000209061ffff16600052602052604060002090565b346103c15760003660031901126103c1576000546040516001600160a01b039091168152602090f35b346103c15760003660031901126103c1576004546040516001600160a01b039091168152602090f35b346103c1576000806003193601126107295760405181600c546113e88161100c565b808452906001908181169081156107015750600114611411576106a48461069881880382610c70565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061145757505050816106a4936106989282010193610688565b805485850187015292850192810161143b565b346103c157602060ff6114a961ffff610d9f8461148636610ce3565b9490911660005260078252604060002082604051948386809551938492016105f0565b54166040519015158152f35b346103c15760203660031901126103c15761ffff6004356114d5816103b5565b166000526001602052610b486114f5604060002060405192838092611046565b805115611513576106988161150d6106a49351613283565b9061409b565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103c15760403660031901126103c157600435611575816107cb565b602435903360005260096020526115a28160406000209060018060a01b0316600052602052604060002090565b54918083106115c3576115b792039033612518565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103c15760e03660031901126103c157600435611633816103b5565b6001600160401b03906064358281116103c1576116549036906004016103d3565b61165f929192610400565b60a4359161166c8361095f565b60c4359586116103c1576116876116979636906004016103d3565b95909460443590602435906134bd565b60408051928352602083019190915290f35b346103c1576116b736610ad8565b906116c06122c6565b604051926020928083858701376116ec6034868381013060601b88820152036014810188520186610c70565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c6b5761172683611720865461100c565b8661322f565b80601f84116001146117965750918080926117859695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b9461178b575b50501b916000199060031b1c19161790555b60405193849384613214565b0390a180f35b015192503880611767565b91939498601f1984166117ae87600052602060002090565b938a905b828210611815575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611785989694106117fc575b505050811b019055611779565b015160001960f88460031b161c191690553880806117ef565b8088869782949787015181550196019401906117b2565b346103c15760403660031901126103c15761081160043561184c816107cb565b6024359033612410565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760403660031901126103c157602060ff6114a96024356118bf816107cb565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103c15760203660031901126103c1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611925816107cb565b61192d6122c6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126103c157600490565b60c0906101231901126103c15761012490565b6102203660031901126103c15761198f36611955565b61199836610e72565b906119a236611966565b6101e435906001600160401b03928383116103c157366023840112156103c1578260040135918483116103c1573660246101a08502860101116103c157610204359485116103c157610019956119fe60249636906004016103d3565b96909501926129f3565b346103c15760003660031901126103c15760206040516127108152f35b346103c15760803660031901126103c157600435611a42816103b5565b602435611a4e816103b5565b6064356001600160401b0381116103c157611a6d9036906004016103d3565b9092611a776122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103c15760008094611aee604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916131f3565b03925af180156107c257611afe57005b80611b0b61001992610c58565b806105e5565b346103c15760003660031901126103c157600e546040516001600160a01b039091168152602090f35b611b4336610416565b9161ffff86949296166000526005602052611b8a81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611c4c57611c3b8483611c347fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611c2084611c088e8a8f611c479f908f611bee90611be1611c029436908d610cac565b60208151910120146133fe565b61ffff166000526005602052604060002090565b916133e5565b906001600160401b0316600052602052604060002090565b55611c2c36878d610cac565b933691610cac565b91886136ec565b60405195869586613454565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103c15760003660031901126103c157600d546040516001600160a01b039091168152602090f35b346103c15760403660031901126103c1576020610dc0600435611ce8816107cb565b60243590611cf5826107cb565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760603660031901126103c157600435611d82816103b5565b602435611d8e816103b5565b60443591611d9a6122c6565b8215611e1557611c477f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611def8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103c15760003660031901126103c157602060405160018152f35b346103c15760203660031901126103c1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435611eae8161095f565b611eb66122c6565b151560ff196006541660ff821617600655604051908152a1005b346103c1576101003660031901126103c157600435611eee816103b5565b6001600160401b03906024358281116103c157611f0f9036906004016103d3565b91906044359084821682036103c157608435611f2a816107cb565b60c4359586116103c157611f456100199636906004016103d3565b94909360e4359660a43594606435936135b3565b346103c157611f6736610ad8565b9190611f716122c6565b60009161ffff81168352600160209080825260408520916001600160401b038711610c6b57611faa87611fa4855461100c565b8561322f565b8590601f88116001146120115750918680879893611785957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612006575b501b906000198460031b1c191617905560405193849384613214565b880135925038611fea565b90601f19881661202685600052602060002090565b9288905b82821061208c575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611785969410612072575b505082811b019055611779565b870135600019600386901b60f8161c191690553880612065565b808685968294968c0135815501950193019061202a565b346103c15760403660031901126103c157602060ff6114a96024356120c7816107cb565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c157602060ff600654166040519015158152f35b346103c15760203660031901126103c15760043561212d816107cb565b6121356122c6565b6001600160a01b03908116801561218357600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103c15760803660031901126103c1576004356121f4816103b5565b60243590612201826103b5565b61220c6044356107cb565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c2576106a49160009161228a575b5060405191829182610638565b6122a5913d8091833e61229d8183610c70565b810190613195565b3861227d565b346103c15760003660031901126103c1576020604051308152f35b6000546001600160a01b031633036122da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ad357565b6051019081605111610ad357565b91908201809211610ad357565b1561236457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156123bc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124c5576124aa826000805160206142c8833981519152946124c094169661244a88151561235d565b6001600160a01b038116600090815260086020526040902061248f90859054612475828210156123b5565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156125f25782169384156125a257806125917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461257a6124c09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b03808216600090815260096020908152604080832093861683529290522090919054926001840161267b5750505050565b8084106126965761268d930391612518565b38808080611073565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b35610649816107cb565b35610649816103b5565b908160209103126103c157516106498161095f565b6040513d6000823e3d90fd5b1561271757565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b1561275a57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b908160209103126103c15751610649816103b5565b60a0809180356127bf8161095f565b1515845260208101356127d1816107cb565b600180841b03809116602086015261ffff60408301356127f0816103b5565b16604086015260608201356060860152608082013561280e816107cb565b1660808501520135910152565b359060ff821682036103c157565b9190808252602080920192916000905b828210612847575050505090565b909192938061286160019261285b88610969565b15159052565b61287761286f848801610969565b151582850152565b61288f6040612887818901610969565b151590830152565b6128a9606061289f8189016103c6565b61ffff1690830152565b6128c860806128b98189016107dc565b6001600160a01b031690830152565b6128d860a0612887818901610969565b6128e860c06128b98189016107dc565b6128f860e06128b98189016107dc565b6101008087013590820152610120808701359082015261292861014061291f81890161281b565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612839565b969594906129ee9360a06101e096946001600160401b036129dc946103098d521660208c01528035612980816107cb565b600180841b0380911660408d015280602083013561299d816107cb565b1660608d0152604082013560808d01526060820135838d015260808201356129c4816107cb565b1660c08c0152013560e08a01526101008901906127b0565b610200806101c0890152870191612829565b930152565b9491926001600160a01b039260209290918386018486612a12836126db565b16612c0f575b5050612a23886126db565b8533911603612baf575b612a45612a39896126db565b6001600160a01b031690565b98604089013597612a5589613c51565b5094612a608b6126db565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa80156107c2576000805160206142a88339815191529b612b068f969a612b699b612b649a612ad6612b6f9f84908c99612b1499612b82575b50613e5b565b50612af7612aed612ae8368e8d610cac565b612d3c565b5095915050613bb7565b946040519788968a880161294f565b03601f198101835282610c70565b612b31612b20886126e5565b612b2b368887610cac565b9061304d565b612b5e612b54612b4c612a39612b468b6126e5565b976126db565b9389016126db565b9334963691610cac565b93612ea2565b6126e5565b946126db565b604051938452169261ffff1691602090a4565b612ba1908c8d3d10612ba8575b612b998183610c70565b81019061279b565b5038612ad0565b503d612b8f565b612c0a612bea33612bbf8b6126db565b6001600160a01b03908116600090815260096020908152604080832093909416825291909152205490565b612bfb60408b013580921015612753565b33612c058b6126db565b612643565b612a2d565b600d54612c719290612c29906001600160a01b0316612a39565b612c3b612c35876126e5565b926126db565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107c257612c8d91600091612c94575b50612710565b3884612a18565b612cb49150863d8811612cba575b612cac8183610c70565b8101906126ef565b38612c87565b503d612ca2565b15612cc857565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15612d0957565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115612de4575b5015612da757600283015193602284015193600261ffff8716600181148015612d9e575b612d7a90612cc1565b612d85871515612d02565b14612d8d5750565b925090506056604283015192015190565b50808214612d71565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138612d4d565b15612df657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92612e6f61064997959361ffff612e7d9416865260c0602087015260c0860190610613565b908482036040860152610613565b6001600160a01b0391821660608401529316608082015280830360a090910152610613565b94612ecb9193929561ffff81166000526001602052612ed2604060002060405194858092611046565b0384610c70565b825115612f5757612ee4855182613126565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103c157600096612f3991604051998a988997889662c5803160e81b885260048801612e4a565b03925af180156107c257612f4a5750565b80611b0b6103d192610c58565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15612fbc57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561300857565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106130925761ffff60226103d19301519116600052600260205260406000206103096000526020526040600020549061308b821515612fb5565b1015613001565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9190602281511061309257602261ffff9101519216600052600260205261310c60406000206001600052602052604060002090565b54908101809111610ad3576103d19161308b821515612fb5565b61ffff16600052600360205260406000205490811561318b575b1161314757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613140565b6020818303126103c1578051906001600160401b0382116103c1570181601f820112156103c15780516131c781610c91565b926131d56040519485610c70565b818452602082840101116103c15761064991602080850191016105f0565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff610649959316815281602082015201916131f3565b90601f811161323d57505050565b600091825260208220906020601f850160051c83019410613279575b601f0160051c01915b82811061326e57505050565b818155600101613262565b9092508290613259565b601319810191908211610ad357565b605019810191908211610ad357565b9290916133135a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061330d826132ff6132de60a483018a610613565b6001600160401b038816606484015282810360231901608484015288610613565b03601f198101845283610c70565b3061424a565b939015613322575b5050505050565b61332b94613335565b388080808061331b565b91936133d27fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956133e0939561ffff8151602083012096169586600052600560205261339983610d9f60208b604060002082604051948386809551938492016105f0565b556001600160401b036133be604051988998895260a060208a015260a0890190610613565b921660408701528582036060870152610613565b908382036080850152610613565b0390a1565b6020919283604051948593843782019081520301902090565b1561340557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916134809060609461ffff6001600160401b0394999897991685526080602086015260808501916131f3565b951660408201520152565b903590601e19813603018212156103c157018035906001600160401b0382116103c1576020019181360383136103c157565b94919598979061125b6134e66040996134de6134ec97613509993691610cac565b943691610cac565b97613bb7565b928451968794859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c257600090819361354c57509190565b905061047791925060403d8111610a7557610a668183610c70565b939694916135959061064999979461ffff6001600160401b039416875260c0602088015260c08701916131f3565b961660408401526060830152608082015260a08185039101526131f3565b9196979298959493909430330361364d576135cf908530613fe7565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103c157600098899561363d936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613567565b0393f180156107c257612f4a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103c1576020825192015190565b9192610649959361ffff6136d79316845260018060a01b0316602084015260a0604084015260a0830190610613565b92151560608201526080818403910152610613565b92919060ff6136fa846141ef565b16806138745750505060ff61370e826141ef565b161580613869575b61371f90613cce565b61373161372b8261419f565b9161423a565b90916001600160a01b03918284161561385f575b613779906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b91831692831561381a577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf916137da61ffff926137c06137bb87600a54612350565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206142c88339815191526040518061380589829190602083019252565b0390a3604051938452169180602081016124c0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613745565b508051602914613716565b600103613884576103d19361399a565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b156138d057565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b0361394360e0989461ffff6129ee9995168d5260208d61010091829101528d0190610613565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610613565b6001600160401b0361398f60409396959496606084526060840190610613565b951660208201520152565b90916139a584613d82565b90916139d66139cf87611c086139c98b61ffff166000526007602052604060002090565b8c610d3c565b5460ff1690565b91613a0c6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b9288888b8315613b08575b505050853b15613abd5794613a5e969461330d948a946132ff948d99600014613ab65750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613911565b9015613aab575090613aa661ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461396f565b0390a2565b926103d19492613335565b1692613a3f565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506133e0915050565b90611c08613b3d92613b3789613b22613b4a979b30613f84565b9961ffff166000526007602052604060002090565b90610d3c565b805460ff19166001179055565b88888b613a17565b60065460ff1615613b995760228251106130925761ffff60226103d1930151911660005260026020526040600020600080526020526040600020549061308b821515612fb5565b505161129057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115613c3957046001600160401b0390818111613bf4571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613ba1565b81810292918115918404141715610ad357565b7f00000000000000000000000000000000000000000000000000000000000000008015613c3957810690818103908111610ad35791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c6b5760405290565b15613cd557565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152613d7281518092602086860191016105f0565b8101036051810184520182610c70565b90613d9a600160ff613d93856141ef565b1614613cce565b613da38261419f565b90613dad8361423a565b906049845110613e1e576049840151936051815110613de257613ddf605182015191613dd98151613292565b9061411b565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103613f1d575b8015613ece5781613ea384613e9660009560018060a01b03166000526008602052604060002090565b5461247582821015613f2d565b55613eb183600a5403600a55565b6040518381526000805160206142c883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b613f28833384612643565b613e6d565b15613f3457565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561381a57600a5490828201809211610ad357600092613fd86020926000805160206142c883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106499183916001600160a01b038116308114159081614013575b50156124105761093e833383612643565b905033141538614002565b1561402557565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561406257565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6140af826140a881612334565b101561401e565b6140bc828251101561405b565b816140d4575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106141085750508252601f01601f191660405290565b90928351815260208091019301906140f0565b614128826140a881612334565b61413d815161413684612342565b111561405b565b81614155575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061418c5750508252601f01601f191660405290565b9092835181526020809101930190614174565b60218151106141b257602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106141ff576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613de2576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c6b5783926040526096875282602088019560a036883760208451940192f1903d906096821161429e575b6000908286523e9190565b6096915061429356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200cf6c7212110e2cfcc0af6709c525a6863bb295d1b045948cae94d83533535e664736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103b057806301ffc9a7146103ab57806306fdde03146103a657806307e0db17146103a1578063095ea7b31461039c5780630df374831461039757806310ddb1371461039257806318160ddd1461032e57806323b872dd1461038d578063313ce56714610388578063365260b414610383578063395093511461037e5780633d8b38f6146103795780633f1f4fa41461037457806342d65a8d1461036f578063447705151461036a5780634c42899a1461036a5780635b8c41e6146103655780635c975abb1461036057806366ad5c8a1461035b578063695ef6bf1461035657806370a0823114610351578063715018a61461034c5780637533d7881461034757806376203b4814610342578063857749b01461033d5780638cfd8f5c146103385780638da5cb5b146103335780639358928b1461032e578063950c8a741461032957806395d89b41146103245780639bdb98121461031f5780639f38369a1461031a578063a457c2d714610315578063a4c51df514610310578063a6c3d1651461030b578063a9059cbb14610306578063b353aaa714610301578063ba03a8d7146102fc578063baf3292d146102f7578063c056a8de146102f2578063c4461834146102ed578063cbed8b9c146102e8578063ce8849ed146102e3578063d1deba1f146102de578063dbd01de1146102d9578063dd62ed3e146102d4578063de406577146102cf578063df2a5b3b146102ca578063e6a20ae6146102c5578063eab45d9c146102c0578063eaffd49a146102bb578063eb8d72b7146102b6578063ec6d062b146102b1578063ed629c5c146102ac578063f2fde38b146102a7578063f5ecbdbc146102a25763fc0c546a0361000e576122ab565b6121d7565b612110565b6120ed565b6120a3565b611f59565b611ed0565b611e6e565b611e52565b611d65565b611d20565b611cc6565b611c9d565b611b3a565b611b11565b611a25565b611a08565b611979565b6118e5565b61189b565b611856565b61182c565b6116a9565b611616565b611558565b6114b5565b61146a565b6113c6565b61139d565b6108e5565b611374565b611322565b6112e4565b61114e565b6110f7565b610fb1565b610f74565b610e91565b610dec565b610dc9565b610d62565b610c26565b610ba5565b610b6c565b610b10565b610a7c565b610974565b610943565b610903565b61085b565b61081c565b6107e7565b61072c565b61064c565b61058f565b61047b565b61ffff8116036103c157565b600080fd5b35906103d1826103b5565b565b9181601f840112156103c1578235916001600160401b0383116103c157602083818601950101116103c157565b608435906001600160401b03821682036103c157565b9060806003198301126103c15760043561042f816103b5565b916001600160401b03906024358281116103c15781610450916004016103d3565b9390939260443581811681036103c157926064359182116103c157610477916004016103d3565b9091565b346103c15761048936610416565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054a5761050f61051792610019976105086104ee6104e98a61ffff166000526001602052604060002090565b6110dc565b8051908184149182610540575b508161051d575b50612def565b3691610cac565b923691610cac565b926132a1565b905061052a368486610cac565b6020815191012090602081519101201438610502565b15159150386104fb565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103c15760203660031901126103c15760043563ffffffff60e01b81168091036103c157602090631f7ecdf760e01b81149081156105d4575b506040519015158152f35b6301ffc9a760e01b149050386105c9565b60009103126103c157565b60005b8381106106035750506000910152565b81810151838201526020016105f3565b9060209161062c815180928185528580860191016105f0565b601f01601f1916010190565b906020610649928181520190610613565b90565b346103c1576000806003193601126107295760405181600b5461066e8161100c565b8084529060019081811690811561070157506001146106a8575b6106a48461069881880382610c70565b60405191829182610638565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106ee57505050816106a4936106989282010193610688565b80548585018701529285019281016106d2565b6106a496506106989450602092508593915060ff191682840152151560051b82010193610688565b80fd5b346103c157600060203660031901126107295760043561074b816103b5565b6107536122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c2576107b6575080f35b6107bf90610c58565b80f35b612704565b5080fd5b6001600160a01b038116036103c157565b35906103d1826107cb565b346103c15760403660031901126103c157610811600435610807816107cb565b6024359033612518565b602060405160018152f35b346103c15760403660031901126103c15761ffff60043561083c816103b5565b6108446122c6565b166000526003602052602435604060002055600080f35b346103c157600060203660031901126107295760043561087a816103b5565b6108826122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c2576107b6575080f35b346103c15760003660031901126103c1576020600a54604051908152f35b346103c15760603660031901126103c157610811600435610923816107cb565b60243561092f816107cb565b6044359161093e833383612643565b612410565b346103c15760003660031901126103c157602060405160128152f35b801515036103c157565b35906103d18261095f565b346103c15760a03660031901126103c157600435610991816103b5565b6064359061099e8261095f565b608435906001600160401b0382116103c1576109c361050860409336906004016103d3565b906109fa6109dd6109d5604435613bb7565b602435613c88565b928451958694859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c2576000908192610a4b575b50604080519182526020820192909252f35b9050610a6e915060403d8111610a75575b610a668183610c70565b810190613692565b9038610a39565b503d610a5c565b346103c15760403660031901126103c157600435610a99816107cb565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ad3576108119133612518565b61231e565b9060406003198301126103c157600435610af1816103b5565b91602435906001600160401b0382116103c157610477916004016103d3565b346103c157602061ffff610b5d610b2636610ad8565b9390911660005260018452610b48610b4f604060002060405192838092611046565b0382610c70565b848151910120923691610cac565b82815191012014604051908152f35b346103c15760203660031901126103c15761ffff600435610b8c816103b5565b1660005260036020526020604060002054604051908152f35b346103c157610bb336610ad8565b9190610bbd6122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103c157604051928380926342d65a8d60e01b825281610c146000988997889460048501613214565b03925af180156107c2576107b6575080f35b346103c15760003660031901126103c157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c6b57604052565b610c42565b90601f801991011681019081106001600160401b03821117610c6b57604052565b6001600160401b038111610c6b57601f01601f191660200190565b929192610cb882610c91565b91610cc66040519384610c70565b8294818452818301116103c1578281602093846000960137010152565b60606003198201126103c157600435610cfb816103b5565b916024356001600160401b03928382116103c157806023830112156103c157816024610d2c93600401359101610cac565b9160443590811681036103c15790565b602090610d569282604051948386809551938492016105f0565b82019081520301902090565b346103c1576020610dc061ffff610d9f83610d7c36610ce3565b9490911660005260058252604060002082604051948386809551938492016105f0565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103c15760003660031901126103c157602060ff601154166040519015158152f35b346103c157610dfa36610416565b9192949390303303610e1e5761050f610e1892610019973691610cac565b926136ec565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126103c15760c490565b908160609103126103c15790565b60a03660031901126103c157600435610ea9816107cb565b602435610eb5816103b5565b604435916084356001600160401b0381116103c157602061ffff610eec6000805160206142a8833981519152933690600401610e83565b93610f5f8535610efb816107cb565b610f196105088689013598610f0f8a6107cb565b604081019061348b565b610f23818a613b52565b610f38610f31606435613c51565b5085613e5b565b97610f448915156138c9565b610f56610f508a613bb7565b8c613c88565b9234938b612ea2565b6040519485526001600160a01b0316941692a4005b346103c15760203660031901126103c157600435610f91816107cb565b60018060a01b031660005260086020526020604060002054604051908152f35b346103c15760008060031936011261072957610fcb6122c6565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561103c575b602083101461102657565b634e487b7160e01b600052602260045260246000fd5b91607f169161101b565b90600092918054916110578361100c565b9182825260019384811690816000146110b95750600114611079575b50505050565b90919394506000526020928360002092846000945b8386106110a5575050505001019038808080611073565b80548587018301529401938590820161108e565b9294505050602093945060ff191683830152151560051b01019038808080611073565b906103d16110f09260405193848092611046565b0383610c70565b346103c15760203660031901126103c15761ffff600435611117816103b5565b1660005260016020526106a4610b4861113a604060002060405192838092611046565b604051918291602083526020830190610613565b60e03660031901126103c157600435611166816107cb565b602435611172816103b5565b604435916001600160401b03906084358281116103c1576111979036906004016103d3565b91909260a435818116918282036103c15760c4359081116103c1576111c0903690600401610e83565b906111f78235956111d0876107cb565b6111ef6111e5602086013595610f0f876107cb565b9990923691610cac565b973691610cac565b928760ff60065416600014611262579360209593610f56610f5f946112306000805160206142a88339815191529a958561ffff9a6130d7565b61124561123e606435613c51565b5088613e5b565b9a6112518c15156138c9565b8d61125b8d613bb7565b9033613d15565b50508293919251611290576000805160206142a88339815191529460209461ffff94610f56610f5f94611230565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103c15760003660031901126103c157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103c15760403660031901126103c1576020610dc0600435611344816103b5565b61ffff60243591611354836103b5565b166000526002835260406000209061ffff16600052602052604060002090565b346103c15760003660031901126103c1576000546040516001600160a01b039091168152602090f35b346103c15760003660031901126103c1576004546040516001600160a01b039091168152602090f35b346103c1576000806003193601126107295760405181600c546113e88161100c565b808452906001908181169081156107015750600114611411576106a48461069881880382610c70565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061145757505050816106a4936106989282010193610688565b805485850187015292850192810161143b565b346103c157602060ff6114a961ffff610d9f8461148636610ce3565b9490911660005260078252604060002082604051948386809551938492016105f0565b54166040519015158152f35b346103c15760203660031901126103c15761ffff6004356114d5816103b5565b166000526001602052610b486114f5604060002060405192838092611046565b805115611513576106988161150d6106a49351613283565b9061409b565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103c15760403660031901126103c157600435611575816107cb565b602435903360005260096020526115a28160406000209060018060a01b0316600052602052604060002090565b54918083106115c3576115b792039033612518565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103c15760e03660031901126103c157600435611633816103b5565b6001600160401b03906064358281116103c1576116549036906004016103d3565b61165f929192610400565b60a4359161166c8361095f565b60c4359586116103c1576116876116979636906004016103d3565b95909460443590602435906134bd565b60408051928352602083019190915290f35b346103c1576116b736610ad8565b906116c06122c6565b604051926020928083858701376116ec6034868381013060601b88820152036014810188520186610c70565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c6b5761172683611720865461100c565b8661322f565b80601f84116001146117965750918080926117859695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b9461178b575b50501b916000199060031b1c19161790555b60405193849384613214565b0390a180f35b015192503880611767565b91939498601f1984166117ae87600052602060002090565b938a905b828210611815575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611785989694106117fc575b505050811b019055611779565b015160001960f88460031b161c191690553880806117ef565b8088869782949787015181550196019401906117b2565b346103c15760403660031901126103c15761081160043561184c816107cb565b6024359033612410565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760403660031901126103c157602060ff6114a96024356118bf816107cb565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103c15760203660031901126103c1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611925816107cb565b61192d6122c6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126103c157600490565b60c0906101231901126103c15761012490565b6102203660031901126103c15761198f36611955565b61199836610e72565b906119a236611966565b6101e435906001600160401b03928383116103c157366023840112156103c1578260040135918483116103c1573660246101a08502860101116103c157610204359485116103c157610019956119fe60249636906004016103d3565b96909501926129f3565b346103c15760003660031901126103c15760206040516127108152f35b346103c15760803660031901126103c157600435611a42816103b5565b602435611a4e816103b5565b6064356001600160401b0381116103c157611a6d9036906004016103d3565b9092611a776122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103c15760008094611aee604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916131f3565b03925af180156107c257611afe57005b80611b0b61001992610c58565b806105e5565b346103c15760003660031901126103c157600e546040516001600160a01b039091168152602090f35b611b4336610416565b9161ffff86949296166000526005602052611b8a81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611c4c57611c3b8483611c347fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611c2084611c088e8a8f611c479f908f611bee90611be1611c029436908d610cac565b60208151910120146133fe565b61ffff166000526005602052604060002090565b916133e5565b906001600160401b0316600052602052604060002090565b55611c2c36878d610cac565b933691610cac565b91886136ec565b60405195869586613454565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103c15760003660031901126103c157600d546040516001600160a01b039091168152602090f35b346103c15760403660031901126103c1576020610dc0600435611ce8816107cb565b60243590611cf5826107cb565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760603660031901126103c157600435611d82816103b5565b602435611d8e816103b5565b60443591611d9a6122c6565b8215611e1557611c477f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611def8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103c15760003660031901126103c157602060405160018152f35b346103c15760203660031901126103c1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435611eae8161095f565b611eb66122c6565b151560ff196006541660ff821617600655604051908152a1005b346103c1576101003660031901126103c157600435611eee816103b5565b6001600160401b03906024358281116103c157611f0f9036906004016103d3565b91906044359084821682036103c157608435611f2a816107cb565b60c4359586116103c157611f456100199636906004016103d3565b94909360e4359660a43594606435936135b3565b346103c157611f6736610ad8565b9190611f716122c6565b60009161ffff81168352600160209080825260408520916001600160401b038711610c6b57611faa87611fa4855461100c565b8561322f565b8590601f88116001146120115750918680879893611785957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612006575b501b906000198460031b1c191617905560405193849384613214565b880135925038611fea565b90601f19881661202685600052602060002090565b9288905b82821061208c575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611785969410612072575b505082811b019055611779565b870135600019600386901b60f8161c191690553880612065565b808685968294968c0135815501950193019061202a565b346103c15760403660031901126103c157602060ff6114a96024356120c7816107cb565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c157602060ff600654166040519015158152f35b346103c15760203660031901126103c15760043561212d816107cb565b6121356122c6565b6001600160a01b03908116801561218357600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103c15760803660031901126103c1576004356121f4816103b5565b60243590612201826103b5565b61220c6044356107cb565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c2576106a49160009161228a575b5060405191829182610638565b6122a5913d8091833e61229d8183610c70565b810190613195565b3861227d565b346103c15760003660031901126103c1576020604051308152f35b6000546001600160a01b031633036122da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ad357565b6051019081605111610ad357565b91908201809211610ad357565b1561236457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156123bc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124c5576124aa826000805160206142c8833981519152946124c094169661244a88151561235d565b6001600160a01b038116600090815260086020526040902061248f90859054612475828210156123b5565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156125f25782169384156125a257806125917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461257a6124c09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b03808216600090815260096020908152604080832093861683529290522090919054926001840161267b5750505050565b8084106126965761268d930391612518565b38808080611073565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b35610649816107cb565b35610649816103b5565b908160209103126103c157516106498161095f565b6040513d6000823e3d90fd5b1561271757565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b1561275a57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b908160209103126103c15751610649816103b5565b60a0809180356127bf8161095f565b1515845260208101356127d1816107cb565b600180841b03809116602086015261ffff60408301356127f0816103b5565b16604086015260608201356060860152608082013561280e816107cb565b1660808501520135910152565b359060ff821682036103c157565b9190808252602080920192916000905b828210612847575050505090565b909192938061286160019261285b88610969565b15159052565b61287761286f848801610969565b151582850152565b61288f6040612887818901610969565b151590830152565b6128a9606061289f8189016103c6565b61ffff1690830152565b6128c860806128b98189016107dc565b6001600160a01b031690830152565b6128d860a0612887818901610969565b6128e860c06128b98189016107dc565b6128f860e06128b98189016107dc565b6101008087013590820152610120808701359082015261292861014061291f81890161281b565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612839565b969594906129ee9360a06101e096946001600160401b036129dc946103098d521660208c01528035612980816107cb565b600180841b0380911660408d015280602083013561299d816107cb565b1660608d0152604082013560808d01526060820135838d015260808201356129c4816107cb565b1660c08c0152013560e08a01526101008901906127b0565b610200806101c0890152870191612829565b930152565b9491926001600160a01b039260209290918386018486612a12836126db565b16612c0f575b5050612a23886126db565b8533911603612baf575b612a45612a39896126db565b6001600160a01b031690565b98604089013597612a5589613c51565b5094612a608b6126db565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa80156107c2576000805160206142a88339815191529b612b068f969a612b699b612b649a612ad6612b6f9f84908c99612b1499612b82575b50613e5b565b50612af7612aed612ae8368e8d610cac565b612d3c565b5095915050613bb7565b946040519788968a880161294f565b03601f198101835282610c70565b612b31612b20886126e5565b612b2b368887610cac565b9061304d565b612b5e612b54612b4c612a39612b468b6126e5565b976126db565b9389016126db565b9334963691610cac565b93612ea2565b6126e5565b946126db565b604051938452169261ffff1691602090a4565b612ba1908c8d3d10612ba8575b612b998183610c70565b81019061279b565b5038612ad0565b503d612b8f565b612c0a612bea33612bbf8b6126db565b6001600160a01b03908116600090815260096020908152604080832093909416825291909152205490565b612bfb60408b013580921015612753565b33612c058b6126db565b612643565b612a2d565b600d54612c719290612c29906001600160a01b0316612a39565b612c3b612c35876126e5565b926126db565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107c257612c8d91600091612c94575b50612710565b3884612a18565b612cb49150863d8811612cba575b612cac8183610c70565b8101906126ef565b38612c87565b503d612ca2565b15612cc857565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15612d0957565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115612de4575b5015612da757600283015193602284015193600261ffff8716600181148015612d9e575b612d7a90612cc1565b612d85871515612d02565b14612d8d5750565b925090506056604283015192015190565b50808214612d71565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138612d4d565b15612df657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92612e6f61064997959361ffff612e7d9416865260c0602087015260c0860190610613565b908482036040860152610613565b6001600160a01b0391821660608401529316608082015280830360a090910152610613565b94612ecb9193929561ffff81166000526001602052612ed2604060002060405194858092611046565b0384610c70565b825115612f5757612ee4855182613126565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103c157600096612f3991604051998a988997889662c5803160e81b885260048801612e4a565b03925af180156107c257612f4a5750565b80611b0b6103d192610c58565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15612fbc57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561300857565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106130925761ffff60226103d19301519116600052600260205260406000206103096000526020526040600020549061308b821515612fb5565b1015613001565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9190602281511061309257602261ffff9101519216600052600260205261310c60406000206001600052602052604060002090565b54908101809111610ad3576103d19161308b821515612fb5565b61ffff16600052600360205260406000205490811561318b575b1161314757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613140565b6020818303126103c1578051906001600160401b0382116103c1570181601f820112156103c15780516131c781610c91565b926131d56040519485610c70565b818452602082840101116103c15761064991602080850191016105f0565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff610649959316815281602082015201916131f3565b90601f811161323d57505050565b600091825260208220906020601f850160051c83019410613279575b601f0160051c01915b82811061326e57505050565b818155600101613262565b9092508290613259565b601319810191908211610ad357565b605019810191908211610ad357565b9290916133135a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061330d826132ff6132de60a483018a610613565b6001600160401b038816606484015282810360231901608484015288610613565b03601f198101845283610c70565b3061424a565b939015613322575b5050505050565b61332b94613335565b388080808061331b565b91936133d27fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956133e0939561ffff8151602083012096169586600052600560205261339983610d9f60208b604060002082604051948386809551938492016105f0565b556001600160401b036133be604051988998895260a060208a015260a0890190610613565b921660408701528582036060870152610613565b908382036080850152610613565b0390a1565b6020919283604051948593843782019081520301902090565b1561340557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916134809060609461ffff6001600160401b0394999897991685526080602086015260808501916131f3565b951660408201520152565b903590601e19813603018212156103c157018035906001600160401b0382116103c1576020019181360383136103c157565b94919598979061125b6134e66040996134de6134ec97613509993691610cac565b943691610cac565b97613bb7565b928451968794859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c257600090819361354c57509190565b905061047791925060403d8111610a7557610a668183610c70565b939694916135959061064999979461ffff6001600160401b039416875260c0602088015260c08701916131f3565b961660408401526060830152608082015260a08185039101526131f3565b9196979298959493909430330361364d576135cf908530613fe7565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103c157600098899561363d936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613567565b0393f180156107c257612f4a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103c1576020825192015190565b9192610649959361ffff6136d79316845260018060a01b0316602084015260a0604084015260a0830190610613565b92151560608201526080818403910152610613565b92919060ff6136fa846141ef565b16806138745750505060ff61370e826141ef565b161580613869575b61371f90613cce565b61373161372b8261419f565b9161423a565b90916001600160a01b03918284161561385f575b613779906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b91831692831561381a577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf916137da61ffff926137c06137bb87600a54612350565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206142c88339815191526040518061380589829190602083019252565b0390a3604051938452169180602081016124c0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613745565b508051602914613716565b600103613884576103d19361399a565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b156138d057565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b0361394360e0989461ffff6129ee9995168d5260208d61010091829101528d0190610613565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610613565b6001600160401b0361398f60409396959496606084526060840190610613565b951660208201520152565b90916139a584613d82565b90916139d66139cf87611c086139c98b61ffff166000526007602052604060002090565b8c610d3c565b5460ff1690565b91613a0c6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b9288888b8315613b08575b505050853b15613abd5794613a5e969461330d948a946132ff948d99600014613ab65750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613911565b9015613aab575090613aa661ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461396f565b0390a2565b926103d19492613335565b1692613a3f565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506133e0915050565b90611c08613b3d92613b3789613b22613b4a979b30613f84565b9961ffff166000526007602052604060002090565b90610d3c565b805460ff19166001179055565b88888b613a17565b60065460ff1615613b995760228251106130925761ffff60226103d1930151911660005260026020526040600020600080526020526040600020549061308b821515612fb5565b505161129057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115613c3957046001600160401b0390818111613bf4571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613ba1565b81810292918115918404141715610ad357565b7f00000000000000000000000000000000000000000000000000000000000000008015613c3957810690818103908111610ad35791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c6b5760405290565b15613cd557565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152613d7281518092602086860191016105f0565b8101036051810184520182610c70565b90613d9a600160ff613d93856141ef565b1614613cce565b613da38261419f565b90613dad8361423a565b906049845110613e1e576049840151936051815110613de257613ddf605182015191613dd98151613292565b9061411b565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103613f1d575b8015613ece5781613ea384613e9660009560018060a01b03166000526008602052604060002090565b5461247582821015613f2d565b55613eb183600a5403600a55565b6040518381526000805160206142c883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b613f28833384612643565b613e6d565b15613f3457565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561381a57600a5490828201809211610ad357600092613fd86020926000805160206142c883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106499183916001600160a01b038116308114159081614013575b50156124105761093e833383612643565b905033141538614002565b1561402557565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561406257565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6140af826140a881612334565b101561401e565b6140bc828251101561405b565b816140d4575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106141085750508252601f01601f191660405290565b90928351815260208091019301906140f0565b614128826140a881612334565b61413d815161413684612342565b111561405b565b81614155575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061418c5750508252601f01601f191660405290565b9092835181526020809101930190614174565b60218151106141b257602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106141ff576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613de2576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c6b5783926040526096875282602088019560a036883760208451940192f1903d906096821161429e575b6000908286523e9190565b6096915061429356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200cf6c7212110e2cfcc0af6709c525a6863bb295d1b045948cae94d83533535e664736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/typechain/tapioca-bar/Penrose.ts b/src/typechain/tapioca-bar/Penrose.ts index b1b2d79c..3d112179 100644 --- a/src/typechain/tapioca-bar/Penrose.ts +++ b/src/typechain/tapioca-bar/Penrose.ts @@ -76,6 +76,7 @@ export interface PenroseInterface extends utils.Interface { "registerSingularityMasterContract(address,uint8)": FunctionFragment; "setBigBangEthMarket(address)": FunctionFragment; "setBigBangEthMarketDebtRate(uint256)": FunctionFragment; + "setCluster(address)": FunctionFragment; "setConservator(address)": FunctionFragment; "setUsdoToken(address)": FunctionFragment; "singularityMarkets()": FunctionFragment; @@ -161,6 +162,8 @@ export interface PenroseInterface extends utils.Interface { | "setBigBangEthMarket(address)" | "setBigBangEthMarketDebtRate" | "setBigBangEthMarketDebtRate(uint256)" + | "setCluster" + | "setCluster(address)" | "setConservator" | "setConservator(address)" | "setUsdoToken" @@ -472,6 +475,14 @@ export interface PenroseInterface extends utils.Interface { functionFragment: "setBigBangEthMarketDebtRate(uint256)", values: [PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "setCluster", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setCluster(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setConservator", values: [PromiseOrValue] @@ -818,6 +829,11 @@ export interface PenroseInterface extends utils.Interface { functionFragment: "setBigBangEthMarketDebtRate(uint256)", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "setCluster", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setCluster(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setConservator", data: BytesLike @@ -908,6 +924,7 @@ export interface PenroseInterface extends utils.Interface { events: { "BigBangEthMarketDebtRate(uint256)": EventFragment; "BigBangEthMarketSet(address)": EventFragment; + "ClusterSet(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "LogDeploy(address,bytes,address)": EventFragment; "LogTwTapFeesDeposit(uint256,uint256)": EventFragment; @@ -930,6 +947,10 @@ export interface PenroseInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "BigBangEthMarketSet(address)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "ClusterSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "ClusterSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1004,6 +1025,17 @@ export type BigBangEthMarketSetEvent = TypedEvent< export type BigBangEthMarketSetEventFilter = TypedEventFilter; +export interface ClusterSetEventObject { + old: string; + _new: string; +} +export type ClusterSetEvent = TypedEvent< + [string, string], + ClusterSetEventObject +>; + +export type ClusterSetEventFilter = TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1473,6 +1505,16 @@ export interface Penrose extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConservator( _conservator: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -1868,6 +1910,16 @@ export interface Penrose extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConservator( _conservator: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -2255,6 +2307,16 @@ export interface Penrose extends BaseContract { overrides?: CallOverrides ): Promise; + setCluster( + _newCluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setCluster(address)"( + _newCluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setConservator( _conservator: PromiseOrValue, overrides?: CallOverrides @@ -2369,6 +2431,15 @@ export interface Penrose extends BaseContract { _newAddress?: PromiseOrValue | null ): BigBangEthMarketSetEventFilter; + "ClusterSet(address,address)"( + old?: PromiseOrValue | null, + _new?: PromiseOrValue | null + ): ClusterSetEventFilter; + ClusterSet( + old?: PromiseOrValue | null, + _new?: PromiseOrValue | null + ): ClusterSetEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -2775,6 +2846,16 @@ export interface Penrose extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConservator( _conservator: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -3177,6 +3258,16 @@ export interface Penrose extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _newCluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConservator( _conservator: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } diff --git a/src/typechain/tapioca-bar/factories/Penrose__factory.ts b/src/typechain/tapioca-bar/factories/Penrose__factory.ts index 113d4026..65abab20 100644 --- a/src/typechain/tapioca-bar/factories/Penrose__factory.ts +++ b/src/typechain/tapioca-bar/factories/Penrose__factory.ts @@ -76,6 +76,25 @@ const _abi = [ name: "BigBangEthMarketSet", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "old", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_new", + type: "address", + }, + ], + name: "ClusterSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -917,6 +936,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "_newCluster", + type: "address", + }, + ], + name: "setCluster", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1115,7 +1147,7 @@ const _abi = [ ] as const; const _bytecode = - "0x610120604090808252346200036c5760c081620040ac803803809162000026828562000371565b8339810103126200036c578051916001600160a01b03918284168085036200036c5760209384830151918183168093036200036c5762000068858501620003ab565b916200007760608601620003ab565b9260808601519561ffff87168097036200036c5760a00151918083168093036200036c576000805489519b91976001600160a01b0319959291861691338a7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080528560055416176005558360a05284331617178655610653998a81019060018060401b039181811083821117620003585790806200013a868f95948a9062003a59978886396001600160a01b0391821681529116602082015260400190565b039089f09b8c156200034e578b8480620001839c9d9e9f16961695868b52600f82528d8b2081898254161790558d51809c8192632c1876e560e21b998a845260048401620003c0565b03818c8b5af1998a156200034457899a6200030b575b506001600160601b03998a1660c05260e08890528b519281840192831184841017620002f757878493620001e5938b9386396001600160a01b0391821681529116602082015260400190565b039087f08015620002ed57958a94928282979593620002299916951692838352600f8752858c8420918254161790558a5197889586948593845260048401620003c0565b03925af1958615620002e1578196620002a5575b505050610100931683526611c37937e08000600e5561ffff19600d541617600d55516136709182620003e9833960805182818161108301528181611ae70152612af9015260a05182611829015260c0518261088e015260e05182610ea6015251816118720152f35b909180939650813d8311620002d9575b620002c1818362000371565b81010312620002d6575051923880806200023d565b80fd5b503d620002b5565b508451903d90823e3d90fd5b89513d88823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b9099508c81813d83116200033c575b62000326818362000371565b81010312620003385751983862000199565b8880fd5b503d6200031a565b8c513d8b823e3d90fd5b8a513d8a823e3d90fd5b634e487b7160e01b89526041600452602489fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200039557604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200036c57565b600181526001600160a01b03918216602082015291166040820152600060608201526080019056fe608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000365578063078dfbe7146200035f57806307bd3e201462000359578063099bfe4c14620003535780630e7ee227146200034d578063170f4e8d14620003475780631f54245b14620003415780632324248e146200033b5780632a68ecfa1462000335578063334f4f0f146200032f57806333a4eebe14620003295780633555d7a6146200032357806339e02851146200031d5780633fc15f151462000317578063433e762d14620003115780634cc707ab146200030b5780634e71e0c814620003055780635c975abb14620002ff5780636100ff1414620002f95780636e570c6314620002f357806372a54ab414620002ed578063761b3a5114620002e757806386c8e21d14620002e15780638da5cb5b14620002db5780638e7d8a2a14620002d55780638fd4365414620002cf5780639488c4dc14620002c9578063bafa44cc14620002c3578063bafe4f1414620002bd578063c24795f814620002b7578063c6d9ce3414620002b1578063c7cee53214620002ab578063c99fb76e14620002a5578063c9f5f54e146200029f578063cd9792e51462000299578063ce8849ed1462000293578063d5089cf6146200028d578063dbd01de11462000287578063de4065771462000281578063e30c3978146200027b578063e6abad491462000275578063f07794c5146200026f578063f189e10f1462000269578063f8974de01462000263578063fa74f0b5146200025d578063fba96be814620002575763fee63f17146200025157600080fd5b62001dbc565b62001d72565b62001c99565b62001bdd565b62001bbd565b62001b61565b62001b41565b62001b16565b62001acf565b62001aa4565b620019d4565b620019a9565b62001966565b62001895565b62001858565b62001811565b62001741565b620016f4565b620016b1565b6200153f565b62001494565b62001430565b620013ea565b620013bf565b6200139f565b620012f5565b620012a8565b62001262565b6200101f565b62000ff7565b62000f66565b62000ef9565b62000ed5565b62000e8e565b62000dd1565b62000d0d565b62000c8b565b62000b63565b62000b07565b62000a5c565b62000a2f565b620008f7565b62000874565b62000773565b62000552565b62000426565b62000382565b6001600160a01b038116036200037d57565b600080fd5b346200037d5760203660031901126200037d57600435620003a3816200036b565b6000546001600160a01b039190620003bf9083163314620020e0565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200037d57565b6044359062000424826200040a565b565b346200037d5760603660031901126200037d5760043562000447816200036b565b6024359062000456826200040a565b6044359062000465826200040a565b60018060a01b036000936200047f828654163314620020e0565b15620005305781169182159081159162000527575b5015620004ea578254620004d79290620004be906001600160a01b03165b6001600160a01b031690565b600080516020620035bb8339815191528580a362001e4e565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503862000494565b91501660018060a01b0319600154161760015580f35b60009103126200037d57565b346200037d5760003660031901126200037d576020600954604051908152f35b9181601f840112156200037d578235916001600160401b0383116200037d576020808501948460051b0101116200037d57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117620005d757604052565b620005a5565b6001600160401b038111620005d757604052565b601f909101601f19168101906001600160401b03821190821017620005d757604052565b6001600160401b038111620005d75760051b60200190565b6001600160401b038111620005d757601f01601f191660200190565b92919262000657826200062d565b91620006676040519384620005f1565b8294818452818301116200037d578281602093846000960137010152565b60005b838110620006995750506000910152565b818101518382015260200162000688565b90602091620006c58151809281855285808601910162000685565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200075c57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106200072b5750505050505090565b90919293949584806200074b600193601f198682030187528a51620006aa565b98019301930191949392906200071a565b8251151586529484019491840191600101620006ee565b346200037d5760603660031901126200037d576001600160401b036004358181116200037d57620007a990369060040162000572565b60249081358481116200037d57366023820112156200037d57806004013592620007d38462000615565b93620007e36040519586620005f1565b808552602096828887019260051b850101933685116200037d57838101925b8584106200083857620008228989896200081b62000415565b9262002665565b906200083460405192839283620006d1565b0390f35b83358381116200037d578201366043820112156200037d578a91620008688392369060448a820135910162000649565b81520193019262000802565b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b828110620008d9575050505090565b83516001600160a01b031685529381019392810192600101620008ca565b346200037d57600080600319360112620009ad57600954906200091a8262000615565b916040916200092c83519485620005f1565b818452600981526020600080516020620035fb8339815191528186015b8484106200096d576200083486620009618962002e33565b905191829182620008b1565b600183819288516200097f81620005bb565b6200099e60ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062000949565b80fd5b60606003198201126200037d57600435620009cb816200036b565b916001600160401b0391602435908382116200037d57806023830112156200037d5781600401359384116200037d57602484830101116200037d57602401919060443562000a19816200040a565b90565b6001600160a01b03909116815260200190565b602062000a4a62000a4036620009b0565b9291909162001f56565b6040516001600160a01b039091168152f35b346200037d5760003660031901126200037d576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000ab65760005260206000200190600090565b62000a87565b634e487b7160e01b600052602160045260246000fd5b6003111562000add57565b62000abc565b6001600160a01b03909116815260408101929190600382101562000add5760200152565b346200037d5760203660031901126200037d576004356008548110156200037d576008600052600080516020620035db8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760403660031901126200037d576004356001600160401b0381116200037d5762000b9890369060040162000572565b906024359162000ba8836200036b565b60018060a01b039260009362000bc3818654163314620020e0565b62000bd760ff60045460a01c161562002139565b81161562000c4b57835b82811062000c1f57505062000bf890429262002195565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c448362000c3e62000c38600195888a62002178565b62002189565b62002a1f565b0162000be1565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200037d5760203660031901126200037d5760043562000cb860018060a01b03600054163314620020e0565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200037d5760043562000cfe816200036b565b9060243562000a19816200036b565b346200037d5762000d1e3662000ce3565b60018060a01b039062000dbb60009362000d3d848654163314620020e0565b62000db584821694858752600b60205262000d64600160ff60408a20541615151462002386565b841693848752600c60205262000d8260ff604089205416156200245f565b848752600c60205260408720805460ff1916600117905562000daf8162000da985620011fa565b62001ee4565b62001214565b62001e70565b6000805160206200359b8339815191528380a380f35b6000805160206200359b83398151915262000e3f6200083462000df436620009b0565b6000805490966001600160a01b03959490939162000e169087163314620020e0565b85851694858952600b60205262000e39600160ff60408c20541615151462002386565b62001f56565b91821662000e4f811515620023d0565b62000e5d833b151562002415565b808552600c60205260408520805460ff1916600117905562000e7f8362001e8f565b60405195858796a38262000a1c565b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d57602061ffff600d5416604051908152f35b346200037d5762000f0a3662000ce3565b60018060a01b039062000f5060009362000f29848654163314620020e0565b62000db584821694858752600a60205262000d64600160ff60408a20541615151462002386565b6000805160206200357b8339815191528380a380f35b346200037d57600080600319360112620009ad576001546001600160a01b039081163381900362000fb35780620004d792845416600080516020620035bb8339815191528580a362001e4e565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200037d5760003660031901126200037d57602060ff60045460a01c166040519015158152f35b346200037d5760203660031901126200037d5760043562001040816200036b565b60018060a01b036000916200105a828454163314620020e0565b600680546001600160a01b0319166001600160a01b0383851690811691909117909155916040517f000000000000000000000000000000000000000000000000000000000000000082169290610653808201906001600160401b03821183831017620005d75786868493620010e99362002f2886396001600160a01b0391821681529116602082015260400190565b039086f0928315620011f4576200110d6020936200116d951662000db5846200122e565b620011296200111c836200122e565b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af18015620011f45762001194918491620011bf575b506001600160601b0316600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b620011e5915060203d8111620011ec575b620011dc8183620005f1565b81019062002252565b3862001185565b503d620011d0565b62001f4a565b6001600160a01b0316600090815260036020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b03166000908152600f6020526040902090565b6001600160a01b03166000908152600c6020526040902090565b346200037d5760203660031901126200037d5760043562001283816200036b565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200037d5760203660031901126200037d576004356010548110156200037d5760106000526000805160206200361b83398151915201546040516001600160a01b039091168152602090f35b346200037d57600080600319360112620009ad5760085490620013188262000615565b916040916200132a83519485620005f1565b818452600881526020600080516020620035db8339815191528186015b8484106200135f576200083486620009618962002e33565b600183819288516200137181620005bb565b6200139060ff8754868060a01b038116845260a01c168483016200212c565b81520192019301929062001347565b346200037d5760003660031901126200037d576020600754604051908152f35b346200037d5760003660031901126200037d576000546040516001600160a01b039091168152602090f35b346200037d5760203660031901126200037d576004356200140b816200036b565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200037d5760403660031901126200037d5760043562001451816200036b565b6024359060018060a01b038091166000526003602052604060002080548310156200037d57602092620014849162000a9d565b90549060031b1c16604051908152f35b6000805160206200357b833981519152620014fc62000834620014b736620009b0565b6000805490966001600160a01b039594909391620014d99087163314620020e0565b85851694858952600a60205262000e39600160ff60408c20541615151462002386565b9182166200150c811515620023d0565b6200151a833b151562002415565b808552600c6020526040808620805460ff191660011790555195869580a38262000a1c565b346200037d57600080600319360112620009ad5760046200156860ff825460a01c161562002139565b6200158d6001620015846200157d3362001248565b5460ff1690565b151514620021e1565b600d8054620015a89060101c6001600160a01b0316620004b2565b3314620015b3578280f35b60105490620015c16200283f565b84805b848110620015d457505050508280f35b620015f1620015e48285620025c2565b516001600160a01b031690565b84546200160a9060101c6001600160a01b0316620004b2565b6001600160a01b0382169190821415908162001699575b506200163d575b506200163591506200263f565b8590620015c4565b803b1562001695578290876040518095819363f8ba4cff60e01b83525af1918215620011f457620016359262001677575b87925062001628565b80620016876200168e92620005dd565b8062000546565b386200166e565b8280fd5b620016aa91506200157d9062001248565b3862001621565b346200037d5760203660031901126200037d576020600435620016d4816200036b565b60018060a01b038091166000526002825260406000205416604051908152f35b346200037d5760003660031901126200037d57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200037d57565b359060038210156200037d57565b346200037d5760403660031901126200037d5760043562001762816200036b565b6200176c62001723565b60018060a01b0360009262001786828554163314620020e0565b16808352600b602052620017a260ff6040852054161562002262565b620017c8620017b0620022a8565b828152620017c284602083016200212c565b620022c3565b808352600b60205260408320805460ff19166001179055620017ea8262000ad2565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200037d576020806003193601126200037d57600435906001600160401b0382116200037d57366023830112156200037d57816004013591620018d98362000615565b91604093620018eb85519485620005f1565b80845260248285019160061b840101923684116200037d57602401905b83821062001920576200083486620009618762002e33565b85823603126200037d5782869182516200193a81620005bb565b843562001947816200036b565b81526200195683860162001733565b8382015281520191019062001908565b346200037d5760203660031901126200037d57602060043562001989816200036b565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200037d5760003660031901126200037d576004546040516001600160a01b039091168152602090f35b346200037d5760403660031901126200037d57600435620019f5816200036b565b620019ff62001723565b60018060a01b0360009262001a19828554163314620020e0565b16808352600a60205262001a3560ff6040852054161562002262565b62001a5b62001a43620022a8565b82815262001a5584602083016200212c565b62002333565b808352600a60205260408320805460ff1916600117905562001a7d8262000ad2565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200037d5760003660031901126200037d576005546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200037d5760003660031901126200037d576001546040516001600160a01b039091168152602090f35b346200037d5760003660031901126200037d576020600e54604051908152f35b346200037d5760203660031901126200037d576004356009548110156200037d576009600052600080516020620035fb8339815191520154604051908190620008349060a081901c60ff16906001600160a01b03168362000ae3565b346200037d5760003660031901126200037d576020600854604051908152f35b346200037d5760203660031901126200037d5760043562001bfe816200040a565b60045460ff9062001c1a336001600160a01b03831614620021e1565b60a01c1615159080151582811462001c5e5762001c5c927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a36200223d565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200037d5760203660031901126200037d5760043562001cba816200036b565b6000546001600160a01b03919062001cd69083163314620020e0565b818116801562001d305762001c5c92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881859191c995cdcc81b9bdd081d985b1a5960321b6044820152606490fd5b346200037d5760203660031901126200037d57602062001db460043562001d99816200036b565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200037d5760203660031901126200037d5760043562001ddd816200036b565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001e0a57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80546001600160a01b0319166001600160a01b03909216919091179055565b601054600160401b811015620005d757600181018060105581101562000ab65760106000526000805160206200361b8339815191520180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b811015620005d75762001f049160018201815562000a9d565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000da994936001600160a01b038083169392909162002003919062001f7e86151562001e02565b606082901b6001600160601b03191690156200209457603762001fa336898862000649565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b62001ffd8162000db58562001214565b620011fa565b851692833b156200037d57604051631377d1f560e21b815291600083806200203085856004840162001f22565b038134895af1928315620011f4577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b936200207d575b50620020786040519283928362001f22565b0390a3565b80620016876200208d92620005dd565b3862002066565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162001fed565b15620020e857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000add5752565b156200214157565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000ab65760051b0190565b3562000a19816200036b565b604051918291829160005b818110620021b15750505003902090565b919350916001908435620021c5816200036b565b828060a01b0316815260208091019401910191849392620021a0565b15620021e957565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b60ff60a01b191660a09190911b60ff60a01b161790565b6200224d90151560045462002226565b600455565b908160209103126200037d575190565b156200226a57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620022b782620005bb565b60006020838281520152565b600954600160401b811015620005d757600181018060095581101562000ab65760096000528151600080516020620035fb8339815191529091019160209162002316906001600160a01b03168462001e70565b0151600381101562000add576200232f90825462002226565b9055565b600854600160401b811015620005d757600181018060085581101562000ab65760086000528151600080516020620035db8339815191529091019160209162002316906001600160a01b03168462001e70565b156200238e57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e881350c81b9bdd081c9959da5cdd195c995960321b6044820152606490fd5b15620023d857565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200241d57565b60405162461bcd60e51b815260206004820152601a60248201527914195b9c9bdcd94e8819195c1b1bde5b595b9d0819985a5b195960321b6044820152606490fd5b156200246757565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b15620024b457565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b90620025008262000615565b6200250f6040519182620005f1565b828152809262002522601f199162000615565b0190602036910137565b90620025388262000615565b620025476040519182620005f1565b82815280926200255a601f199162000615565b019060005b8281106200256c57505050565b8060606020809385010152016200255f565b156200258657565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000ab65760209160051b010190565b3d1562002607573d90620025eb826200062d565b91620025fb6040519384620005f1565b82523d6000602084013e565b606090565b15620026155750565b60405162461bcd60e51b8152602060048201529081906200263b906024830190620006aa565b0390fd5b60001981146200264f5760010190565b634e487b7160e01b600052601160045260246000fd5b90939260006200268060018060a01b038254163314620020e0565b6200269460ff60045460a01c161562002139565b620026a284518714620024ac565b620026ad86620024f4565b93620026b9876200252c565b9687835b87838210620026d25750505050505050509190565b620027ae9282886200279f89806200275d62000c388f8c81620027266200157d6200270c6200111c62000daf62000c388f88819a62002178565b6001600160a01b03166000908152600a6020526040902090565b8015620027f7575b620027399062002386565b620027576200274e62000c3885858562002178565b3b15156200257e565b62002178565b62002769868d620025c2565b519082602083519301915af16200277f620025d7565b6200278b8587620025c2565b52620027988487620025c2565b9015159052565b620027b6575b5050506200263f565b8890620026bd565b620027e081620027d9620027d3620027e794620027ee97620025c2565b51151590565b93620025c2565b516200289c565b906200260c565b878a82620027a5565b5062002739620028376200157d6200281d6200111c62000daf62000c3889898962002178565b6001600160a01b03166000908152600b6020526040902090565b90506200272e565b604051906010548083528260209182820190601060005283600020936000905b82821062002878575050506200042492500383620005f1565b85546001600160a01b0316845260019586019588955093810193909101906200285f565b6103e88151116200295e5760448151106200292c576004810151810190602081602484019303126200037d576024810151906001600160401b0382116200037d5701816043820112156200037d576024810151620028fa816200062d565b926200290a6040519485620005f1565b818452604482840101116200037d5762000a1991604460208501910162000685565b506040516200293b81620005bb565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b506040516200296d81620005bb565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b156200299957565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200037d575162000a19816200036b565b91908260409103126200037d576020825192015190565b908160209103126200037d575162000a19816200040a565b6001600160a01b03908116919062002a4562002a3f6200157d8562001248565b62002991565b604092835192632bd016d360e21b84526020926004956000948087898189895af1968715620011f457869762002e0f575b50861562002e055781516338d52e0f60e01b81529281848a81895afa958615620011f4578994889762002dcd575b50829084519a8b809263226f120560e11b82525afa988915620011f457879962002da9575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af1918215620011f457839262002d76575b501695835163415be3b560e01b815283818062002b5b858a830162000a1c565b03818b5afa968715620011f45762002ba99b8b928b9962002d4c575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a15620011f457889a62002d28575b5016825163095ea7b360e01b9182825283828062002bf38b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af1908115620011f45762002c3a9385938d9362002d06575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af18015620011f45762002cd1575b5050833b1562002ccd57516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af1918215620011f4577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002cb6575b5080a3565b806200168762002cc692620005dd565b3862002cb1565b8480fd5b8162002cf592903d1062002cfe575b62002cec8183620005f1565b81019062002a07565b50388062002c4b565b503d62002ce0565b62002d2090853d871162002cfe5762002cec8183620005f1565b503862002c10565b62002d44919a50833d8511620011ec57620011dc8183620005f1565b983862002bbd565b86939291995062002d6c90843d8611620011ec57620011dc8183620005f1565b9890919262002b77565b62002d9a90863d881162002da1575b62002d918183620005f1565b810190620029f0565b5062002b3b565b503d62002d85565b62002dc5919950823d8411620011ec57620011dc8183620005f1565b973862002ac9565b8391975062002df590823d841162002dfd575b62002dec8183620005f1565b810190620029d8565b969062002aa4565b503d62002de0565b5050505050505050565b8162002e2b9298503d8911620011ec57620011dc8183620005f1565b953862002a76565b908151916000805b84821062002f065762002e4f9150620024f4565b92600091825b82811062002e635750505050565b62002e8162002e738284620025c2565b51516001600160a01b031690565b62002e8c81620011fa565b54906000915b80831062002ea65750505060010162002e55565b90919562002ef762002edc62002ec78962002ec187620011fa565b62000a9d565b905460039190911b1c6001600160a01b031690565b62002ee8838c620025c2565b6001600160a01b039091169052565b60018091019601919062002e92565b60019062002f1d62001d9962002e738587620025c2565b0191019062002e3b56fe60c0346100a157601f61065338819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059690816100bd823960805181818161010b0152818161025e01526102a5015260a05181818160ab01528181610175015261040c0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031357806317d70f7c146102f957806330fa738c146102de57806350188301146102455780637284e416146102d9578063afa91cc61461028d578063ce845d1d14610245578063de4065771461024a578063e3575f0514610245578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024157610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c5565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811060018060401b0382111761022d57845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af161019f610500565b816101f1575b50156101af575080f35b5162461bcd60e51b815260206004820152601c60248201527b109bdc9a5b99d15490cc8c0e88151c985b9cd9995c8819985a5b195960221b6044820152606490fd5b8051801592508215610206575b5050386101a5565b8192509060209181010312610229576020015180151581036102295738806101fe565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103b9565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d65760203660031901126102d6576102d3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c5565b80f35b80fd5b610313565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b4576000806003193601126102d657604080518082016001600160401b038111828210176103a0578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038a57505050828201840152601f01601f19168101030190f35b818101830151888201880152879550820161036c565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b4576000806003193601126102d6576040516370a0823160e01b602080830191825230602480850191909152835291606081016001600160401b038111828210176104b1576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa61043e610500565b90806104a6575b1561046157818180518101031261022957810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610445565b634e487b7160e01b85526041600452602485fd5b156104cc57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055b576001600160401b03903d8281116105455760405192601f8201601f19908116603f01168401908111848210176105455760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea264697066735822122026dba66daf41d2e5c6f8b51cccdba2a03356c140356515cc2d7ff469143af79864736f6c634300081200331105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd674e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212200d436affff2bfb000b263717f2f68a78a0e220cb27ceb5d069cf95bb0d04303664736f6c6343000812003360c0346100a157601f61065338819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059690816100bd823960805181818161010b0152818161025e01526102a5015260a05181818160ab01528181610175015261040c0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031357806317d70f7c146102f957806330fa738c146102de57806350188301146102455780637284e416146102d9578063afa91cc61461028d578063ce845d1d14610245578063de4065771461024a578063e3575f0514610245578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024157610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c5565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811060018060401b0382111761022d57845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af161019f610500565b816101f1575b50156101af575080f35b5162461bcd60e51b815260206004820152601c60248201527b109bdc9a5b99d15490cc8c0e88151c985b9cd9995c8819985a5b195960221b6044820152606490fd5b8051801592508215610206575b5050386101a5565b8192509060209181010312610229576020015180151581036102295738806101fe565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103b9565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d65760203660031901126102d6576102d3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c5565b80f35b80fd5b610313565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b4576000806003193601126102d657604080518082016001600160401b038111828210176103a0578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038a57505050828201840152601f01601f19168101030190f35b818101830151888201880152879550820161036c565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b4576000806003193601126102d6576040516370a0823160e01b602080830191825230602480850191909152835291606081016001600160401b038111828210176104b1576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa61043e610500565b90806104a6575b1561046157818180518101031261022957810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610445565b634e487b7160e01b85526041600452602485fd5b156104cc57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055b576001600160401b03903d8281116105455760405192601f8201601f19908116603f01168401908111848210176105455760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea264697066735822122026dba66daf41d2e5c6f8b51cccdba2a03356c140356515cc2d7ff469143af79864736f6c63430008120033"; + "0x61012060409080825234620003a05760c081620041e38038038091620000268285620003a5565b833981010312620003a0578051916001600160a01b0391828416808503620003a0576020938483015191818316809303620003a05762000068858501620003df565b916200007760608601620003df565b9260808601519561ffff8716809703620003a05760a0015191808316809303620003a0576000805489519b91976001600160a01b0319959291861691338a7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080528560055416176005558360a05284331617178655610657998a81019060018060401b0391818110838211176200038c5790806200013a868f95948a9062003b8c978886396001600160a01b0391821681529116602082015260400190565b039089f09b8c156200038257938316808952600f8c528a892080549d85169d87168e1790558a51632c1876e560e21b808252600160048301526001600160a01b03928316602483015291909d1660448e0152600060648e01529a9b999a989998938c8a6084818c8b5af1998a156200037857899a6200033f575b506001600160601b03998a1660c05260e08890528b5192818401928311848410176200032b5787849362000200938b9386396001600160a01b0391821681529116602082015260400190565b039087f080156200032157948116808752600f8b528987208054929096169390911683179094558751908152600160048201526001600160a01b039384166024820152921660448301526000606483015290919086908390608490829085905af195861562000315578196620002d9575b505050610100931683526611c37937e08000600e5561ffff19600d541617600d55516137979182620003f583396080518281816111d301528181611c3f0152612c71015260a05182611981015260c051826108cb015260e05182610f3e015251816119ca0152f35b909180939650813d83116200030d575b620002f58183620003a5565b810103126200030a5750519238808062000271565b80fd5b503d620002e9565b508451903d90823e3d90fd5b89513d88823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b9099508c81813d831162000370575b6200035a8183620003a5565b810103126200036c57519838620001b4565b8880fd5b503d6200034e565b8c513d8b823e3d90fd5b8a513d8a823e3d90fd5b634e487b7160e01b89526041600452602489fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620003c957604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620003a05756fe608060405260043610156200001357600080fd5b60003560e01c806301da1fd71462000377578063078dfbe7146200037157806307bd3e20146200036b578063099bfe4c14620003655780630e7ee227146200035f578063170f4e8d14620003595780631f54245b14620003535780632324248e146200034d5780632a68ecfa1462000347578063334f4f0f146200034157806333a4eebe146200033b5780633555d7a6146200033557806339e02851146200032f5780633fc15f151462000329578063433e762d1462000323578063437be622146200031d5780634cc707ab14620003175780634e71e0c814620003115780635c975abb146200030b5780636100ff1414620003055780636e570c6314620002ff57806372a54ab414620002f9578063761b3a5114620002f357806386c8e21d14620002ed5780638da5cb5b14620002e75780638e7d8a2a14620002e15780638fd4365414620002db5780639488c4dc14620002d5578063bafa44cc14620002cf578063bafe4f1414620002c9578063c24795f814620002c3578063c6d9ce3414620002bd578063c7cee53214620002b7578063c99fb76e14620002b1578063c9f5f54e14620002ab578063cd9792e514620002a5578063ce8849ed146200029f578063d5089cf61462000299578063dbd01de11462000293578063de406577146200028d578063e30c39781462000287578063e6abad491462000281578063f07794c5146200027b578063f189e10f1462000275578063f8974de0146200026f578063fa74f0b51462000269578063fba96be814620002635763fee63f17146200025d57600080fd5b62001f2d565b62001ee3565b62001e07565b62001d35565b62001d15565b62001cb9565b62001c99565b62001c6e565b62001c27565b62001bfc565b62001b2c565b62001b01565b62001abe565b620019ed565b620019b0565b62001969565b62001899565b6200184c565b62001809565b6200167d565b620015b6565b62001552565b6200150c565b620014e1565b620014c1565b62001417565b620013b9565b62001373565b62001171565b62001149565b6200108b565b6200100d565b62000f91565b62000f6d565b62000f26565b62000e4d565b62000d36565b62000cb4565b62000b8c565b62000b30565b62000a85565b62000a58565b62000934565b620008b1565b620007b0565b62000591565b62000438565b62000394565b6001600160a01b038116036200038f57565b600080fd5b346200038f5760203660031901126200038f57600435620003b5816200037d565b6000546001600160a01b039190620003d190831633146200224f565b600d805462010000600160b01b031916601083901b62010000600160b01b0316179055167f05a3bc54d597552ff0a566bf5b517f1b7594fde92cf27d354e8a5b56cc26ade7600080a2005b801515036200038f57565b6044359062000436826200041c565b565b346200038f5760603660031901126200038f5760043562000459816200037d565b6024359062000468826200041c565b6044359062000477826200041c565b60018060a01b03600093620004918286541633146200224f565b156200056f5781169182159081159162000566575b501562000529578254620005169290620004d0906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038620004a6565b91501660018060a01b0319600154161760015580f35b60009103126200038f57565b346200038f5760003660031901126200038f576020600954604051908152f35b9181601f840112156200038f578235916001600160401b0383116200038f576020808501948460051b0101116200038f57565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200061657604052565b620005e4565b6001600160401b0381116200061657604052565b90601f801991011681019081106001600160401b038211176200061657604052565b6001600160401b038111620006165760051b60200190565b6001600160401b0381116200061657601f01601f191660200190565b92919262000694826200066a565b91620006a4604051938462000630565b8294818452818301116200038f578281602093846000960137010152565b60005b838110620006d65750506000910152565b8181015183820152602001620006c5565b906020916200070281518092818552858086019101620006c2565b601f01601f1916010190565b906040820191604081528151809352606081019260208093019060005b8181106200079957505050818184039101528251908183528083019281808460051b8301019501936000915b848310620007685750505050505090565b909192939495848062000788600193601f198682030187528a51620006e7565b980193019301919493929062000757565b82511515865294840194918401916001016200072b565b346200038f5760603660031901126200038f576001600160401b036004358181116200038f57620007e6903690600401620005b1565b60249081358481116200038f57366023820112156200038f57806004013592620008108462000652565b9362000820604051958662000630565b808552602096828887019260051b850101933685116200038f57838101925b85841062000875576200085f8989896200085862000427565b92620027d0565b9062000871604051928392836200070e565b0390f35b83358381116200038f578201366043820112156200038f578a91620008a58392369060448a820135910162000686565b8152019301926200083f565b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6020908160408183019282815285518094520193019160005b82811062000916575050505090565b83516001600160a01b03168552938101939281019260010162000907565b346200038f57600080600319360112620009ea5760095490620009578262000652565b91604091620009698351948562000630565b818452600981526020600080516020620037428339815191528186015b848410620009aa5762000871866200099e8962002fb7565b905191829182620008ee565b60018381928851620009bc81620005fa565b620009db60ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062000986565b80fd5b60606003198201126200038f5760043562000a08816200037d565b916024356001600160401b03928382116200038f57806023830112156200038f5781600401359384116200038f57602484830101116200038f57602401919060443562000a55816200041c565b90565b602062000a7362000a6936620009ed565b9291909162002097565b6040516001600160a01b039091168152f35b346200038f5760003660031901126200038f576006546040516001600160a01b039091168152602090f35b634e487b7160e01b600052603260045260246000fd5b805482101562000adf5760005260206000200190600090565b62000ab0565b634e487b7160e01b600052602160045260246000fd5b6003111562000b0657565b62000ae5565b6001600160a01b03909116815260408101929190600382101562000b065760200152565b346200038f5760203660031901126200038f576004356008548110156200038f576008600052600080516020620037228339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760403660031901126200038f576004356001600160401b0381116200038f5762000bc1903690600401620005b1565b906024359162000bd1836200037d565b60018060a01b039260009362000bec8186541633146200224f565b62000c0060ff60045460a01c1615620022a8565b81161562000c7457835b82811062000c4857505062000c2190429262002304565b7fdc0aec64e01514853db7bc1f49a7321726ef185b59f680c9bc9edcf499722bc78380a380f35b8062000c6d8362000c6762000c61600195888a620022e7565b620022f8565b62002b8a565b0162000c0a565b60405162461bcd60e51b815260206004820152601860248201527714195b9c9bdcd94e881d1dd5185c081b9bdd081d985b1a5960421b6044820152606490fd5b346200038f5760203660031901126200038f5760043562000ce160018060a01b036000541633146200224f565b80600e557fc6a0012625ed6d4deeafb5c9c0cb3bfb6eb4d39f37aea3e5ca964dc29a421454600080a2005b60409060031901126200038f5760043562000d27816200037d565b9060243562000a55816200037d565b346200038f5762000d473662000d0c565b60018060a01b039062000e2660009362000d668486541633146200224f565b62000e0784821694858752600b60205262000d8d600160ff60408a205416151514620024eb565b841693848752600c60205262000dab60ff60408920541615620025ca565b848752600c60205260408720805460ff191660011790556001600160a01b038316600090815260036020526040902062000ded90829062002025565b62002025565b6001600160a01b0316600090815260026020526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d09428380a380f35b7f4e9173da15b3f07367dc29002c27568aceeaadc25679cc0fffedeb40e13d094262000ecc6200087162000e8136620009ed565b6000805490966001600160a01b03959490939162000ea390871633146200224f565b85851694858952600b60205262000ec6600160ff60408c205416151514620024eb565b62002097565b91821662000edc81151562002538565b62000eea833b15156200257d565b808552600c60205260408520805460ff1916600117905562000f0c8362001fbf565b60405195858796a36001600160a01b031682526020820190565b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f57602061ffff600d5416604051908152f35b346200038f5760203660031901126200038f5760043562000fb2816200037d565b6000546001600160a01b03919062000fce90831633146200224f565b816005549116809282167f03bebf5becbadd9703358ffd62f5a65bddfcc9c20038edae65aebe5542598bf2600080a36001600160a01b03191617600555005b346200038f576200101e3662000d0c565b60018060a01b0390620010646000936200103d8486541633146200224f565b62000e0784821694858752600a60205262000d8d600160ff60408a205416151514620024eb565b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd678380a380f35b346200038f57600080600319360112620009ea576001546001600160a01b039081163381900362001105578062000516928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346200038f5760003660031901126200038f57602060ff60045460a01c166040519015158152f35b346200038f5760203660031901126200038f5760043562001192816200037d565b60018060a01b03600091620011ac8284541633146200224f565b600680546001600160a01b0319166001600160a01b038385169081169190911790915591807f00000000000000000000000000000000000000000000000000000000000000001691604051610657808201908282106001600160401b038311176200061657868684936200123a93620030cb86396001600160a01b0391821681529116602082015260400190565b039086f09283156200136d5762001270602093620012df951662000e078460018060a01b0316600052600f602052604060002090565b6001600160a01b0382166000908152600f602052604090206200129b905b546001600160a01b031690565b604051632c1876e560e21b8152600160048201526001600160a01b039384166024820152921660448301526000606483015290928391908290879082906084820190565b03925af19081156200136d576200130d916bffffffffffffffffffffffff91859162001338575b5016600755565b600754907fa8bcc850e0dd5734a654196b5949251a22dec7d076dcdde7c355a1a2d6006e068380a380f35b6200135e915060203d811162001365575b62001355818362000630565b81019062002395565b3862001306565b503d62001349565b6200208b565b346200038f5760203660031901126200038f5760043562001394816200037d565b60018060a01b0316600052600b602052602060ff604060002054166040519015158152f35b346200038f5760203660031901126200038f576004356010548110156200038f5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201546040516001600160a01b039091168152602090f35b346200038f57600080600319360112620009ea57600854906200143a8262000652565b916040916200144c8351948562000630565b818452600881526020600080516020620037228339815191528186015b848410620014815762000871866200099e8962002fb7565b600183819288516200149381620005fa565b620014b260ff8754868060a01b038116845260a01c168483016200229b565b81520192019301929062001469565b346200038f5760003660031901126200038f576020600754604051908152f35b346200038f5760003660031901126200038f576000546040516001600160a01b039091168152602090f35b346200038f5760203660031901126200038f576004356200152d816200037d565b60018060a01b0316600052600c602052602060ff604060002054166040519015158152f35b346200038f5760403660031901126200038f5760043562001573816200037d565b6024359060018060a01b038091166000526003602052604060002080548310156200038f57602092620015a69162000ac6565b90549060031b1c16604051908152f35b7f1105050c403ad688afa33c2669a46bcffdf42221ee17dd625d05d09f1433cd676200162f62000871620015ea36620009ed565b6000805490966001600160a01b0395949093916200160c90871633146200224f565b85851694858952600a60205262000ec6600160ff60408c205416151514620024eb565b9182166200163f81151562002538565b6200164d833b15156200257d565b808552600c6020526040808620805460ff191660011790555195869580a36001600160a01b031682526020820190565b346200038f57600080600319360112620009ea576004620016a660ff825460a01c1615620022a8565b336000908152600c60205260409020620016d390600190620016ca905b5460ff1690565b15151462002350565b600d8054620016ee9060101c6001600160a01b0316620004c4565b3314620016f9578280f35b6010549062001707620029aa565b84805b8481106200171a57505050508280f35b620017376200172a82856200272d565b516001600160a01b031690565b8454620017509060101c6001600160a01b0316620004c4565b6001600160a01b03821691908214159081620017df575b5062001783575b506200177b9150620027aa565b85906200170a565b803b15620017db578290876040518095819363f8ba4cff60e01b83525af19182156200136d576200177b92620017bd575b8792506200176e565b80620017cd620017d4926200061c565b8062000585565b38620017b4565b8280fd5b6001600160a01b03166000908152600c60205260409020620018029150620016c3565b3862001767565b346200038f5760203660031901126200038f5760206004356200182c816200037d565b60018060a01b038091166000526002825260406000205416604051908152f35b346200038f5760003660031901126200038f57600d5460405160109190911c6001600160a01b03168152602090f35b6024359060038210156200038f57565b359060038210156200038f57565b346200038f5760403660031901126200038f57600435620018ba816200037d565b620018c46200187b565b60018060a01b03600092620018de8285541633146200224f565b16808352600b602052620018fa60ff60408520541615620023a5565b6200192062001908620023eb565b8281526200191a84602083016200229b565b62002406565b808352600b60205260408320805460ff19166001179055620019428262000afb565b7f1626e61c1c5b523bd0070836aceda378b0077e870f824f71892f67f05a8a5bed8380a380f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346200038f576020806003193601126200038f57600435906001600160401b0382116200038f57366023830112156200038f5781600401359162001a318362000652565b9160409362001a438551948562000630565b80845260248285019160061b840101923684116200038f57602401905b83821062001a785762000871866200099e8762002fb7565b85823603126200038f57828691825162001a9281620005fa565b843562001a9f816200037d565b815262001aae8386016200188b565b8382015281520191019062001a60565b346200038f5760203660031901126200038f57602060043562001ae1816200037d565b60018060a01b03809116600052600f825260406000205416604051908152f35b346200038f5760003660031901126200038f576004546040516001600160a01b039091168152602090f35b346200038f5760403660031901126200038f5760043562001b4d816200037d565b62001b576200187b565b60018060a01b0360009262001b718285541633146200224f565b16808352600a60205262001b8d60ff60408520541615620023a5565b62001bb362001b9b620023eb565b82815262001bad84602083016200229b565b62002489565b808352600a60205260408320805460ff1916600117905562001bd58262000afb565b7faad6359463cbbce500bced475975ef17452bdc8cbc6cf5d6bd8080c20d2f7f9f8380a380f35b346200038f5760003660031901126200038f576005546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200038f5760003660031901126200038f576001546040516001600160a01b039091168152602090f35b346200038f5760003660031901126200038f576020600e54604051908152f35b346200038f5760203660031901126200038f576004356009548110156200038f576009600052600080516020620037428339815191520154604051908190620008719060a081901c60ff16906001600160a01b03168362000b0c565b346200038f5760003660031901126200038f576020600854604051908152f35b346200038f5760203660031901126200038f5760043562001d56816200041c565b60045460ff9062001d72336001600160a01b0383161462002350565b60a01c1615159080151582811462001dcc5762001dca927f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396600080a360045460ff60a01b191690151560a01b60ff60a01b1617600455565b005b60405162461bcd60e51b815260206004820152601360248201527250656e726f73653a2073616d6520737461746560681b6044820152606490fd5b346200038f5760203660031901126200038f5760043562001e28816200037d565b6000546001600160a01b03919062001e4490831633146200224f565b818116801562001e9e5762001dca92600454167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a2061646472657373206e6f742076616c69640000000000006044820152606490fd5b346200038f5760203660031901126200038f57602062001f2560043562001f0a816200037d565b6001600160a01b031660009081526003602052604090205490565b604051908152f35b346200038f5760203660031901126200038f5760043562001f4e816200037d565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b1562001f7b57565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e74726163746044820152fd5b601054600160401b8110156200061657600181018060105581101562000adf5760106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b03909216919091179055565b8054600160401b8110156200061657620020459160018201815562000ac6565b819291549060031b9160018060a01b03809116831b921b1916179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b6040513d6000823e3d90fd5b62000de794936001600160a01b0380831693929091620021729190620020bf86151562001f73565b606082901b6bffffffffffffffffffffffff1916901562002203576037620020e936898862000686565b602081519101209160405190733d602d80600a3d3981f3363d3d373d3d3d363d7360601b825260148201526e5af43d82803e903d91602b57fd5bf360881b60288201526000f59788915b6001600160a01b03831660009081526002602052604090206200215890829062000e07565b6001600160a01b0316600090815260036020526040902090565b851692833b156200038f57604051631377d1f560e21b815291600083806200219f85856004840162002063565b038134895af19283156200136d577fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b93620021ec575b50620021e76040519283928362002063565b0390a3565b80620017cd620021fc926200061c565b38620021d5565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b815260148101919091526e5af43d82803e903d91602b57fd5bf360881b60288201526037906000f097889162002133565b156200225757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600382101562000b065752565b15620022b057565b60405162461bcd60e51b815260206004820152600f60248201526e14195b9c9bdcd94e881c185d5cd959608a1b6044820152606490fd5b919081101562000adf5760051b0190565b3562000a55816200037d565b604051918291829160005b818110620023205750505003902090565b91935091600190843562002334816200037d565b828060a01b03168152602080910194019101918493926200230f565b156200235857565b60405162461bcd60e51b815260206004820152601560248201527414195b9c9bdcd94e881d5b985d5d1a1bdc9a5e9959605a1b6044820152606490fd5b908160209103126200038f575190565b15620023ad57565b60405162461bcd60e51b815260206004820152601660248201527514195b9c9bdcd94e881350c81c9959da5cdd195c995960521b6044820152606490fd5b60405190620023fa82620005fa565b60006020838281520152565b600954600160401b8110156200061657600181018060095581101562000adf57600960005281516000805160206200374283398151915290910180546001600160a01b0319166001600160a01b0392909216919091178155906020905b0151600381101562000b0657815460ff60a01b191660a09190911b60ff60a01b16179055565b600854600160401b8110156200061657600181018060085581101562000adf57600860005281516000805160206200372283398151915290910180546001600160a01b0319166001600160a01b03929092169190911781559060209062002463565b15620024f357565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a204d43206e6f7420726567697374657265640000000000006044820152606490fd5b156200254057565b60405162461bcd60e51b815260206004820152601560248201527450656e726f73653a207a65726f206164647265737360581b6044820152606490fd5b156200258557565b60405162461bcd60e51b815260206004820152601a60248201527f50656e726f73653a206465706c6f796d656e74206661696c65640000000000006044820152606490fd5b15620025d257565b60405162461bcd60e51b815260206004820152601d60248201527f50656e726f73653a206d61726b657420616c72656164792061646465640000006044820152606490fd5b156200261f57565b60405162461bcd60e51b81526020600482015260186024820152770a0cadce4dee6ca7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b906200266b8262000652565b6200267a604051918262000630565b82815280926200268d601f199162000652565b0190602036910137565b90620026a38262000652565b620026b2604051918262000630565b8281528092620026c5601f199162000652565b019060005b828110620026d757505050565b806060602080938501015201620026ca565b15620026f157565b60405162461bcd60e51b815260206004820152601460248201527314195b9c9bdcd94e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b805182101562000adf5760209160051b010190565b3d1562002772573d9062002756826200066a565b9162002766604051938462000630565b82523d6000602084013e565b606090565b15620027805750565b60405162461bcd60e51b815260206004820152908190620027a6906024830190620006e7565b0390fd5b6000198114620027ba5760010190565b634e487b7160e01b600052601160045260246000fd5b9093926000620027eb60018060a01b0382541633146200224f565b620027ff60ff60045460a01c1615620022a8565b6200280d8451871462002617565b62002818866200265f565b93620028248762002697565b9687835b878382106200283d5750505050505050509190565b620029199282886200290a8980620028c862000c618f8c8162002891620016c3620028776200128e62000ded62000c618f88819a620022e7565b6001600160a01b03166000908152600a6020526040902090565b801562002962575b620028a490620024eb565b620028c2620028b962000c61858585620022e7565b3b1515620026e9565b620022e7565b620028d4868d6200272d565b519082602083519301915af1620028ea62002742565b620028f685876200272d565b526200290384876200272d565b9015159052565b62002921575b505050620027aa565b889062002828565b6200294b81620029446200293e620029529462002959976200272d565b51151590565b936200272d565b5162002a07565b9062002777565b878a8262002910565b50620028a4620029a2620016c3620029886200128e62000ded62000c61898989620022e7565b6001600160a01b03166000908152600b6020526040902090565b905062002899565b604051906010548083528260209182820190601060005283600020936000905b828210620029e357505050620004369250038362000630565b85546001600160a01b031684526001958601958895509381019390910190620029ca565b6103e881511162002ac957604481511062002a97576004810151810190602081602484019303126200038f576024810151906001600160401b0382116200038f5701816043820112156200038f57602481015162002a65816200066a565b9262002a75604051948562000630565b818452604482840101116200038f5762000a55916044602085019101620006c2565b5060405162002aa681620005fa565b601381527253474c3a206e6f2072657475726e206461746160681b602082015290565b5060405162002ad881620005fa565b601481527353474c3a20726561736f6e20746f6f206c6f6e6760601b602082015290565b1562002b0457565b60405162461bcd60e51b815260206004820152601760248201527614195b9c9bdcd94e88125b9d985b1a59081b585c9ad95d604a1b6044820152606490fd5b908160209103126200038f575162000a55816200037d565b91908260409103126200038f576020825192015190565b908160209103126200038f575162000a55816200041c565b6001600160a01b039081166000818152600c602052604090209092919062002bbd9062002bb790620016c3565b62002afc565b604092835192632bd016d360e21b84526020926004956000948087898189895af19687156200136d57869762002f93575b50861562002f895781516338d52e0f60e01b81529281848a81895afa9586156200136d578994889762002f51575b50829084519a8b809263226f120560e11b82525afa9889156200136d57879962002f2d575b5082516311a5cc7760e31b81528481018a81523060208201819052604082015260006060820152608081018a90527f00000000000000000000000000000000000000000000000000000000000000008316969085908390819060a00103818c8b5af19182156200136d57839262002efa575b50845163415be3b560e01b81526001600160a01b03891687820190815292909116979184908290819060200103818b5afa9687156200136d5762002d2d9b8b928b9962002ed0575b50908592918751809e8194829363442c159960e01b84528c840160409060009294936060820195825260208201520152565b03915afa998a156200136d57889a62002eac575b5016825163095ea7b360e01b9182825283828062002d778b8a83016020600091939293604081019460018060a01b031681520152565b03818c855af19081156200136d5762002dbe9385938d9362002e8a575b508a875180968195829483528d8c840160209093929193604081019460018060a01b031681520152565b03925af180156200136d5762002e55575b5050833b1562002e5157516338ef349f60e21b8152908101918252602082018690529291829184919082908490829060400103925af19182156200136d577f92b356326fc8f7c69349f2ee5dc8f5c9033a648f047bc5ef94eca90ac9f9cca09262002e3a575b5080a3565b80620017cd62002e4a926200061c565b3862002e35565b8480fd5b8162002e7992903d1062002e82575b62002e70818362000630565b81019062002b72565b50388062002dcf565b503d62002e64565b62002ea490853d871162002e825762002e70818362000630565b503862002d94565b62002ec8919a50833d8511620013655762001355818362000630565b983862002d41565b86939291995062002ef090843d8611620013655762001355818362000630565b9890919262002cfb565b62002f1e90863d881162002f25575b62002f15818362000630565b81019062002b5b565b5062002cb3565b503d62002f09565b62002f49919950823d8411620013655762001355818362000630565b973862002c41565b8391975062002f7990823d841162002f81575b62002f70818362000630565b81019062002b43565b969062002c1c565b503d62002f64565b5050505050505050565b8162002faf9298503d8911620013655762001355818362000630565b953862002bee565b908151916000805b848210620030a95762002fd391506200265f565b92600091825b82811062002fe75750505050565b6200300562002ff782846200272d565b51516001600160a01b031690565b6001600160a01b038116600090815260036020526040902054906000915b808310620030375750505060010162002fd9565b9091956200309a6200307f6200306a89620030648760018060a01b03166000526003602052604060002090565b62000ac6565b905460039190911b1c6001600160a01b031690565b6200308b838c6200272d565b6001600160a01b039091169052565b60018091019601919062003023565b600190620030c062001f0a62002ff785876200272d565b0191019062002fbf56fe60c0346100a157601f61065738819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059a90816100bd823960805181818161010b0152818161026101526102a8015260a05181818160ab01528181610177015261040f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031657806317d70f7c146102fc57806330fa738c146102e157806350188301146102485780637284e416146102dc578063afa91cc614610290578063ce845d1d14610248578063de4065771461024d578063e3575f0514610248578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024457610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c8565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811067ffffffffffffffff82111761023057845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af16101a1610503565b816101f4575b50156101b1575080f35b5162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b8051801592508215610209575b5050386101a7565b819250906020918101031261022c5760200151801515810361022c573880610201565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103bd565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d95760203660031901126102d9576102d6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c8565b80f35b80fd5b610316565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b8576000806003193601126102d9576040805181810181811067ffffffffffffffff8211176103a4578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038e57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610370565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b8576000806003193601126102d957604051602090818101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104b4576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa610441610503565b90806104a9575b1561046457818180518101031261022c57810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610448565b634e487b7160e01b85526041600452602485fd5b156104cf57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055f5767ffffffffffffffff903d8281116105495760405192601f8201601f19908116603f01168401908111848210176105495760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea2646970667358221220e997ae9a99753f92acf0efcb0233b285aef4f9877c4a3dcf0622d106373c0c2064736f6c63430008120033f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee36e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212201a5209daf3cfe8d7f397946636efef40742c0e3ba62648cbc371c73f014d77aa64736f6c6343000812003360c0346100a157601f61065738819003918201601f19168301916001600160401b038311848410176100a65780849260409485528339810103126100a15780516001600160a01b039182821682036100a157602001519182168092036100a15760805260a05260405161059a90816100bd823960805181818161010b0152818161026101526102a8015260a05181818160ab01528181610177015261040f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe604060808152600436101561001357600080fd5b600090813560e01c806306fdde031461031657806317d70f7c146102fc57806330fa738c146102e157806350188301146102485780637284e416146102dc578063afa91cc614610290578063ce845d1d14610248578063de4065771461024d578063e3575f0514610248578063f3fef3a3146100de5763f6b4dfb41461009857600080fd5b346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100da57806003193601126100da576001600160a01b036004358181169081900361024457610132827f00000000000000000000000000000000000000000000000000000000000000001633146104c8565b8251602081019163a9059cbb60e01b835260248201526024356044820152604481526080810181811067ffffffffffffffff82111761023057845251849283929083907f0000000000000000000000000000000000000000000000000000000000000000165af16101a1610503565b816101f4575b50156101b1575080f35b5162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b8051801592508215610209575b5050386101a7565b819250906020918101031261022c5760200151801515810361022c573880610201565b8280fd5b634e487b7160e01b86526041600452602486fd5b8380fd5b6103bd565b50346100da57816003193601126100da57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346102d95760203660031901126102d9576102d6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146104c8565b80f35b80fd5b610316565b50346100da57816003193601126100da576020905160018152f35b50346100da57816003193601126100da5751908152602090f35b346103b8576000806003193601126102d9576040805181810181811067ffffffffffffffff8211176103a4578252600b81526020906a4e6f20737472617465677960a81b8282015282519382859384528251928382860152825b84811061038e57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610370565b634e487b7160e01b84526041600452602484fd5b600080fd5b346103b8576000806003193601126102d957604051602090818101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104b4576040525183918291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa610441610503565b90806104a9575b1561046457818180518101031261022c57810151604051908152f35b60405162461bcd60e51b815260048101839052601d60248201527f426f72696e6745524332303a2042616c616e63654f66206661696c65640000006044820152606490fd5b508181511015610448565b634e487b7160e01b85526041600452602485fd5b156104cf57565b60405162461bcd60e51b815260206004820152600c60248201526b09cdee840b2d2cad8c884def60a31b6044820152606490fd5b3d1561055f5767ffffffffffffffff903d8281116105495760405192601f8201601f19908116603f01168401908111848210176105495760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b60609056fea2646970667358221220e997ae9a99753f92acf0efcb0233b285aef4f9877c4a3dcf0622d106373c0c2064736f6c63430008120033"; type PenroseConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/Test__factory.ts b/src/typechain/tapioca-bar/factories/Test__factory.ts index 3e3d0e02..098caf80 100644 --- a/src/typechain/tapioca-bar/factories/Test__factory.ts +++ b/src/typechain/tapioca-bar/factories/Test__factory.ts @@ -23,7 +23,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea2646970667358221220c28fd35c78247af01bc5bac2850840981ff2ca4ef5d18879bf8f176b70c067cc64736f6c63430008120033"; + "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033"; type TestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/MarketERC20__factory.ts b/src/typechain/tapioca-bar/factories/markets/MarketERC20__factory.ts index 1f5e6adc..91674709 100644 --- a/src/typechain/tapioca-bar/factories/markets/MarketERC20__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/MarketERC20__factory.ts @@ -416,7 +416,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014060409080825234610198576110a8803803809161001f828561019d565b83398101602080838303126101985782516001600160401b0393848211610198570182601f820112156101985780519084821161016e5785519361006c601f8401601f191685018661019d565b82855283838301011161019857829060005b8381106101845750506000918401015283518481018181108582111761016e57600191839187528281520192603160f81b84528281519101209220908260e052610100948286524660a0528051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f948585528284015260608301524660808301523060a083015260a0825260c08201948286109086111761016e578490525190206080523060c052610120908152610ee792836101c1843960805183610a54015260a05183610b1e015260c05183610a1e015260e05183610aa301525182610ac901525181610a800152f35b634e487b7160e01b600052604160045260246000fd5b81810183015186820184015284920161007e565b600080fd5b601f909101601f19168101906001600160401b0382119082101761016e5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461090257508063095ea7b3146108db57806318160ddd146108bf5780631da8bf101461081157806323b872dd146106745780633644e5151461065157806370a08231146106185780637ecebe00146105df5780637fa0b84e146105ad578063910dd7c814610372578063a9059cbb1461028f578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd61094e565b6100d5610969565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b3661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826101df9694928d9260016101d79896019055604051916020830193600080516020610e52833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b5190206101a6610a1b565b9060405190602082019261190160f01b845260228301526042820152604281526101cf81610a00565b519020610d27565b919091610c12565b16036101f1576101ee92610dfa565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102a961094e565b60243580928115801590610360575b6102f0575b50506040519182526001600160a01b0316903390600080516020610e9283398151915290602090a3602060405160018152f35b3381526001602052604081205461030983821015610b44565b6001600160a01b0384169033829003610324575b50506102bd565b60409361033b91610336841515610b89565b610bce565b338352600160205283832055815220610355838254610bf1565b90558138808061031d565b50336001600160a01b038416146102b8565b50346100f95760403660031901126100f9576001600160401b036004358181116105815736602382011215610581578060040135908282116105995760405192601f8301601f19908116603f01168401908111848210176105855790849160405282845260208401923660248284010111610581578060246020930185378401015260243561ffff8116810361057d57610100918284805181010312610579575180151581036105795761042860408501610bfe565b9161043560608601610bfe565b9460808101519460a08201519260c08301519160ff831683036105755760e08401519301519380421161024a57851561056057600080516020610e52833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461054c579161ffff610509989694926101d798969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526104fa816109ce565b602081519101206101a6610a1b565b6001600160a01b038381169116036101f15715610536576101ee926001600160a01b039081169116610dfa565b6101ee926001600160a01b039081169116610dac565b634e487b7160e01b8d52601160045260248dfd5b600080516020610e7283398151915291610479565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f9576105d46105ca61094e565b6024359033610dac565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361060761094e565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361064061094e565b168152600183522054604051908152f35b50346100f957806003193601126100f957602061066c610a1b565b604051908152f35b50346100f95760603660031901126100f95761068e61094e565b90610697610969565b60443591826106d5575b506040519182526001600160a01b03908116921690600080516020610e9283398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906106fe82861015610b44565b861693848403610713575b50505050506106a1565b83865260028352604080872033885284528620546001810161077d575b509260016020969361075b8794604097610336600080516020610e928339815191529c9a1515610b89565b9285525283832055815220610771858254610bf1565b90559138808581610709565b909181106107d1579260016020969361075b8a600080516020610e928339815191529a98956107ae8260409a610bce565b86895260028552898920338a528552898920559497509497995050939650610730565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f9576108203661097f565b9083959495421161024a576001600160a01b03878116808a52600460205260408a208054919692959290600019831461023657826108b09694928d9260016101d79896019055604051916020830193600080516020610e72833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261019b816109ce565b16036101f1576101ee92610dac565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f9576105d46108f861094e565b6024359033610dfa565b90503461094a57604036600319011261094a57604060209261092261094e565b61092a610969565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b038216820361096457565b600080fd5b602435906001600160a01b038216820361096457565b60e0906003190112610964576001600160a01b03906004358281168103610964579160243590811681036109645790604435906064359060843560ff81168103610964579060a4359060c43590565b61010081019081106001600160401b038211176109ea57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176109ea57604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b1b575b15610a76577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109ea5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a4d565b15610b4b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610b9057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610bdb57565b634e487b7160e01b600052601160045260246000fd5b91908201809211610bdb57565b51906001600160a01b038216820361096457565b6005811015610d115780610c235750565b60018103610c6b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610cb85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610cc157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610da05791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d935781516001600160a01b03811615610d8d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122071e76137c0b000026748d85278d3ade3bcde71fe0aaaa78b16352569a8724e6e64736f6c63430008120033"; + "0x61014060409080825234610198576110b5803803809161001f828561019d565b83398101602080838303126101985782516001600160401b0393848211610198570182601f820112156101985780519084821161016e5785519361006c601f8401601f191685018661019d565b82855283838301011161019857829060005b8381106101845750506000918401015283518481018181108582111761016e57600191839187528281520192603160f81b84528281519101209220908260e052610100948286524660a0528051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f948585528284015260608301524660808301523060a083015260a0825260c08201948286109086111761016e578490525190206080523060c052610120908152610ef492836101c1843960805183610a9f015260a05183610b6b015260c05183610a69015260e05183610aee01525182610b1401525181610acb0152f35b634e487b7160e01b600052604160045260246000fd5b81810183015186820184015284920161007e565b600080fd5b601f909101601f19168101906001600160401b0382119082101761016e5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a201461094b57508063095ea7b31461092457806318160ddd146109085780631da8bf101461084857806323b872dd146106ab5780633644e5151461068857806370a082311461064f5780637ecebe00146106165780637fa0b84e146105e4578063910dd7c814610384578063a9059cbb146102a1578063d505accf146100fc5763dd62ed3e146100af57600080fd5b346100f95760403660031901126100f95760406020916100cd610997565b6100d56109b2565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b80fd5b50346100f95761010b366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826101f19694928d9260016101e998960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b5190206101b8610a66565b9060405190602082019261190160f01b845260228301526042820152604281526101e181610a4a565b519020610d74565b919091610c5f565b16036102035761020092610e47565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346100f95760403660031901126100f9576102bb610997565b60243580928115801590610372575b610302575b50506040519182526001600160a01b0316903390600080516020610e9f83398151915290602090a3602060405160018152f35b3381526001602052604081205461031b83821015610b91565b6001600160a01b0384169033829003610336575b50506102cf565b60409361034d91610348841515610bd6565b610c1b565b338352600160205283832055815220610367838254610c3e565b90558138808061032f565b50336001600160a01b038416146102ca565b50346100f95760403660031901126100f95767ffffffffffffffff6004358181116105b857366023820112156105b8578060040135908282116105d05760405192601f8301601f19908116603f01168401908111848210176105bc57908491604052828452602084019236602482840101116105b8578060246020930185378401015260243561ffff811681036105b4576101009182848051810103126105b0575180151581036105b05761043b60408501610c4b565b9161044860608601610c4b565b9460808101519460a08201519260c08301519160ff831683036105ac5760e08401519301519380421161025c578515610585577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610571579161ffff61052e989694926101e998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261051f81610a17565b602081519101206101b8610a66565b6001600160a01b03838116911603610203571561055b57610200926001600160a01b039081169116610e47565b610200926001600160a01b039081169116610df9565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161049e565b8980fd5b8480fd5b8380fd5b8280fd5b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b84526041600452602484fd5b50346100f95760403660031901126100f95761060b610601610997565b6024359033610df9565b602060405160018152f35b50346100f95760203660031901126100f9576020906040906001600160a01b0361063e610997565b168152600483522054604051908152f35b50346100f95760203660031901126100f9576020906040906001600160a01b03610677610997565b168152600183522054604051908152f35b50346100f957806003193601126100f95760206106a3610a66565b604051908152f35b50346100f95760603660031901126100f9576106c5610997565b906106ce6109b2565b604435918261070c575b506040519182526001600160a01b03908116921690600080516020610e9f83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061073582861015610b91565b86169384840361074a575b50505050506106d8565b8386526002835260408087203388528452862054600181016107b4575b50926001602096936107928794604097610348600080516020610e9f8339815191529c9a1515610bd6565b92855252838320558152206107a8858254610c3e565b90559138808581610740565b9091811061080857926001602096936107928a600080516020610e9f8339815191529a98956107e58260409a610c1b565b86895260028552898920338a528552898920559497509497995050939650610767565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346100f957610857366109c8565b9083959495421161025c576001600160a01b03878116808a52600460205260408a208054919692959290600019831461024857826108f99694928d9260016101e998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526101ad81610a17565b16036102035761020092610df9565b50346100f957806003193601126100f957602090604051908152f35b50346100f95760403660031901126100f95761060b610941610997565b6024359033610e47565b90503461099357604036600319011261099357604060209261096b610997565b6109736109b2565b6001600160a01b0391821683526003865283832091168252845220548152f35b5080fd5b600435906001600160a01b03821682036109ad57565b600080fd5b602435906001600160a01b03821682036109ad57565b60e09060031901126109ad576001600160a01b039060043582811681036109ad579160243590811681036109ad5790604435906064359060843560ff811681036109ad579060a4359060c43590565b610100810190811067ffffffffffffffff821117610a3457604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117610a3457604052565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610b68575b15610ac1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610a345760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610a98565b15610b9857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15610bdd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b51906001600160a01b03821682036109ad57565b6005811015610d5e5780610c705750565b60018103610cb85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103610d055760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314610d0e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311610ded5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610de05781516001600160a01b03811615610dda579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122016cc024f749c768f11ee5e9fb75a7ea580fb627e06bedbcf0e3f1717802ff8fa64736f6c63430008120033"; type MarketERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/MarketLiquidatorReceiver__factory.ts b/src/typechain/tapioca-bar/factories/markets/MarketLiquidatorReceiver__factory.ts new file mode 100644 index 00000000..84dcc65b --- /dev/null +++ b/src/typechain/tapioca-bar/factories/markets/MarketLiquidatorReceiver__factory.ts @@ -0,0 +1,392 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + MarketLiquidatorReceiver, + MarketLiquidatorReceiverInterface, +} from "../../markets/MarketLiquidatorReceiver"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "oracle", + type: "address", + }, + ], + name: "OracleAssigned", + 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: "tokenIn", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "swapper", + type: "address", + }, + ], + name: "SwapperAssigned", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + ], + name: "allowances", + outputs: [ + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_tokenIn", + type: "address", + }, + { + internalType: "address", + name: "_oracle", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + { + internalType: "uint256", + name: "_precision", + type: "uint256", + }, + ], + name: "assignOracle", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_tokenIn", + type: "address", + }, + { + internalType: "address", + name: "_swapper", + type: "address", + }, + ], + name: "assignSwapper", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "claimOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "initiator", + type: "address", + }, + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + internalType: "uint256", + name: "collateralAmount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onCollateralReceiver", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + ], + name: "oracles", + outputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "uint256", + name: "precision", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pendingOwner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + ], + name: "swappers", + outputs: [ + { + internalType: "address", + name: "swapper", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + { + internalType: "bool", + name: "direct", + type: "bool", + }, + { + internalType: "bool", + name: "renounce", + type: "bool", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080806040523461005757600080546001600160a01b0319919082169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a333913316171760005561131c908161005d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe714611060578063124c238314610e3d5780634e71e0c814610d8f57806355b6ed5c14610d3e5780635cd3dc15146103985780636c43a2ca146103315780638cad7fbe146102f65780638da5cb5b146102cd578063addd5099146101a5578063bbcd821e1461011f578063d73b1dc9146100ce5763e30c3978146100a057600080fd5b346100c95760003660031901126100c9576001546040516001600160a01b039091168152602090f35b600080fd5b346100c9576100dc366111eb565b9160018060a01b0380916100f58260005416331461125a565b1660005260046020526040600020911660005260205261011b60406000209182546112a5565b9055005b346100c95760403660031901126100c957610138611168565b61014061117e565b9060018060a01b0380916101598260005416331461125a565b16600081815260036020526040812080546001600160a01b03191694909316938417909255907fa02b5255ee60d1f9af74443960734d51468cf7ee586533c5b820a8cadd53cc6a9080a3005b346100c9576020806003193601126100c9576001600160a01b03806101c8611168565b166000526002825260406000206040519060009281546101e781611220565b8085526001918783821691826000146102ae575050600114610277575b5061021584600294959603866111ca565b8301541691015492604051938492606084528451928360608601526000955b84871061025e57506080955060008685870101528401526040830152601f80199101168101030190f35b8681018201518888016080015295810195879550610234565b94508260005285806000206000905b87821061029b57508501019450610215610204565b8054878301840152908201908301610286565b60ff19168188015291151560051b860190910195506102159050610204565b346100c95760003660031901126100c9576000546040516001600160a01b039091168152602090f35b346100c95760203660031901126100c95760206001600160a01b038061031a611168565b166000526003825260406000205416604051908152f35b346100c95761033f366111eb565b9160018060a01b0380916103588260005416331461125a565b16600052600460205260406000209116600052602052604060002080549182018092116103825755005b634e487b7160e01b600052601160045260246000fd5b346100c95760a03660031901126100c9576103b1611168565b6103b961117e565b90604435906001600160a01b03821682036100c9576001600160401b03608435116100c9573660236084350112156100c95760843560040135906001600160401b0382116100c957366024836084350101116100c957600554610ced5760016005556000546001600160a01b0390811690821603610c97576040516370a0823160e01b81523060048201526020816024816001600160a01b0389165afa90811561079757600091610c65575b5060643511610c14576001600160a01b038481166000908152600260205260409020600101541615610bba576001600160a01b038481166000908152600360205260409020541615610b5f576001600160a01b03163303610aa1575b602090608435906084350103126100c95760018060a01b0382166000526002602052604060002060018060a01b03600182015416604051809263d6d7d52560e01b82526020600483015260009080549061051a82611220565b91826024860152600181169081600014610a7b5750600114610a3e575b5050918160008160409503925af1908115610797576000906000926109fd575b50156109a157801561094b5761056f906064356112d3565b60018060a01b03831660005260026020526002604060002001548015610935576105ae91046127106105a760246084350135836112d3565b04906112a5565b9182156108d9576001600160a01b03818116600081815260036020526040808220549051631fd177af60e11b81526004810193909352948316602483015260648035604484015282018190526084820181905260a482015292610140918291859160c4918391165afa928315610797576000936107a3575b50506001600160a01b03908116600090815260036020908152604080832054815163efa84c6d60e01b815286518051871660048301528085015160248301528084015187166044830152606090810151606483015284880151805160848401528086015160a48401528085015160c4840152015160e48201529582015180511515610104880152909201511515610124860152610144850195909552336101648501526101a06101848501526101a4840182905292939284926101c49284929091165af190811561079757600091610762575b501561070f576000600555602060405160018152f35b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65744c697175696461746f7252656365697665723a20537761702066604482015264185a5b195960da1b6064820152608490fd5b90506040813d60401161078f575b8161077d604093836111ca565b810103126100c95760200151816106f9565b3d9150610770565b6040513d6000823e3d90fd5b81819294503d85116108d2575b6107ba81836111ca565b8101039283126100c957604051926107d184611194565b608081126100c9576040516107e5816111af565b6107ee836112b2565b815260208301516020820152610806604084016112b2565b60408201526060830151606082015284526080607f198201126100c9576040908151610831816111af565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602086015260ff1901126100c95760405191604083018381106001600160401b038211176108bc5760209560409586956108a96101206101c4976000968a526108a161010082016112c6565b8452016112c6565b8982015286820152955095505091610626565b634e487b7160e01b600052604160045260246000fd5b503d6107b0565b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206d696e20616d60448201526d1bdd5b9d081b9bdd081d985b1a5960921b6064820152608490fd5b634e487b7160e01b600052601260045260246000fd5b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a2072617465206e6044820152671bdd081d985b1a5960c21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f4d61726b65744c697175696461746f7252656365697665723a206f7261636c6560448201526d0818d85b1b19590819985a5b195960921b6064820152608490fd5b9150506040813d604011610a36575b81610a19604093836111ca565b810103126100c9576020610a2c826112c6565b9101519084610557565b3d9150610a0c565b6000908152602081209092505b818310610a615750508101604401816000610537565b805460448488010152859350602090920191600101610a4b565b60ff191660448087019190915292151560051b8501909201925083915060009050610537565b336000526004602052604060002060018060a01b03841660005260205260643560406000205410610b05576020903360005260048252604060002060018060a01b03851660005282526040600020610afc60643582546112a5565b905590506104c1565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a2073656e64657260448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602d60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f2073776160448201526c1c1c195c88185cdcda59db9959609a1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f206f726160448201526b18db1948185cdcda59db995960a21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a206e6f7420656e6044820152630deeaced60e31b6064820152608490fd5b90506020813d602011610c8f575b81610c80602093836111ca565b810103126100c9575185610465565b3d9150610c73565b60405162461bcd60e51b815260206004820152602860248201527f4d61726b65744c697175696461746f7252656365697665723a206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f4d61726b65744c697175696461746f7252656365697665723a207265656e7472604482015263616e637960e01b6064820152608490fd5b346100c95760403660031901126100c957610d57611168565b610d5f61117e565b9060018060a01b038091166000526004602052604060002091166000526020526020604060002054604051908152f35b346100c95760003660031901126100c9576001546001600160a01b039081811633819003610df957806000549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760005516600155005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346100c95760803660031901126100c957610e56611168565b610e5e61117e565b6001600160401b0391906044358381116100c957366023820112156100c9578060040135928484116108bc5760405192602094601f1993610ea68786601f85011601876111ca565b81865236602483830101116100c95781600092602489930183890137860101526000546001600160a01b0390610edf908216331461125a565b60405194610eec86611194565b8552808686019216968783528160408701946064358652169687600052600281526040600020965180519283116108bc57610f278854611220565b601f811161101a575b5081601f8411600114610fac5750600296506000919083610fa1575b50508160011b916000199060031b1c19161785555b6001850191511660018060a01b0319825416179055519101557fd35615cf633cdd04206b370029477f61d6ad0a5bac9f345812359d782d14e89c600080a3005b015190508980610f4c565b929394959684168860005283600020936000905b8282106110025750509160019391856002999897969410610fe9575b505050811b018555610f61565b015160001960f88460031b161c19169055898080610fdc565b80600186978294978701518155019601940190610fc0565b8860005282600020601f850160051c810191848610611056575b601f0160051c01905b81811061104a5750610f30565b6000815560010161103d565b9091508190611034565b346100c95760603660031901126100c957611079611168565b60243580151581036100c9576044359081151582036100c95760018060a01b039283916110ab8360005416331461125a565b1561114f571690811590811591611147575b501561110a57806000549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600055600180549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836110bd565b9150501660018060a01b03196001541617600155600080f35b600435906001600160a01b03821682036100c957565b602435906001600160a01b03821682036100c957565b606081019081106001600160401b038211176108bc57604052565b608081019081106001600160401b038211176108bc57604052565b90601f801991011681019081106001600160401b038211176108bc57604052565b60609060031901126100c9576001600160a01b039060043582811681036100c9579160243590811681036100c9579060443590565b90600182811c92168015611250575b602083101461123a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161122f565b1561126157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b9190820391821161038257565b51906001600160a01b03821682036100c957565b519081151582036100c957565b818102929181159184041417156103825756fea2646970667358221220b075749cdc319c0c8cc6204f1e9b284325e6c11aa490e15527bfdac6612484ef64736f6c63430008120033"; + +type MarketLiquidatorReceiverConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MarketLiquidatorReceiverConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class MarketLiquidatorReceiver__factory extends ContractFactory { + constructor(...args: MarketLiquidatorReceiverConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "MarketLiquidatorReceiver"; + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): MarketLiquidatorReceiver { + return super.attach(address) as MarketLiquidatorReceiver; + } + override connect(signer: Signer): MarketLiquidatorReceiver__factory { + return super.connect(signer) as MarketLiquidatorReceiver__factory; + } + static readonly contractName: "MarketLiquidatorReceiver"; + + public readonly contractName: "MarketLiquidatorReceiver"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MarketLiquidatorReceiverInterface { + return new utils.Interface(_abi) as MarketLiquidatorReceiverInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MarketLiquidatorReceiver { + return new Contract( + address, + _abi, + signerOrProvider + ) as MarketLiquidatorReceiver; + } +} diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts index 8b654a9c..0aecfd8a 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts @@ -1630,7 +1630,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a8c9283620001ab8439608051836127cf015260a05183612899015260c05183612799015260e0518361281e01525182612844015251816127fb0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611d865750836302ce728f14611d5d578363078dfbe714611c6a578363095ea7b314611c405783630996efb71461178a5783630c4e84f01461167357836318160ddd146116585783631c9e379b146116205783631da8bf10146115785783631fb8f81a1461155957836323b872dd146113d1578363331960ff146113b257836334ce998a1461138957836334d441d01461136a5783633644e5151461134d57836337b6b7b91461132e57836338d52e0f146113055783633ba0b9a9146112e65783633f741adb146112bd57836340626d8b1461129e57836344de240a1461127f578363473e3ce71461126057836348e4163e146112285783634e71e0c8146111855783635224372c146110ce578363529898f2146110af57836357935462146110905783636b19ad16146110715783636c3d8b8f1461104857836370a08231146110105783637277854714610fd857836374645ff314610ed95783637dc0d1d014610eb05783637ecebe0014610e795783637fa0b84e14610e485783638285ef4014610e1757836387b2793714610ddf5783638c5d0ed314610dc05783638da5cb5b14610d97578363910dd7c814610b62578363959916dc14610b4457836399a9702814610b1b5783639e15e89f14610ae0578363a9059cbb14610a05578363b0e21e8a146109e6578363b27c0e74146109b4578363b7113f1914610990578363bb4cfe3b14610971578363bde39c5d14610952578363c1ad5c8d1461092e578363cd0211eb146105b3578363ce8849ed1461058a578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea61376b565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611dcd565b826103e8611de8565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105865761044a36611e1c565b918394989597934211610555579161050a91610512938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612aef565b90558c8751956020870197600080516020613997833981519152895260008a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b5190206104db612796565b915190602082019261190160f01b8452602283015260428201526042815261050281611f69565b519020612a6a565b91909161296b565b160361052457506102ea939450612b4c565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206139778339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206139578339815191526044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f576105cf611dcd565b916105d8611de8565b936105e1611e0d565b50606435600183526020956007875261060060ff868620541615612ba3565b6001600160a01b03918183169161061930841415612be0565b610621612297565b505061062b61376b565b61067061065f6106428461063d6131be565b613434565b90506011549060ff61065789600d5416613121565b1691856132e1565b61066a811515612c2b565b89613364565b8286526017895286862054808311610926575b5081156108eb5781610694916138c2565b96818810156108b057828652602489528686206106b28982546120a4565b90556106c08261063d6131be565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b528888206106f88582546120a4565b90558989888860095416868c600e546107268651978896879586946311a5cc7760e31b865230928601613893565b03925af180156108a6578c9388938c8e9998979461075b94610878575b505061074f878a6120a4565b80610855575b506120a4565b806107cf575b50895193845216916000805160206139b78339815191529190a4600a541690813b15610586578351632ebe913360e21b81529183918391829084905af180156107c5576107b1575b505051908152f35b6107bb8291611f09565b6102ed57806107a9565b83513d84823e3d90fd5b925092939450600d541690813b1561085157610804889283928b51948580948193632770a7eb60e21b83528d30908401613862565b03925af1801561084757918a918a959493610822575b908691610761565b6000805160206139b783398151915292919861083e8892611f09565b9891925061081a565b88513d89823e3d90fd5b8780fd5b610872915061086b620186a091601a549061204d565b04896120a4565b8f610755565b8161089792903d1061089f575b61088f8183611f84565b81019061387d565b8e9150610743565b503d610885565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610683565b84833461030f578160031936011261030f5760209061094b6134e8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed575060255481516001600160401b03808316825291831c9091166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a22611dcd565b82602435928315801590610ace575b610a61575b50519182526001600160a01b0316903390600080516020613a17833981519152908590a35160018152f35b3381526001865281812054610a78858210156128bf565b6001600160a01b038416908533839003610a95575b505050610a36565b610aa991610aa4841515612904565b6120a4565b3383526001885283832055815220610ac28382546120b1565b90558285808085610a8d565b50336001600160a01b03841614610a31565b84833461030f578060031936011261030f57606090610b09610b00611dcd565b602435906121f0565b91929081519384526020840152820152f35b84833461030f578060031936011261030f5760209061094b610b3b611dcd565b60243590612664565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610d935780600319360112610d93578135926001600160401b038411610d8f5736602385011215610d8f578383013592610b9f84611fa7565b94610bac84519687611f84565b84865286602091828801963660248284010111610586578060248593018937880101526024359361ffff851680950361085157610100958688805181010312610d8b57610bf89061228a565b93610c04828901612949565b90610c1160608a01612949565b9860808101519860a082015192610c2a60c0840161295d565b91818401519301519360018060a01b03808097169d169a814211610d5a57928d8f819897948f948f8f968f918f959a8f8c8195610cf49f9c61050a9f50600014610d45576000805160206139978339815191529a5b825289522093845494610c9186612aef565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610cc281611f4d565b519020610ccd612796565b908951908b82019261190160f01b8452602283015260428201526042815261050281611f69565b1603610d1657505050600014610d0d576102ea92612b4c565b6102ea92612afe565b5162461bcd60e51b815291820152601e6024820152600080516020613977833981519152604482015260649150fd5b6000805160206139f78339815191529a610c7f565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206139578339815191526044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610e07611dcd565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610e72610e68611dcd565b6024359033612afe565b5160018152f35b848383346105865760203660031901126105865760209282916001600160a01b03610ea2611dcd565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610efb83611ecf565b808352600193808516908115610fb75750600114610f6c575b50610f2492509492940384611f84565b815192839160208084528251928382860152825b848110610f5657505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610f38565b60108752600080516020613a3783398151915293602092508791905b818310610f9f575050610f24935082010186610f14565b85548784018501529485019486945091830191610f88565b9050610f2494506020925060ff191682840152151560051b82010186610f14565b8483833461058657602036600319011261058657359160098310156102ed575060ff611005602093611ea0565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03611038611dcd565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105865761113c9061113060ff84956111036110ed36611e6b565b9491989093808052600760205220541615612ba3565b6111186001600160a01b038216301415612be0565b611120612297565b505061112a61376b565b85612c81565b929093601154906131e4565b1561114e575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105865782600319360112610586576006546001600160a01b039290918383169190338390036111e5575050806005549384166000805160206139d78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b03611250611dcd565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed575061094b6020926044359060243590356120d7565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f5760209061094b612796565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576113e236611e6b565b91928261141c575b508351918252602094506001600160a01b03908116921690600080516020613a17833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611447878310156128bf565b851692838a0361145b575b505050506113ea565b8985526002835288852033865283528885205490600182016114c5575b5050928260209960018a946114a48a8e99610aa4600080516020613a178339815191529c9a1515612904565b92855252838320558152206114ba8582546120b1565b905591878080611452565b87821061151b57509260209960018a946114a48a8e99966114f682600080516020613a178339815191529d9b6120a4565b86895260028552898920338a5285528989205596995050509450509981949650611478565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105865761158936611e1c565b9397949690928042116105555793869361160e938c8c8961050a968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936115cb85612aef565b905588519660208801986000805160206139f78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526104d081611f4d565b160361052457506102ea939450612afe565b84833461030f57602036600319011261030f5760209181906001600160a01b03611648611dcd565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105865781600319360112610586578035906009821015610d935761169a611dfe565b6008549093906001600160a01b031633036117505760ff6116ba84611ea0565b54161515931515938414611718575050808260ff6116da61170894611ea0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ea0565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105865761018036600319011261058657602480356001600160a01b0381811691829003611c3c576001600160401b036044358181116108515736602382011215610851578086013591821161085157368583830101116108515760643593838516809503610d8b5761180684600554163314611fc2565b863580611bfc575b5080611bbe575b508482611a64575b50505081611a24575b505060843580611a0c575b5060a435806119f4575b5060c435806119dd575b5060e435806119b9575b506101043580611995575b506101243580611964575b5061014435806118f3575b5061016435928361187f578480f35b601e54841061189657505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611902620186a082111561200d565b601f54811161191457601e5584611870565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584611865565b6119a3620186a0821061200d565b6119b0601b54821161200d565b601c558461185a565b6119c7620186a0821061200d565b6119d4601c54821061200d565b601b558461184f565b6119eb620186a0821061200d565b601d5584611845565b611a03620186a082111561200d565b601a558461183b565b611a1b620186a082111561200d565b60195584611831565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480611826565b8291611a71601054611ecf565b601f8111611b5f575b508990601f8411600114611adf578a93611ad2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461181d565b0101359050848980611a8f565b60108b52601f1984169450600080516020613a3783398151915292509087908b60205b878210611b405750508460019610611b24575b50505050811b01601055611aa6565b60001960f88660031b161c199201013516905588808681611b15565b8285019093013585556001949094019389929182019190810190611b02565b60108b529092509050600080516020613a37833981519152601f840160051c810160208510611bb7575b91849391601f8994920160051c01905b818110611ba65750611a7a565b8b8155859450889350600101611b99565b5080611b89565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188611815565b611c0b620186a082111561200d565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a36020558961180e565b8580fd5b84833461030f578060031936011261030f57602090610e72611c60611dcd565b6024359033612b4c565b5091503461058657606036600319011261058657611c86611dcd565b91611c8f611dfe565b91611c98611e0d565b9260018060a01b03948591611cb283600554163314611fc2565b15611d44571692831590811591611d3c575b5015611d01575050806005549283166000805160206139d78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611cc4565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611d78612297565b825191151582526020820152f35b9350505034610586578060031936011261058657602092611da5611dcd565b611dad611de8565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de357565b600080fd5b602435906001600160a01b0382168203611de357565b602435908115158203611de357565b604435908115158203611de357565b60e0906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de35790604435906064359060843560ff81168103611de3579060a4359060c43590565b6060906003190112611de3576001600160a01b03906004358281168103611de357916024359081168103611de3579060443590565b6009811015611eb9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611eff575b6020831014611ee957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ede565b6001600160401b038111611f1c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f1c57604052565b61010081019081106001600160401b03821117611f1c57604052565b608081019081106001600160401b03821117611f1c57604052565b601f909101601f19168101906001600160401b03821190821017611f1c57604052565b6001600160401b038111611f1c57601f01601f191660200190565b15611fc957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561201457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561206057565b634e487b7160e01b600052601160045260246000fd5b8115612080570490565b634e487b7160e01b600052601260045260246000fd5b604d811161206057600a0a90565b9190820391821161206057565b9190820180921161206057565b8181039291600013801582851316918412161761206057565b6014549192916121209161211191612107916120fd906001600160801b0383169061204d565b9060801c90612076565b93601f549061204d565b61211a83612096565b90612076565b8083106121e85761213461217091846120a4565b9161216b61216561215c601e5461215661214d86612096565b602154906120b1565b9061204d565b61211a84612096565b91612096565b6120be565b6509184e72a0009081810291818305149015171561206057670de0b6b3a76400009182810292818405149015171561206057801561208057600160ff1b9180831460001983141661206057059060008212156121e157811461206057600003905b8082116121dc575090565b905090565b50906121d1565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561227e579160409161225a85946122346122729761222e6136d8565b926124db565b815190936001600160801b03916020916122509184169061204d565b9201511690612076565b81811061227657035b958152601860205220546125ad565b9091565b505080612263565b50509192505080918190565b51908115158203611de357565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546122cc81611ecf565b9081602486015260019085828216918260001461246b575050600114612427575b5050600083809203925af1801561241c5760009485916123e1575b5092841561238357831561234957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612396601354601254906120b1565b42116123a757505060115490612343565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612415575b6123f98183611f84565b810103126102ed57508061240c8561228a565b94015138612308565b503d6123ef565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612450575050505082016044016000836122ed565b80548c8601604401528a97508b965093019287908201612438565b8195506000949193506044925060ff191682840152151560051b82010192506122ed565b1561249657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6124e682151561248f565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156125a1578092612569575b50509061256161255861256693620186a0602254049061204d565b601e549061204d565b612076565b90565b9091506020823d8211612599575b8161258460209383611f84565b810103126102ed57505161256161255861253d565b3d9150612577565b604051903d90823e3d90fd5b6125b882151561248f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561265857600091612625575b5090612561612611926022549061204d565b620186a0612621601e548361204d565b0491565b906020823d8211612650575b8161263e60209383611f84565b810103126102ed5750516125616125ff565b3d9150612631565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612687916125ad565b918352601760205260408320548015612790578115612790578181106127905782811015612786576014546126d0918391610aa4916120fd906001600160801b0383169061204d565b90620186a09283830292808404851490151715612772576126f5929161211a916120a4565b91601b5491601c549361270885856120be565b80820291848212600160ff1b82141661277257818305149015171561275e570581848201948512911290801582169115161761274a57508082126121dc575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612896575b156127f1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f1c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127c8565b156128c657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561290b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de357565b519060ff82168203611de357565b6005811015611eb9578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146120605760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612baa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612be757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c3257565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106130dd5784156130d557620186a09460209086612caa83548361204d565b0496612cf4612ce3612cbf6011549a856120b1565b600d546001600160a01b039b919060ff90612cdb908e16613121565b16918b6132e1565b612cee811515612c2b565b88613364565b612cff83548361204d565b049287811680865260248452604094858720612d1c8282546120b1565b9055612d266131be565b98612d3182866120b1565b88878951612d3e81611f32565b82815201528a516001600160801b039b8c9182166130695781612d69849e8f955b16828451166136bf565b168152612d7e828a83019416838551166136bf565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561305e575b50501561301c57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612df0838d209182546120b1565b905581519081528c89820152a487600d5416803b15611c3c5785855180926340c10f1960e01b8252818381612e29893060048401613862565b03925af1801561301257612fff575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af18015612ff5579287928a88938f96612fb2575b50612e9b9560095416918b5196879586948593845260048401613862565b03925af18015612fa857908694939291612f68575b50612edb9450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613893565b03925af1908115612f5c578391612f3d575b509394600a5416803b1561058657908280926004835180958193632ebe913360e21b83525af1908115612f345750612f23575050565b612f2d8291611f09565b6102ed5750565b513d84823e3d90fd5b612f549150823d841161089f5761088f8183611f84565b905038612eed565b505051903d90823e3d90fd5b80929450859193953d8311612fa1575b612f828183611f84565b81010312611c3c5791612edb9391612f9a869461228a565b5038612eb0565b503d612f78565b86513d89823e3d90fd5b9350509290935081813d8311612fee575b612fcd8183611f84565b81010312610d8b57612e9b9287928a8e612fe78a9561228a565b5095612e7d565b503d612fc3565b88513d8b823e3d90fd5b61300b90959195611f09565b9338612e38565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b111590503880612daa565b9091808983018481511661307d908361204d565b8585511661308a91612076565b9e8f818651166130999161204d565b9151166130a591612076565b106130b9575b9082612d69818f9594612d5f565b919b908c612d696130ca8294612aef565b9e50505090916130ab565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061314181611f32565b5160009283928392916001600160a01b03165afa903d156131b6573d9161316783611fa7565b926131756040519485611f84565b83523d82602085013e5b806131ab575b156131a4576020828051810103126102ed57506020612566910161295d565b5050601290565b506020825114613185565b60609161317f565b604051906131cb82611f32565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156132d75760188152604086205480156132d0578161321e6131be565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156125a157809761329a575b505061225061327a612558613295969798620186a0602254049061204d565b9561329060018060801b0394858751169061204d565b61204d565b111590565b9096508187813d83116132c9575b6132b28183611f84565b810103126102ed575094519461225061327a61325b565b503d6132a8565b5050505050565b5060019450505050565b612165906133018561256696956132fb61211a96856124db565b90613321565b6001600160a01b039091166000908152601860205260409020549061204d565b918215801561335c575b6121e857600181018091116120605761334a9261215661256192612096565b6005810180911161206057600a900490565b50811561332b565b6001600160a01b0316338103613378575050565b60008181526020906003825260409182822033835281528483832054106133e157838252600381528282203383528152828220546001016133ba575050505050565b6133d5938252600381528282209033835252209182546120a4565b905538808080806132d0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161206057565b9190916000602060405161344781611f32565b82815201526020810180516001600160801b0390811661348b5761348481865b81613477818a168289511661341b565b168652168284511661341b565b1690529190565b6134a561349b828551168761204d565b8284511690612076565b94806134c16134b7848651168961204d565b8487511690612076565b106134d1575b8161348491613467565b94816134df61348492612aef565b969150506134c7565b60ff60265416613659576014546001600160801b031690811561365257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612658578591600091613619575b50600460405180948193631a674cc560e11b8352165afa938415612658576000946135ea575b50506135829192670de0b6b3a76400009283916029549061204d565b0490818110156135e157613599602a5480926120a4565b838102908082048514901517156120605761211a6135ba926135d5946120a4565b602754926135cf6028549261329084876120a4565b046120b1565b908082116121dc575090565b50505060275490565b81813d8311613612575b6135fe8183611f84565b81010312610d935751925061358238613566565b503d6135f4565b909181813d831161364b575b61362f8183611f84565b8101031261030f57519082821682036102ed5750849038613540565b503d613625565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561265857600091613691575090565b906020823d82116136b7575b816136aa60209383611f84565b810103126102ed57505190565b3d915061369d565b6001600160801b03918216908216019190821161206057565b600060206040516136e881611f32565b82815201526025546001600160401b0391906137099060401c8316426120a4565b9182156137605761375b61329091670de0b6b3a764000061375061372b6131be565b9660018060801b03958694858a5116906301e133806137486134e8565b04169061204d565b0416828551166136bf565b168252565b5090506125666131be565b60405161377781611f32565b60255460018060401b03908181168352818160401c1661379e6020850191808352426120a4565b9283156132d057602094816301e133806137b66134e8565b0416815281421683526137c76131be565b670de0b6b3a76400006137ec60018060801b039761329089855116878751169061204d565b04956137fd818816828451166136bf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b039091168152602081019190915260400190565b9190826040910312611de3576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b0390811660008181526017602052604081205491939092828214613945579060ff6138fa61390393600d5416613121565b16928391613321565b801561393e57829161211a6121656139299387604097526024602052868620549061204d565b928152602460205220548082116121dc575090565b5050905090565b50505060409150602460205220549056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212209b8b42cab2e1396758383304361b571297f2bb62c00aaa82e81d79b9b069015364736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a619283620001ab843960805183612887015260a05183612952015260c05183612851015260e051836128d6015251826128fc015251816128b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220de560e996e3c830b2af4e5c6ba35d1a989a9c18b99ecfdb9135702ca47f8c50864736f6c63430008120033"; type BBBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts index 6c831c3f..71a46691 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts @@ -1618,7 +1618,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132799283620001ab8439608051836127dd015260a051836128a7015260c051836127a7015260e0518361282c01525182612852015251816128090152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611deb5750806302ce728f14611dc2578063078dfbe714611cd5578063095ea7b314611cae5780630996efb7146117f85780630c4e84f0146116dc57806318160ddd146116c05780631c9e379b146116875780631da8bf10146115c55780631fb8f81a146115a757806323b872dd14611420578063331960ff1461140257806334ce998a146113d957806334d441d0146113bb5780633644e515146113a057806337b6b7b91461138257806338d52e0f146113595780633ba0b9a91461133b5780633f741adb1461131657806340626d8b146112f857806344de240a146112da578063473e3ce7146112bc57806348e4163e146112835780634e71e0c8146111e7578063529898f2146111c957806357935462146111ab5780636b19ad161461118d5780636c3d8b8f1461116457806370a082311461112b57806372778547146110f357806374645ff314610ff25780637dc0d1d014610fc95780637ecebe0014610f905780637fa0b84e14610f5e5780638285ef4014610f2c57806387b2793714610ef35780638c5d0ed314610ed55780638da5cb5b14610eac578063910dd7c814610c9b578063959916dc14610c7e57806399a9702814610c565780639e15e89f14610c1b578063a9059cbb14610b38578063b0e21e8a14610b1a578063b27c0e7414610ae7578063b7113f1914610ac4578063bb4cfe3b14610aa6578063bde39c5d14610a88578063c1ad5c8d14610a65578063cce19f81146108ff578063ce8849ed146108d6578063d505accf14610747578063d8dfeb451461071e578063dd62ed3e146106cf578063de406577146106a6578063e0996cb614610688578063e30c39781461065f578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e2613082565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611e33565b610364611e49565b9061036d611e6e565b608435926001600160a01b0390811692909160643561038e30861415612b94565b6002600052602090600782526103ac60ff6040600020541615612bdf565b86156105e1575b6103bd8785612c1c565b8615610560575b5084875260188152604087206103db8782546120e1565b90556015546103ea87826120e1565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b61043692506120d4565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c58183611fe5565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561055c578783916105239383604051809681958294630208d92960e11b8452308d60048601613179565b03925af1801561055157610539575b505061043e565b61054290611f6a565b61054d578538610532565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105d65787916105a9575b5094386103c4565b90508581813d83116105cf575b6105c08183611fe5565b810103126104d75751386105a1565b503d6105b6565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa908115610654578891610627575b50956103b3565b90508181813d831161064d575b61063e8183611fe5565b810103126104d7575138610620565b503d610634565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106e9611e33565b60406106f3611e49565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761075636611e7d565b9183919395949542116108915760018060a01b0392838816948560005260046020526040600020928354600019811461087b576108279561081f956001830190556040519060208201926000805160206131a48339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b5190206107ee6127a4565b9060405190602082019261190160f01b8452602283015260428201526042815261081781611fca565b519020612a6a565b91909161296b565b1603610836576102e292612b3d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061090f36611ecc565b60038492939452600760205261092c60ff60408420541615612bdf565b610934612377565b505061093e613082565b6001600160a01b03838116939061095730861415612b94565b6109618387612c1c565b828187169586865260186020526040862061097d8382546120d4565b905561098b826015546120d4565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610a6157856109e4869282968395630208d92960e11b85523060048601613179565b03925af18015610a5657610a41575b50601154610a0091612cfa565b15610a085780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a4f610a009293611f6a565b91906109f3565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610a80612dfc565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b52611e33565b60243580928115801590610c09575b610b99575b50506040519182526001600160a01b031690339060008051602061320483398151915290602090a3602060405160018152f35b33815260016020526040812054610bb2838210156128cd565b6001600160a01b0384169033829003610bcd575b5050610b66565b604093610be491610bdf841515612912565b6120d4565b338352600160205283832055815220610bfe8382546120e1565b905581388080610bc6565b50336001600160a01b03841614610b61565b50346102e55760403660031901126102e5576060610c43610c3a611e33565b60243590612220565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610a80610c75611e33565b60243590612672565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b0380821161055c573660238301121561055c578160040135908111610e98578260405192610cef6020601f19601f8601160185611fe5565b8284526020840192366024828401011161055c578060246020930185378401015260243561ffff81168103610e9457610100918284805181010312610a6157610d379061236a565b610d4360408501612957565b91610d5060608601612957565b9460808101519460a08201519260c08301519160ff83168303610e905760e084015193015193804211610891578515610e7b576000805160206131a4833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610e67579161ffff610e249896949261081f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e1581611fae565b602081519101206107ee6127a4565b6001600160a01b038381169116036108365715610e51576102e2926001600160a01b039081169116612b3d565b6102e2926001600160a01b039081169116612aef565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e483398151915291610d94565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f1b611e33565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610f85610f7b611e33565b6024359033612aef565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610fb8611e33565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361101483611f30565b8083526001938085169081156110d25750600114611087575b5061103a92500382611fe5565b60405180926020908183528351918281850152815b83811061107057505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161104f565b6010865260008051602061322483398151915293602092508691905b8183106110ba57505061103a93508201013861102d565b855487840185015294850194869450918301916110a3565b905061103a94506020925060ff191682840152151560051b8201013861102d565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61111f84611f01565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03611153611e33565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b03908181163381900361123f57806005549384166000805160206131c48339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b036112ab611e33565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610a80604435602435600435612107565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610a806127a4565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e55761142f36611ecc565b91928261146b575b506040519182526001600160a01b0390811692169060008051602061320483398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611494828610156128cd565b8616938484036114a9575b5050505050611437565b838652600283526040808720338852845286205460018101611513575b50926001602096936114f18794604097610bdf6000805160206132048339815191529c9a1515612912565b92855252838320558152206115078582546120e1565b9055913880858161149f565b9091811061156757926001602096936114f18a6000805160206132048339815191529a98956115448260409a6120d4565b86895260028552898920338a5285528989205594975094979950509396506114c6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e5576115d436611e7d565b90839594954211610891576001600160a01b03878116808a52600460205260408a208054919692959290600019831461167357826116649694928d92600161081f98960190556040519160208301936000805160206131e4833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526107e381611fae565b1603610836576102e292612aef565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b036116af611e33565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e55760043560098110156117f457611702611e5f565b6008549091906001600160a01b031633036117b85760ff61172282611f01565b5416151591151591821461177e57808260ff61174061176e94611f01565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f01565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e557602480356001600160a01b0381811691829003610e94576001600160401b0360443581811161054d573660238201121561054d57806004013591821161054d573685838301011161054d5760643593838516809503611caa5761187384600554163314612008565b60043580611c6a575b5080611c2c575b508482611ad2575b50505081611a92575b505060843580611a7a575b5060a43580611a62575b5060c43580611a4b575b5060e43580611a27575b506101043580611a03575b5061012435806119d2575b50610144358061195f575b506101643590816118ed578280f35b601e5482106119005750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61196e620186a0821115612053565b601f54811161198057601e55386118de565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386118d3565b611a11620186a08210612053565b611a1e601b548211612053565b601c55386118c8565b611a35620186a08210612053565b611a42601c548210612053565b601b55386118bd565b611a59620186a08210612053565b601d55386118b3565b611a71620186a0821115612053565b601a55386118a9565b611a89620186a0821115612053565b6019553861189f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611894565b8291611adf601054611f30565b601f8111611bcd575b508790601f8411600114611b4d578893611b40575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461188b565b0101359050843880611afd565b60108952601f198416945060008051602061322483398151915292509087908960205b878210611bae5750508460019610611b92575b50505050811b01601055611b14565b60001960f88660031b161c199201013516905538808681611b83565b8285019093013585556001949094019389929182019190810190611b70565b601089529092509050600080516020613224833981519152601f840160051c810160208510611c25575b91849391601f8994920160051c01905b818110611c145750611ae8565b898155859450889350600101611c07565b5080611bf7565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611883565b611c79620186a0821115612053565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a36020553861187c565b8680fd5b50346102e55760403660031901126102e557610f85611ccb611e33565b6024359033612b3d565b50346102e55760603660031901126102e557611cef611e33565b611cf7611e5f565b611cff611e6e565b9060018060a01b03928391611d1983600554163314612008565b15611dab571690811590811591611da3575b5015611d6657806005549283166000805160206131c48339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d2b565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611ddd612377565b825191151582526020820152f35b9050346117f45760403660031901126117f4576040602092611e0b611e33565b611e13611e49565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f1a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f60575b6020831014611f4a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f3f565b6001600160401b038111611f7d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611f7d57604052565b61010081019081106001600160401b03821117611f7d57604052565b608081019081106001600160401b03821117611f7d57604052565b601f909101601f19168101906001600160401b03821190821017611f7d57604052565b1561200f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561205a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561087b57565b81156120b0570490565b634e487b7160e01b600052601260045260246000fd5b604d811161087b57600a0a90565b9190820391821161087b57565b9190820180921161087b57565b8181039291600013801582851316918412161761087b57565b60145491929161215091612141916121379161212d906001600160801b03831690612093565b9060801c906120a6565b93601f5490612093565b61214a836120c6565b906120a6565b808310612218576121646121a091846120d4565b9161219b61219561218c601e5461218661217d866120c6565b602154906120e1565b90612093565b61214a846120c6565b916120c6565b6120ee565b6509184e72a0009081810291818305149015171561087b57670de0b6b3a76400009182810292818405149015171561087b5780156120b057600160ff1b9180831460001983141661087b570590600082121561221157811461087b57600003905b80821161220c575090565b905090565b5090612201565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561235d57612252612fec565b9061225e86151561256f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612352578591612323575b50928594926123036018936122de612317996122d96122d060409a620186a06022540490612093565b601e5490612093565b6120a6565b815190936001600160801b039186916122f991841690612093565b92015116906120a6565b81811061231b57035b9783525220546125bb565b9091565b50508261230c565b90508381813d831161234b575b61233a8183611fe5565b81010312610a6157516123176122a7565b503d612330565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546123ac81611f30565b9081602486015260019085828216918260001461254b575050600114612507575b5050600083809203925af180156124fc5760009485916124c1575b5092841561246357831561242957505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612476601354601254906120e1565b421161248757505060115490612423565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124f5575b6124d98183611fe5565b810103126102e55750806124ec8561236a565b940151386123e8565b503d6124cf565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612530575050505082016044016000836123cd565b80548c8601604401528a97508b965093019287908201612518565b8195506000949193506044925060ff191682840152151560051b82010192506123cd565b1561257657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6125c682151561256f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561266657600091612633575b50906122d961261f9260225490612093565b620186a061262f601e5483612093565b0491565b906020823d821161265e575b8161264c60209383611fe5565b810103126102e55750516122d961260d565b3d915061263f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612695916125bb565b91835260176020526040832054801561279e57811561279e5781811061279e5782811015612794576014546126de918391610bdf9161212d906001600160801b03831690612093565b90620186a0928383029280840485149015171561278057612703929161214a916120d4565b91601b5491601c549361271685856120ee565b80820291848212600160ff1b82141661278057818305149015171561276c5705818482019485129112908015821691151617612758575080821261220c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806128a4575b156127ff577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611f7d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127d6565b156128d457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561291957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f1a578061297c5750565b600181036129c45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a1a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612ae35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ad65781516001600160a01b03811615612ad0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612b9b57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612be657565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612c30575050565b6000818152602090600382526040918282203383528152848383205410612c9a5783825260038152828220338352815282822054600101612c73575b5050505050565b612c8e938252600381528282209033835252209182546120d4565b90553880808080612c6c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612ce182611f93565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612df2576018815260408620548015612c6c5781612d34612cd4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612de6578097612db0575b50506122f9612d906122d0612dab969798620186a06022540490612093565b95612da660018060801b03948587511690612093565b612093565b111590565b9096508187813d8311612ddf575b612dc88183611fe5565b810103126102e557509451946122f9612d90612d71565b503d612dbe565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612f6d576014546001600160801b0316908115612f6657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612666578591600091612f2d575b50600460405180948193631a674cc560e11b8352165afa93841561266657600094612efe575b5050612e969192670de0b6b3a764000092839160295490612093565b049081811015612ef557612ead602a5480926120d4565b8381029080820485149015171561087b5761214a612ece92612ee9946120d4565b60275492612ee360285492612da684876120d4565b046120e1565b9080821161220c575090565b50505060275490565b81813d8311612f26575b612f128183611fe5565b81010312610e9457519250612e9638612e7a565b503d612f08565b909181813d8311612f5f575b612f438183611fe5565b810103126117f457519082821682036102e55750849038612e54565b503d612f39565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561266657600091612fa5575090565b906020823d8211612fcb575b81612fbe60209383611fe5565b810103126102e557505190565b3d9150612fb1565b6001600160801b03918216908216019190821161087b57565b60006020604051612ffc81611f93565b82815201526025546001600160401b03919061301d9060401c8316426120d4565b9182156130745761306f612da691670de0b6b3a764000061306461303f612cd4565b9660018060801b03958694858a5116906301e1338061305c612dfc565b041690612093565b041682855116612fd3565b168252565b50905061307f612cd4565b90565b60405161308e81611f93565b60255460018060401b03908181168352818160401c166130b56020850191808352426120d4565b928315612c6c57602094816301e133806130cd612dfc565b0416815281421683526130de612cd4565b670de0b6b3a764000061310360018060801b0397612da6898551168787511690612093565b049561311481881682845116612fd3565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b6001600160a01b03918216815291166020820152604081019190915260608101919091526080019056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122024f925abbe76baf14bd3fc5706d55993e6e04b1453a06e898a6c7d4e737a1c3e64736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132439283620001ab843960805183612850015260a0518361291b015260c0518361281a015260e0518361289f015251826128c50152518161287c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d7a4868fa33e505e89ef8b458a1130bf55b24a8ffaddcf087d664508d9f4522b64736f6c63430008120033"; type BBCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts index 4babbe5c..6c416669 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts @@ -1562,7 +1562,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612b099283620001ab8439608051836122c5015260a0518361238f015260c0518361228f015260e051836123140152518261233a015251816122f10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220ae2954b7c8389b54f01e0f6b6faaec482dfa0c90d17563cc952fa9f9625c3bbf64736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201533ed181e8665e8d9480374a8b479a4059b67d0608a98b43bc2783cbc9bbbaa64736f6c63430008120033"; type BBCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts index 6553a673..54de568a 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts @@ -1562,7 +1562,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612b099283620001ab8439608051836122c5015260a0518361238f015260c0518361228f015260e051836123140152518261233a015251816122f10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b395750806302ce728f14611922578063078dfbe714611830578063095ea7b31461180a5780630996efb7146113535780630c4e84f01461123957806318160ddd1461121d5780631c9e379b146111e35780631da8bf10146111395780631fb8f81a1461111b57806323b872dd14610f77578063331960ff14610f5957806334ce998a14610f3057806334d441d014610f125780633644e51514610ef757806337b6b7b914610ed957806338d52e0f14610eb05780633ba0b9a914610e925780633f741adb14610e6e57806340626d8b14610e5057806344de240a14610e32578063473e3ce714610e1457806348e4163e14610dda5780634e71e0c814610d3e578063529898f214610d205780635793546214610d025780636b19ad1614610ce45780636c3d8b8f14610cbb57806370a0823114610c815780637277854714610c4b57806374645ff314610b415780637dc0d1d014610b185780637ecebe0014610ade5780637fa0b84e14610aad5780638285ef4014610a7b57806387b2793714610a415780638c5d0ed314610a235780638da5cb5b146109fa578063910dd7c814610805578063959916dc146107e857806399a97028146107c15780639e15e89f14610787578063a9059cbb146106a0578063b0e21e8a14610682578063b27c0e741461064f578063b7113f191461062c578063bb4cfe3b1461060e578063bde39c5d146105f0578063c1ad5c8d146105cd578063ce8849ed146105a4578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb612935565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611b85565b6103bd611b9b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576104f5956104ed95600183019055604051906020820192600080516020612a348339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b5190206104bc61228c565b9060405190602082019261190160f01b845260228301526042820152604281526104e581611caf565b519020612552565b919091612453565b1603610504576102cb92612625565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105e861267c565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd57602554604080516001600160401b03808416825292821c909216602083015290f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106b9611b85565b602435908115801590610775575b6106fd575b6040519182526001600160a01b0316903390600080516020612a9483398151915290602090a3602060405160018152f35b336000526001602052604060002054610718838210156123b5565b6001600160a01b038216908333839003610735575b5050506106cc565b610749916107448415156123fa565b611db9565b336000526001602052604060002055600052604060002061076b838254611dc6565b905582808361072d565b50336001600160a01b038216146106c7565b346102cd5760403660031901126102cd5760606107ae6107a5611b85565b60243590611f05565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105e86107df611b85565b6024359061215a565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd5780600401359182116109e45760405191610857601f8201601f191660200184611cca565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108a390612053565b6108af6040830161243f565b916108bc6060820161243f565b9460808201519460a08301519260c08101519160ff831683036102cd5760e08201519101519184421161055f5785156109d057600080516020612a348339815191525b6001600160a01b0388166000908152600460205260409020805490969060001981146105495761ffff6104ed9761098d9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261097e81611c93565b602081519101206104bc61228c565b6001600160a01b0383811691160361050457156109ba576102cb926001600160a01b039081169116612625565b6102cb926001600160a01b0390811691166125d7565b600080516020612a748339815191526108ff565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a62611b85565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610ad3610ac9611b85565b60243590336125d7565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610aff611b85565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b6483611c3e565b808352600193808516908115610c2a5750600114610bdc575b50610b8a92500382611cca565b6040519081602080825282519081818401526000935b828510610bc3575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610ba0565b60106000908152600080516020612ab483398151915294602093509091905b818310610c12575050610b8a935082010184610b7d565b85548784018501529485019486945091830191610bfb565b9050610b8a94506020925060ff191682840152151560051b82010184610b7d565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610c75602092611c0f565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ca2611b85565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610d965780600554938416600080516020612a54833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610dfb611b85565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105e8604435602435600435611dec565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105e861228c565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610f90611b85565b610f98611b9b565b6044359081610fd5575b6040519182526001600160a01b03908116921690600080516020612a9483398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610ffd828610156123b5565b851693848403611012575b5050505050610fa2565b836000526002835260406000203360005283526040600020546000198103611086575b50849261105d600080516020612a9483398151915297959360019361074460209915156123fa565b9260005252604060002055600052604060002061107b858254611dc6565b905591858481611008565b909181106110db576020949261105d88600080516020612a948339815191529896946110b482600196611db9565b86600052600285526040600020336000528552604060002055935093959750509294611035565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761114736611bc0565b91839193959495421161055f5760018060a01b03928388169485600052600460205260406000209283546000198114610549576111d4956104ed95600183019055604051906020820192600080516020612a748339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104b181611c93565b1603610504576102cb926125d7565b346102cd5760203660031901126102cd576001600160a01b03611204611b85565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd5761125e611bb1565b6008549091906001600160a01b031633036113175760ff61127e82611c0f565b541615159115159182146112dd57808260ff61129c6112cb94611c0f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c0f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd57602480356001600160a01b03818116918290036102cd576001600160401b036044358181116102cd57366023820112156102cd5780600401359182116102cd57368583830101116102cd57606435938385168095036102cd576113cd84600554163314611ced565b600435806117c9575b508061178a575b508482611628575b505050816115e7575b5050608435806115cf575b5060a435806115b7575b5060c435806115a0575b5060e4358061157c575b506101043580611558575b506101243580611526575b5061014435806114b3575b5061016435908161144557005b601e5482106114545750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114c2620186a0821115611d38565b601f5481116114d457601e5581611438565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161142d565b611566620186a08210611d38565b611573601b548211611d38565b601c5581611422565b61158a620186a08210611d38565b611597601c548210611d38565b601b5581611417565b6115ae620186a08210611d38565b601d558161140d565b6115c6620186a0821115611d38565b601a5581611403565b6115de620186a0821115611d38565b601955816113f9565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806113ee565b8291611635601054611c3e565b601f8111611729575b50600090601f84116001146116a657600093611699575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846113e5565b0101359050848680611655565b60106000908152601f1985169550600080516020612ab483398151915293509091889160205b87821061170a57505084600196106116ee575b50505050811b0160105561166c565b60001960f88660031b161c1992010135169055858086816116df565b82850190930135855560019490940193899291820191908101906116cc565b60106000529092509050600080516020612ab4833981519152601f840160051c810160208510611783575b91849391601f8994920160051c01905b818110611771575061163e565b60008155859450889350600101611764565b5080611754565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856113dd565b6117d8620186a0821115611d38565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055866113d6565b346102cd5760403660031901126102cd57610ad3611826611b85565b6024359033612625565b346102cd5760603660031901126102cd57611849611b85565b611851611bb1565b6044359081151582036102cd5760018060a01b0392839161187783600554163314611ced565b15611909571690811590811591611901575b50156118c45780600554928316600080516020612a54833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611889565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461196481611c3e565b908160248501526001908181169081600014611b135750600114611ad3575b50509060409181600081809603925af18015611ac757600091600091611a88575b508115611a2b5780156119ef5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a3b60135460125490611dc6565b4211611a4c576011546040926119df565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611abf575b81611aa460409383611cca565b810103126102cd5781611ab682612053565b910151836119a4565b3d9150611a97565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611afe575050505091810160440191806040611983565b80548688016044015295019486908201611ae4565b60ff191660448087019190915292151560051b8501909201945082915060409050611983565b346102cd5760403660031901126102cd57602090611b55611b85565b611b5d611b9b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c28576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c6e575b6020831014611c5857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4d565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b601f909101601f19168101906001600160401b038211908210176109e457604052565b15611cf457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d3f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054957565b8115611d95570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054957600a0a90565b9190820391821161054957565b9190820180921161054957565b8181039291600013801582851316918412161761054957565b601454919291611e3591611e2691611e1c91611e12906001600160801b03831690611d78565b9060801c90611d8b565b93601f5490611d78565b611e2f83611dab565b90611d8b565b808310611efd57611e49611e859184611db9565b91611e80611e7a611e71601e54611e6b611e6286611dab565b60215490611dc6565b90611d78565b611e2f84611dab565b91611dab565b611dd3565b6509184e72a0009081810291818305149015171561054957670de0b6b3a764000091828102928184051490151715610549578015611d9557600160ff1b918083146000198314166105495705906000821215611ef657811461054957600003905b808211611ef1575090565b905090565b5090611ee6565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561204657611f3761289f565b90611f43861515612060565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561203b578591612008575b5092859492611fe8601893611fc3611ffc99611fbe611fb560409a620186a06022540490611d78565b601e5490611d78565b611d8b565b815190936001600160801b03918691611fde91841690611d78565b9201511690611d8b565b81811061200057035b9783525220546120ac565b9091565b505082611ff1565b90508381813d8311612034575b61201f8183611cca565b810103126120305751611ffc611f8c565b8480fd5b503d612015565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b1561206757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120b7821515612060565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611ac757600091612124575b5090611fbe6121109260225490611d78565b620186a0612120601e5483611d78565b0491565b906020823d8211612152575b8161213d60209383611cca565b8101031261214f575051611fbe6120fe565b80fd5b3d9150612130565b6001600160a01b0316600081815260186020526040812054909261217d916120ac565b91835260176020526040832054801561228657811561228657818110612286578281101561227c576014546121c691839161074491611e12906001600160801b03831690611d78565b90620186a09283830292808404851490151715612268576121eb9291611e2f91611db9565b91601b5491601c54936121fe8585611dd3565b80820291848212600160ff1b82141661226857818305149015171561225457058184820194851291129080158216911516176122405750808212611ef1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061238c575b156122e7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146122be565b156123bc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561240157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c2857806124645750565b600181036124ac5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124f95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461250257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125cb5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125be5781516001600160a01b038116156125b8579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602654166127fa576014546001600160801b03169081156127f357600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611ac75785916000916127b6575b50600460405180948193631a674cc560e11b8352165afa938415611ac757600094612783575b50506127169192670de0b6b3a764000092839160295490611d78565b04908181101561277a5761272d602a548092611db9565b8381029080820485149015171561054957611e2f61274e9261276e94611db9565b60275492612768602854926127638487611db9565b611d78565b04611dc6565b90808211611ef1575090565b50505060275490565b81813d83116127af575b6127978183611cca565b810103126127ab57519250612716386126fa565b8380fd5b503d61278d565b909181813d83116127ec575b6127cc8183611cca565b810103126127e8575190828216820361214f57508490386126d4565b5080fd5b503d6127c2565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611ac757600091612832575090565b906020823d8211612858575b8161284b60209383611cca565b8101031261214f57505190565b3d915061283e565b6040519061286d82611c78565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161054957565b600060206040516128af81611c78565b82815201526025546001600160401b0391906128d09060401c831642611db9565b9182156129275761292261276391670de0b6b3a76400006129176128f2612860565b9660018060801b03958694858a5116906301e1338061290f61267c565b041690611d78565b041682855116612886565b168252565b509050612932612860565b90565b60405161294181611c78565b60255460018060401b03908181168352818160401c16612968602085019180835242611db9565b928315612a2c57602094816301e1338061298061267c565b041681528142168352612991612860565b670de0b6b3a76400006129b660018060801b0397612763898551168787511690611d78565b04956129c781881682845116612886565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220774d05c3673502ed32cf37c0761a238de4472c43b84204d4b7127253ed711ea264736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e8bc3f742a3a2c2c8d999713a14498093bcfa8b91250d2c43edeccec689d383564736f6c63430008120033"; type BBLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts index f8c7c063..0a51e91a 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts @@ -1645,7 +1645,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561435c9283620001ab843960805183612fe3015260a051836130ad015260c05183612fad015260e05183613032015251826130580152518161300f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146125cc5750816302ce728f146125a3578163078dfbe7146124b2578163095ea7b31461248b5781630996efb714611fec5781630c4e84f014611ed457816318160ddd14611eb85781631c9e379b14611e7f5781631da8bf1014611ddb5781631ee9c8f2146115805781631fb8f81a1461156257816323b872dd146113bf578163331960ff146113a157816334ce998a1461137857816334d441d01461135a5781633644e5151461133f57816337b6b7b91461132157816338d52e0f146112f85781633ba0b9a9146112da5781633f741adb146112b557816340626d8b1461129757816344de240a14611279578163473e3ce71461125b57816348e4163e146112225781634e71e0c814611186578163529898f214611168578163579354621461114a57816358db9afe14610d175781636b19ad1614610cf95781636c3d8b8f14610cd057816370a0823114610c975781637277854714610c5f57816374645ff314610b5e5781637dc0d1d014610b355781637ecebe0014610afc5781637fa0b84e14610aca5781638285ef4014610a9857816387b2793714610a5f5781638c5d0ed314610a415781638da5cb5b14610a18578163910dd7c8146107e0578163959916dc146107c357816399a970281461079b5781639e15e89f14610760578163a9059cbb1461067d578163b0e21e8a1461065f578163b27c0e741461062c578163b7113f1914610609578163bb4cfe3b146105eb578163bde39c5d146105cd578163c1ad5c8d146105aa578163ce8849ed14610581578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613664565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce612614565b60406103d861262a565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b90503461057d5761043c36612692565b8394969793929192421161054a57610508926105009260018060a01b0395868b169788600052600460205260406000209182549261047984613303565b90556040519160208301936000805160206142678339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b5190206104cf612faa565b9060405190602082019261190160f01b845260228301526042820152604281526104f88161278e565b51902061327e565b91909161317f565b1603610517576102e492613360565b60405162461bcd60e51b815260206004820152601e60248201526000805160206142478339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206142278339815191526044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105c56133b7565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e757602554604080516001600160401b03808416825292821c909216602083015290f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e757610697612614565b6024358092811580159061074e575b6106de575b50506040519182526001600160a01b03169033906000805160206142e783398151915290602090a3602060405160018152f35b338152600160205260408120546106f7838210156130d3565b6001600160a01b0384169033829003610712575b50506106ab565b60409361072991610724841515613118565b6128e5565b3383526001602052838320558152206107438382546128f2565b90558183808061070b565b50336001600160a01b038416146106a6565b82346102e75760403660031901126102e757606061078861077f612614565b60243590612a31565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105c56107ba612614565b60243590612e78565b82346102e757806003193601126102e75760208054604051908152f35b90503461057d57604036600319011261057d576004356001600160401b038111610a145736602382011215610a145780600401359061081e826127e8565b9261082c60405194856127c5565b82845284602092838601943660248284010111610a14578060248693018737860101526024359161ffff8316809303610a1057610100938486805181010312610a0c5761087890612b70565b916108856040870161315d565b906108926060880161315d565b9660808101519660a0820151926108ab60c08401613171565b91818401519301519360018060a01b03808097169b16988142116109d9579289888d9897946109749794610500978f8e6000146109c457600080516020614267833981519152955b8d6000526004865260406000209283549361090d85613303565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610941816127a9565b51902061094c612faa565b90604051908a82019261190160f01b845260228301526042820152604281526104f88161278e565b1603610992575015610989576102e492613360565b6102e492613312565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206142478339815191526044820152fd5b6000805160206142c7833981519152956108f3565b60405162461bcd60e51b815260048101899052601d60248201526000805160206142278339815191526044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610a87612614565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610af1610ae7612614565b6024359033613312565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b24612614565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610b8083612710565b808352600193808516908115610c3e5750600114610bf3575b50610ba6925003826127c5565b60405180926020908183528351918281850152815b838110610bdc57505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610bbb565b6010865260008051602061430783398151915293602092508691905b818310610c26575050610ba6935082010185610b99565b85548784018501529485019486945091830191610c0f565b9050610ba694506020925060ff191682840152151560051b82010185610b99565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610c8b846126e1565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610cbf612614565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610d31612614565b610d39612640565b916084356001600160401b03811161057d57610d59903690600401612665565b9290600660005260209460078652610d7960ff6040600020541615613762565b610d81612b7d565b5050610d8b613664565b610da06001600160a01b0384163014156137df565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156110fa57610df191610dec91879161111d575b506001600160a01b038416906139a6565b613844565b610dfd60243584613ca8565b6001600160a01b038316845260188652604084208054610e2090602435906128e5565b9055610e306024356015546128e5565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a0c57630208d92960e11b835286918391829084908290610eb090602435906001600160a01b038b16306004860161388b565b03925af180156110fa57908591611105575b5050610eef610140600c54600e546040519384928392633d9545e960e11b84526024359160048501613b7d565b03816001600160a01b0386165afa9081156110fa57856040949392869282916110c9575b50610f378651998a968795869463efa84c6d60e01b86526044359060048701613bbd565b03926001600160a01b03165af19182156110865780938193611092575b50610f63604435851015613c66565b6001600160a01b038216815260178552604081205490610f8a82610f8561358f565b613da9565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611086579161104c575b506105c593610ff493929111610ff957610fe9908280613e07565b505b601154906138b5565b61379f565b5061100261358f565b80516001600160801b03908116611027575050611021845b8280613e07565b50610feb565b818161103e611047938a611021960151168961288e565b915116906128b7565b61101a565b929190508583813d831161107f575b61106581836127c5565b8101031261107a5791519091906105c5610fce565b600080fd5b503d61105b565b604051903d90823e3d90fd5b9092506110b891935060403d6040116110c2575b6110b081836127c5565b810190613ba7565b9290929185610f54565b503d6110a6565b6110ed91506101403d610140116110f3575b6110e581836127c5565b810190613a93565b8a610f13565b503d6110db565b6040513d87823e3d90fd5b61110e9061274a565b611119578387610ec2565b8380fd5b61113d9150893d8b11611143575b61113581836127c5565b81019061382a565b89610ddb565b503d61112b565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b0390818116338190036111de57806005549384166000805160206142a78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b0361124a612614565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105c5604435602435600435612918565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105c5612faa565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576113d9612614565b906113e261262a565b6044359182611420575b506040519182526001600160a01b039081169216906000805160206142e783398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611449828610156130d3565b86169384840361145e575b50505050506113ec565b838652600283526040862033600052835260406000205460001981036114cc575b50926001602096936114aa87946040976107246000805160206142e78339815191529c9a1515613118565b92855252838320558152206114c08582546128f2565b90559185808581611454565b9091811061152257926001602096936114aa8a6000805160206142e78339815191529a98956114fd8260409a6128e5565b868952600285528989203360005285528960002055949750949799505093965061147f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e75761159a612614565b608435906001600160a01b0382168203610a145760a4356001600160401b038111611119576115cd903690600401612665565b92906005855260076020526115e960ff60408720541615613762565b6115f1612b7d565b50506115fb613664565b6116106001600160a01b0384163014156137df565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611c025761165d91610dec918891611dbc575b506001600160a01b038516906139a6565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611db1578296611d7d575b5085611d1d575b505050620186a06116c760205460243561288e565b049260018060a01b03821687526024602052604087206116e88582546128f2565b90556116f261358f565b936116ff816024356128f2565b946000602060405161171081612773565b828152015280516001600160801b03908116611cc1578061173781895b16828551166135b5565b16825280602083019261174f828a16838651166135b5565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611cab575b5050505050505015611c6857879460018060a01b03871686526017602052604086206117b28282546128f2565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611c64578460405180926340c10f1960e01b82528183816118316024353060048401613d5f565b03925af19081156110fa578591611c50575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611bb7578792611c0d575b5060095460405163095ea7b360e01b81529260209284929091839182906118c490602435906001600160a01b031660048401613d5f565b03925af18015611c0257611bc2575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119139160243591908b1690309060048601613d7a565b03925af1938415611bb7578794611b90575b506101409061193a600e5495600c54926128f2565b946119596040519687938493633d9545e960e11b855260048501613b7d565b03816001600160a01b0385165afa928684156110865760409486928291611b6f575b5061199f86519889968795869463efa84c6d60e01b86526064359060048701613bbd565b03926001600160a01b03165af18015611b645783928491611b3f575b506119ca606435841015613c66565b6119d48183613ca8565b8015611ab7575b6001600160a01b038216845260186020526040842080546119fd9083906128f2565b9055611a0b816015546128f2565b601555600c546009546001600160a01b0316908590823b1561057d57611a4c92849183604051809681958294630208d92960e11b8452308c6004860161388b565b03925af180156110fa57611aa3575b506020936105c592610ff49290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a4601154906138b5565b611aad859161274a565b6111195784611a5b565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611b34578491611b02575b506119db565b90506020813d602011611b2c575b81611b1d602093836127c5565b8101031261107a575184611afc565b3d9150611b10565b6040513d86823e3d90fd5b9050611b5b91925060403d6040116110c2576110b081836127c5565b919091846119bb565b6040513d85823e3d90fd5b611b8a91506101403d610140116110f3576110e581836127c5565b8961197b565b610140919450611bae9060403d6040116110c2576110b081836127c5565b90509390611925565b6040513d89823e3d90fd5b6020813d602011611bfa575b81611bdb602093836127c5565b81010312610a1057604091611bf261191392612b70565b5091506118d3565b3d9150611bce565b6040513d88823e3d90fd5b91506020823d602011611c48575b81611c28602093836127c5565b81010312610a0c576118c4602091611c408994612b70565b50915061188d565b3d9150611c1b565b611c599061274a565b611119578388611843565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527a109a59d0985b99ce88189bdc9c9bddc818d85c081c995858da1959602a1b6044820152606490fd5b161792161617111590508980808b818080611785565b602082019680611cf3611ce4611cda858c51168461288e565b85875116906128b7565b998461103e818851168d61288e565b10611d04575b61173782809261172d565b9661173782611d138193613303565b9992505050611cf9565b823b1561057d57604051630208d92960e11b8152928391829084908290611d54908b906001600160a01b038b168e6004860161388b565b03925af18015611bb757611d6a575b86816116b2565b611d769096919661274a565b9486611d63565b9095506020813d602011611da9575b81611d99602093836127c5565b8101031261057d575194896116ab565b3d9150611d8c565b6040513d84823e3d90fd5b611dd5915060203d6020116111435761113581836127c5565b8861164c565b90503461057d57611deb36612692565b8397949697929192421161054a57611e7092610500928a60018060a01b0396878c169889835260046020526040832091825492611e2784613303565b90556040519260208401946000805160206142c7833981519152865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c4816127a9565b1603610517576102e492613312565b82346102e75760203660031901126102e7576020906040906001600160a01b03611ea7612614565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e757600435600981101561057d57611efa612656565b6008549091906001600160a01b03163303611fb05760ff611f1a826126e1565b54161515911515918214611f7657808260ff611f38611f66946126e1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46126e1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576024356001600160a01b03818116929183900361057d576001600160401b039260443584811161111957612037903690600401612665565b9094612041612640565b9261205185600554163314612803565b6004358061244b575b508061240d575b50816122b1575b505081929350169081612271575b505060843580612259575b5060a43580612241575b5060c4358061222a575b5060e43580612206575b5061010435806121e2575b5061012435806121b1575b50610144358061213d575b5061016435806120ce575080f35b601e5481106120dd57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61214c620186a082111561284e565b601f54811161215e57601e55816120c0565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655816120b5565b6121f0620186a0821061284e565b6121fd601b54821161284e565b601c55816120aa565b612214620186a0821061284e565b612221601c54821061284e565b601b558161209f565b612238620186a0821061284e565b601d5581612095565b612250620186a082111561284e565b601a558161208b565b612268620186a082111561284e565b60195581612081565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180612076565b81116123f9576122c2601054612710565b601f81116123aa575b5083601f82116001146123315781908596859692612326575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1839285612068565b0135905086806122e4565b60108552600080516020614307833981519152908560205b601f1985168210612392575050908495968392600194601f19811610612378575b505050811b016010556122fa565b0135600019600384901b60f8161c1916905586808061236a565b80600184958294958c01358155019401920190612349565b60108552600080516020614307833981519152601f830160051c8101602084106123f2575b601f90920160051c01905b8181106123e757506122cb565b8581556001016123da565b50806123cf565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186612061565b61245a620186a082111561284e565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a36020558761205a565b82346102e75760403660031901126102e757610af16124a8612614565b6024359033613360565b82346102e75760603660031901126102e7576124cc612614565b6124d4612656565b6044359081151582036111195760018060a01b039283916124fa83600554163314612803565b1561258c571690811590811591612584575b501561254757806005549283166000805160206142a78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461250c565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e75760406125be612b7d565b825191151582526020820152f35b83903461057d57604036600319011261057d5760406020926125ec612614565b6125f461262a565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361107a57565b602435906001600160a01b038216820361107a57565b606435906001600160a01b038216820361107a57565b60243590811515820361107a57565b9181601f8401121561107a578235916001600160401b03831161107a576020838186019501011161107a57565b60e090600319011261107a576001600160a01b0390600435828116810361107a5791602435908116810361107a5790604435906064359060843560ff8116810361107a579060a4359060c43590565b60098110156126fa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612740575b602083101461272a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161271f565b6001600160401b03811161275d57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761275d57604052565b608081019081106001600160401b0382111761275d57604052565b61010081019081106001600160401b0382111761275d57604052565b601f909101601f19168101906001600160401b0382119082101761275d57604052565b6001600160401b03811161275d57601f01601f191660200190565b1561280a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561285557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156128a157565b634e487b7160e01b600052601160045260246000fd5b81156128c1570490565b634e487b7160e01b600052601260045260246000fd5b604d81116128a157600a0a90565b919082039182116128a157565b919082018092116128a157565b818103929160001380158285131691841216176128a157565b60145491929161296191612952916129489161293e906001600160801b0383169061288e565b9060801c906128b7565b93601f549061288e565b61295b836128d7565b906128b7565b808310612a29576129756129b191846128e5565b916129ac6129a661299d601e5461299761298e866128d7565b602154906128f2565b9061288e565b61295b846128d7565b916128d7565b6128ff565b6509184e72a000908181029181830514901517156128a157670de0b6b3a7640000918281029281840514901517156128a15780156128c157600160ff1b918083146000198314166128a15705906000821215612a225781146128a157600003905b808211612a1d575090565b905090565b5090612a12565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612b6357612a636135ce565b90612a6f861515612d75565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156110fa578591612b34575b5092859492612b14601893612aef612b2899612aea612ae160409a620186a0602254049061288e565b601e549061288e565b6128b7565b815190936001600160801b03918691612b0a9184169061288e565b92015116906128b7565b818110612b2c57035b978352522054612dc1565b9091565b505082612b1d565b90508381813d8311612b5c575b612b4b81836127c5565b81010312611c645751612b28612ab8565b503d612b41565b5050509192505080918190565b5190811515820361107a57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612bb281612710565b90816024860152600190858282169182600014612d51575050600114612d0d575b5050600083809203925af18015612d02576000948591612cc7575b50928415612c69578315612c2f57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612c7c601354601254906128f2565b4211612c8d57505060115490612c29565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612cfb575b612cdf81836127c5565b810103126102e7575080612cf285612b70565b94015138612bee565b503d612cd5565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612d3657505050508201604401600083612bd3565b80548c8601604401528a97508b965093019287908201612d1e565b8195506000949193506044925060ff191682840152151560051b8201019250612bd3565b15612d7c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612dcc821515612d75565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612e6c57600091612e39575b5090612aea612e25926022549061288e565b620186a0612e35601e548361288e565b0491565b906020823d8211612e64575b81612e52602093836127c5565b810103126102e7575051612aea612e13565b3d9150612e45565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612e9b91612dc1565b918352601760205260408320548015612fa4578115612fa457818110612fa45782811015612f9a57601454612ee49183916107249161293e906001600160801b0383169061288e565b90620186a09283830292808404851490151715612f8657612f09929161295b916128e5565b91601b5491601c5493612f1c85856128ff565b80820291848212600160ff1b821416612f86578183051490151715612f725705818482019485129112908015821691151617612f5e5750808212612a1d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806130aa575b15613005577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761275d5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612fdc565b156130da57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561311f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361107a57565b519060ff8216820361107a57565b60058110156126fa57806131905750565b600181036131d85760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036132255760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461322e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116132f75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156132ea5781516001600160a01b038116156132e4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146128a15760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613529576014546001600160801b031690811561352257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612e6c5785916000916134ed575b50600460405180948193631a674cc560e11b8352165afa938415612e6c576000946134be575b50506134519192670de0b6b3a76400009283916029549061288e565b0490818110156134b557613468602a5480926128e5565b838102908082048514901517156128a15761295b613489926134a9946128e5565b602754926134a36028549261349e84876128e5565b61288e565b046128f2565b90808211612a1d575090565b50505060275490565b81813d83116134e6575b6134d281836127c5565b810103126111195751925061345138613435565b503d6134c8565b9182813d831161351b575b61350281836127c5565b810103126102e75750613515859161315d565b3861340f565b503d6134f8565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612e6c57600091613561575090565b906020823d8211613587575b8161357a602093836127c5565b810103126102e757505190565b3d915061356d565b6040519061359c82612773565b6014546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116128a157565b600060206040516135de81612773565b82815201526025546001600160401b0391906135ff9060401c8316426128e5565b9182156136565761365161349e91670de0b6b3a764000061364661362161358f565b9660018060801b03958694858a5116906301e1338061363e6133b7565b04169061288e565b0416828551166135b5565b168252565b50905061366161358f565b90565b60405161367081612773565b60255460018060401b03908181168352818160401c166136976020850191808352426128e5565b92831561375b57602094816301e133806136af6133b7565b0416815281421683526136c061358f565b670de0b6b3a76400006136e560018060801b039761349e89855116878751169061288e565b04956136f6818816828451166135b5565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b600160401b600160801b0316176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561376957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156137a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156137e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9081602091031261107a575161ffff8116810361107a5790565b1561384b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b0380600094168452602060178152604085205490811561399c57601881526040862054801561375b57816138ef61358f565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611086578097613966575b5050612b0a61394b612ae1613961969798620186a0602254049061288e565b9561349e60018060801b0394858751169061288e565b111590565b9096508187813d8311613995575b61397e81836127c5565b810103126102e75750945194612b0a61394b61392c565b503d613974565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612e6c578493600091613a55575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612e6c57600091613a21575b50905090565b82813d8311613a4e575b613a3581836127c5565b810103126102e75750613a4790612b70565b8038613a1b565b503d613a2b565b9091929381813d8311613a8c575b613a6d81836127c5565b8101031261057d57519082821682036102e757508392919060446139e1565b503d613a63565b80910390610140821261107a576040805192606084016001600160401b0381118582101761275d578083526080821261107a57613acf8161278e565b613ad88461315d565b815260208401516080860152613aef83850161315d565b60a0860152606084015160c086015284526080607f1982011261107a5781908151613b198161278e565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261107a57613b72610120825193613b5d85612773565b613b6a6101008201612b70565b855201612b70565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919082604091031261107a576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613c6d57565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613cbc575050565b6000818152602090600382526040918282203383528152848383205410613d255783825260038152828220338352815282822054600101613cfe575050505050565b613d19938252600381528282209033835252209182546128e5565b9055388080808061375b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160a01b039091168152602081019190915260400190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613dca575090925050565b908161103e81613ded613de3613df6968651168861288e565b828a5116906128b7565b9751168761288e565b10613dfd57565b9061366190613303565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116140a9575b50831561406d5783613e43916140ca565b948386101561403157879885895260248452808920613e638882546128e5565b9055613e6d61358f565b9689858351613e7b81612773565b8281520152613e8a8689613da9565b9760018060801b0380613ea2818c16828551166140b1565b16825286820190613eb8818a16828451166140b1565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613ee98882546128e5565b9055613f1a838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d7a565b03925af180156140275790613f4793929161400b575b50613f3b888b6128e5565b80613fe8575b506128e5565b80613f6d575b5060008051602061428783398151915294959697989950519485521692a4565b8a9084600d541690813b15610a14578291613f9e918551948580948193632770a7eb60e21b83523060048401613d5f565b03925af18015613fde57600080516020614287833981519152969798999a9b50613fcf575b8a999897969550613f4d565b613fd89061274a565b38613fc3565b82513d8d823e3d90fd5b6140059150613ffe620186a091601a549061288e565b048a6128e5565b38613f41565b61402190853d87116110c2576110b081836127c5565b50613f30565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613e32565b6001600160801b0391821690821603919082116128a157565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146141d457848091600d541687518681019063313ce56760e01b82526004815261411a81612773565b51915afa3d156141cc573d9061412f826127e8565b9161413c885193846127c5565b82523d868684013e5b806141c2575b156141b4578381805181010312611c64579060ff61416d856141769401613171565b169283916141e3565b80156141ab576024929161295b6129a661419a93898852868652888820549061288e565b948352522054808211612a1d575090565b50505091505090565b506141769060ff601261416d565b508381511461414b565b606090614145565b50505060249192935052205490565b918215801561421e575b612a2957600181018091116128a15761420c92612997612aea926128d7565b600581018091116128a157600a900490565b5081156141ed56fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212206e5748d5572295740eb1e030ef0c11a12359885cac9c62f4148e1ac86a64d44864736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561433a9283620001ab8439608051836130c0015260a0518361318b015260c0518361308a015260e0518361310f01525182613135015251816130ec0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220efe4facff27eb1ff6b838952ee2d36961365526cfd4733e89a317532cb329a8064736f6c63430008120033"; type BBLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts index 29c435d2..2405de45 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts @@ -928,14 +928,14 @@ const _abi = [ type: "uint256[]", }, { - internalType: "bytes[]", - name: "collateralToAssetSwapDatas", - type: "bytes[]", + internalType: "contract IMarketLiquidatorReceiver[]", + name: "liquidatorReceivers", + type: "address[]", }, { - internalType: "contract ISwapper", - name: "swapper", - type: "address", + internalType: "bytes[]", + name: "liquidatorReceiverDatas", + type: "bytes[]", }, ], name: "liquidate", @@ -956,13 +956,13 @@ const _abi = [ type: "address", }, { - internalType: "contract ISwapper", - name: "swapper", + internalType: "contract IMarketLiquidatorReceiver", + name: "liquidatorReceiver", type: "address", }, { internalType: "bytes", - name: "collateralToAssetSwapData", + name: "liquidatorReceiverData", type: "bytes", }, ], @@ -1618,7 +1618,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556144a59283620001ab843960805183613428015260a051836134f2015260c051836133f2015260e051836134770152518261349d015251816134540152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612a1c5750816302ce728f146128c0578163078dfbe7146127ce578163095ea7b3146127a85781630996efb7146123045781630c4e84f0146121ea57816318160ddd146121ce5781631c9e379b146121945781631da8bf10146120ef5781631fb8f81a146120d157816323b872dd14611f2d578163331960ff14611f0f57816334ce998a14611ee657816334d441d014611ec85781633644e51514611ead57816337b6b7b914611e8f57816338d52e0f14611e665781633ba0b9a914611e485781633f741adb14611e2457816340626d8b14611e0657816344de240a14611de8578163473e3ce714611dca57816348e4163e14611d905781634e71e0c814611cf4578163529898f214611cd65781635793546214611cb85781636b19ad1614611c9a5781636c3d8b8f14611c7157816370a0823114611c375781637277854714611c0157816374645ff314611af75781637dc0d1d014611ace5781637ecebe0014611a945781637fa0b84e14611a635781638285ef4014611a3157816387b27937146119f75781638c5d0ed3146119d95781638da5cb5b146119b0578163910dd7c8146117a8578163959916dc1461178b57816399a97028146117645781639e15e89f14611729578163a28e6b8214611363578163a9059cbb1461127c578163b0e21e8a1461125e578163b27c0e741461122b578163b7113f1914611208578163bb4cfe3b146111ea578163bde39c5d146111cc578163c1ad5c8d146111a9578163cb7940e1146105a6578163ce8849ed1461057d578163d505accf1461042e57508063d8dfeb4514610405578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613ae6565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e5576103cd612a68565b6103d5612a7e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761043c36612ae6565b8394969793929192421161054a57610508926105009260018060a01b0395868b16978860005260046020526040600020918254926104798461373a565b90556040519160208301936000805160206143d08339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b5190206104cf6133ef565b9060405190602082019261190160f01b845260228301526042820152604281526104f881612bcc565b5190206136b5565b9190916135b6565b1603610517576102e392613797565b60405162461bcd60e51b815260206004820152601e60248201526000805160206143b08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760803660031901126102e5576004356001600160401b0381116102e5576105d6903690600401612c82565b906024356001600160401b0381116102e5576105f6903690600401612c82565b6044356001600160401b0381116102e557610615903690600401612c82565b929061061f612a94565b926004600052600760205260ff6040600020541661117357861561113357610648818814613d55565b610653858814613d55565b600f546040805163d6d7d52560e01b8152949185906001600160a01b03168160008161068160048201613150565b03925af1938415610c80576000906000956110ff575b5084816110f5575b50156110eb57836011555b831561109b576106b8613ae6565b60009760005b8181106107075789156106cd57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61071281838b614243565b356001600160a01b03811681036102e55761072d8782614253565b15610742575b5061073d9061373a565b6106be565b9961074c9061373a565b99610758828686614243565b359089831015610c5b578260051b87013590601e19883603018212156102e5576001600160401b0388830135116102e5578188013536036020838a0101136102e557600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115610c80576107ed916107e89160009161106c575b506001600160a01b038d1690613c64565b613c04565b6107f789826132e5565b9289156110275760018060a01b03600954166020600c5460018060a01b03851660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80578b90600092610ff1575b5061086e6108739260225490612d3d565b612d66565b60018060a01b038316600052601760205261089381604060002054612e1a565b601d5480610fd2575b5080911115610f99578a9181811115610f915750925b6001600160a01b038316600090815260176020526040902054808511610f89575b846108dd91612d94565b6001600160a01b0384166000908152601760205260409020556108fe6139ca565b6020810180516001600160801b0316610f58575050835b6020610931620186a061092a60215489612d3d565b0487612da1565b606461095761094e60018060a01b036009541697600c5494612d3d565b60225490612d66565b916040519687938492638eb22cdd60e01b845260048401526024830152600060448301525afa928315610c8057600093610f24575b506001600160a01b0384166000908152601860205260409020548311610ee35760018060a01b038416600052601860205260406000206109cd848254612d94565b90558415610eb057601480549091610a166001600160801b036109f4898216828616613c4b565b16926001600160801b0319926001600160801b0316908316841760801c613c4b565b60801b16179055601580548380821115610ea657610a3391612d94565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b83526004830152896024830152600160448301525afa918215610c8057600092610e70575b50610aa690610a959036908d01803590602001612c26565b6001600160a01b038e163085613dc8565b610adb60408260018060a01b0360095416600e54600084518096819582946311a5cc7760e31b84523090309060048601614360565b03925af18015610c8057610e52575b5081811115610e3e57610b0f610b07610b1793620186a093612d94565b965b87612d3d565b048095612d94565b9184610cc5575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610c8c575b50600d546001600160a01b0316803b156102e55760006040518092632770a7eb60e21b8252818381610b9a8b3060048401613d97565b03925af18015610c8057610c71575b5060405190610bb782612bb1565b6001825260203681840137815115610c5b576001600160a01b03166020820190815260405191518291906000905b808210610c395750505091817f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929261073d989796959403902093610c30604051928392339684612c6c565b0390a490610733565b82516001600160a01b0316845260209384019390920191600190910190610be5565b634e487b7160e01b600052603260045260246000fd5b610c7a90612b9e565b8f610ba9565b6040513d6000823e3d90fd5b6020813d602011610cbd575b81610ca560209383612c03565b810103126102e557610cb690613126565b508f610b64565b3d9150610c98565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c8057610e05575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c8057610dcc575b50610d8960408660018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614360565b03925af18015610c8057610d9e575b50610b1e565b610dbf9060403d604011610dc5575b610db78183612c03565b810190613db2565b50610d98565b503d610dad565b6020813d602011610dfd575b81610de560209383612c03565b810103126102e557610df690613126565b508f610d53565b3d9150610dd8565b6020813d602011610e36575b81610e1e60209383612c03565b810103126102e557610e2f90613126565b508f610d0b565b3d9150610e11565b5050610b17620186a0610b0f600096610b09565b610e6a9060403d604011610dc557610db78183612c03565b50610aea565b9091506020813d602011610e9e575b81610e8c60209383612c03565b810103126102e5575190610a95610a7d565b3d9150610e7f565b5050600090610a35565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011610f50575b81610f4060209383612c03565b810103126102e55751913861098c565b3d9150610f33565b9051610f839190610f72906001600160801b031687612d3d565b90516001600160801b031690612d66565b93610915565b9350836108d3565b9050926108b2565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90620186a0610fe4610feb9383612d3d565b0490612da1565b3861089c565b9150506020813d60201161101f575b8161100d60209383612c03565b810103126102e557518a61086e61085d565b3d9150611000565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b61108e915060203d602011611094575b6110868183612c03565b810190613bea565b386107d7565b503d61107c565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b60115493506106aa565b905015158961069f565b905061112491945060403d60401161112c575b61111c8183612c03565b810190613133565b939089610697565b503d611112565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e55760206111c46137ee565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e557602554604080516001600160401b03808416825292821c909216602083015290f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e557611295612a68565b602435908115801590611351575b6112d9575b6040519182526001600160a01b031690339060008051602061443083398151915290602090a3602060405160018152f35b3360005260016020526040600020546112f483821015613518565b6001600160a01b038216908333839003611311575b5050506112a8565b6113259161132084151561355d565b612d94565b3360005260016020526040600020556000526040600020611347838254612da1565b9055828083611309565b50336001600160a01b038216146112a3565b346102e55760803660031901126102e55761137c612a68565b611384612a7e565b6001600160a01b039060443582811691908290036102e5576064356001600160401b0381116102e5576113bb903690600401612ab9565b6113ca85600554163314612cb2565b600f546040805163d6d7d52560e01b81529182908816816000816113f060048201613150565b03925af1908115610c8057600090600092611707575b5081816116fd575b50156116f457806011555b1561169f57611426613ae6565b84600a541660405196879163433e762d60e01b835282600460209a8b935afa918215610c80576107e887899461146493600091611682575b50613c64565b1694856000526017875286611488604060002054620186a0610fe460215483612d3d565b91600954169160646114a361094e600c549360115490612d3d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610c8057600091611655575b5085600052601887526040600020541161161257906115bf9160186102e39787600052818152604060002054976115876115106139ca565b82600052601784526115826115776040600020549260008760405161153481612bb1565b82815201528681019360018060801b03928382818094868a83815116156000146115c55750508161156a915b1682885116613c4b565b1685521682875116613c4b565b168094525116613a9f565b613ac1565b8060005260178252600060408120558282526115aa604060002054601554612d94565b60155560005252600060408120553691612c26565b92613dc8565b61156a926115fe6115f4866115eb6115e1828098511686612d3d565b8287511690612d66565b94511684612d3d565b848c511690612d66565b10156115605761160d9061373a565b611560565b6064866040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508681813d831161167b575b61166c8183612c03565b810103126102e55751876114d8565b503d611662565b61169991508c8d3d10611094576110868183612c03565b8c61145e565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b50601154611419565b905015158861140e565b9050611722915060403d60401161112c5761111c8183612c03565b9088611406565b346102e55760403660031901126102e557611760611751611748612a68565b60243590612fdd565b60409391935193849384612c6c565b0390f35b346102e55760403660031901126102e55760206111c4611782612a68565b602435906132e5565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e5576117e9903690602481600401359101612c26565b9060243561ffff81168091036102e5576101009182848051810103126102e5576020611816818601613126565b91611823604087016135a2565b90611830606088016135a2565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a86169890949042821061197d579289888d9897946119189794610500978f8e600014611968576000805160206143d0833981519152955b8d600052600486526040600020928354936118b18561373a565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526118e581612be7565b5190206118f06133ef565b90604051908a82019261190160f01b845260228301526042820152604281526104f881612bcc565b160361193657501561192d576102e392613797565b6102e392613749565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206143b08339815191526044820152fd5b60008051602061441083398151915295611897565b60405162461bcd60e51b815260048101899052601d60248201526000805160206143908339815191526044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611a18612a68565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611a89611a7f612a68565b6024359033613749565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611ab5612a68565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051601054816000611b1a83612b64565b808352600193808516908115611be05750600114611b92575b50611b4092500382612c03565b6040519081602080825282519081818401526000935b828510611b79575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350611b56565b6010600090815260008051602061445083398151915294602093509091905b818310611bc8575050611b40935082010184611b33565b85548784018501529485019486945091830191611bb1565b9050611b4094506020925060ff191682840152151560051b82010184611b33565b346102e55760203660031901126102e55760043560098110156102e55760ff611c2b602092612b35565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611c58612a68565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611d4c57806005549384166000805160206143f0833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611db1612a68565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e55760206111c4604435602435600435612f16565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e55760206111c46133ef565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e557611f46612a68565b611f4e612a7e565b6044359081611f8b575b6040519182526001600160a01b0390811692169060008051602061443083398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611fb382861015613518565b851693848403611fc8575b5050505050611f58565b83600052600283526040600020336000528352604060002054600019810361203c575b508492612013600080516020614430833981519152979593600193611320602099151561355d565b92600052526040600020556000526040600020612031858254612da1565b905591858481611fbe565b9091811061209157602094926120138860008051602061443083398151915298969461206a82600196612d94565b86600052600285526040600020336000528552604060002055935093959750509294611feb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e5576120fd36612ae6565b8394969793929192421161054a57612185926105009260018060a01b0395868b169788600052600460205260406000209182549261213a8461373a565b90556040519160208301936000805160206144108339815191528552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104c481612be7565b1603610517576102e392613749565b346102e55760203660031901126102e5576001600160a01b036121b5612a68565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e55761220f612aaa565b6008549091906001600160a01b031633036122c85760ff61222f82612b35565b5416151591151591821461228e57808260ff61224d61227c94612b35565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612b35565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576024356001600160a01b03818116918290036102e5576001600160401b03916044358381116102e55761234d903690600401612ab9565b93612356612a94565b9261236685600554163314612cb2565b60043580612767575b5080612728575b50846125c3575b50508116915081612582575b50506084358061256a575b5060a43580612552575b5060c4358061253b575b5060e43580612517575b5061010435806124f3575b5061012435806124c1575b50610144358061244d575b5061016435806123df57005b601e5481106123ed57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61245c620186a0821115612cfd565b601f54811161246e57601e55806123d3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806123c8565b612501620186a08210612cfd565b61250e601b548211612cfd565b601c55806123bd565b612525620186a08210612cfd565b612532601c548210612cfd565b601b55806123b2565b612549620186a08210612cfd565b601d55806123a8565b612561620186a0821115612cfd565b601a558061239e565b612579620186a0821115612cfd565b60195580612394565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080612389565b8411612712576125d4601054612b64565b601f81116126c1575b50600090601f851160011461264657938091849560009261263b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838061237d565b0135905085806125f9565b60106000908152600080516020614450833981519152929060205b601f19881682106126a95750509185916001938697601f1981161061268f575b505050811b0160105561260f565b0135600019600384901b60f8161c19169055858080612681565b80600184968294958701358155019501920190612661565b6010600052600080516020614450833981519152601f860160051c81016020871061270b575b601f90920160051c01905b8181106126ff57506125dd565b600081556001016126f2565b50806126e7565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185612376565b612776620186a0821115612cfd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a36020558661236f565b346102e55760403660031901126102e557611a896127c4612a68565b6024359033613797565b346102e55760603660031901126102e5576127e7612a68565b6127ef612aaa565b6044359081151582036102e55760018060a01b0392839161281583600554163314612cb2565b156128a757169081159081159161289f575b501561286257806005549283166000805160206143f0833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612827565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b0316816000816128fe60048201613150565b03925af18015610c80576000916000916129fb575b5090801561299d5781156129615781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b90506129ae60135460125490612da1565b42116129bf5760409060115461294f565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612a16915060403d60401161112c5761111c8183612c03565b82612913565b346102e55760403660031901126102e557602090612a38612a68565b612a40612a7e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b606435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612b4e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612b94575b6020831014612b7e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612b73565b6001600160401b03811161271257604052565b604081019081106001600160401b0382111761271257604052565b608081019081106001600160401b0382111761271257604052565b61010081019081106001600160401b0382111761271257604052565b601f909101601f19168101906001600160401b0382119082101761271257604052565b9192916001600160401b0382116127125760405191612c4f601f8201601f191660200184612c03565b8294818452818301116102e5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612cb957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612d0457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612d5057565b634e487b7160e01b600052601160045260246000fd5b8115612d70570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612d5057600a0a90565b91908203918211612d5057565b91908201809211612d5057565b81810392916000138015828513169184121617612d5057565b906509184e72a00091828102928184051490151715612d5057565b90670de0b6b3a764000091828102928184051490151715612d5057565b8115612d7057600160ff1b8114600019831416612d50570590565b601454612e5591612e449190612e3a906001600160801b03831690612d3d565b9060801c90612d66565b91620186a0918291601f5490612d3d565b04808310612f0e57612e679083612d94565b601e54602154830190818411612d50578391612e8291612d3d565b0491828103906000809412818312811691831390151617612efa5790612eb3612ead612eb893612dc7565b91612de2565b612dff565b9080821215612ef357600160ff1b8214612edf5703905b808211612eda575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612ecf565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291612f5591612f4691612f3c91612e3a906001600160801b03831690612d3d565b93601f5490612d3d565b612f4f83612d86565b90612d66565b90818310612f0e57612eb3612ead612faf612f73612fb49587612d94565b93612faa612fa4612f9b601e54612f95612f8c86612d86565b60215490612da1565b90612d3d565b612f4f84612d86565b91612d86565b612dae565b612dc7565b6000811215612fd757600160ff1b8114612d505760000390808211612eda575090565b90612ecf565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156131195761300f613a09565b9061301b8615156131eb565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561310e5785916130db575b50928594926130bb6018936130966130cf9961086e61308d60409a620186a06022540490612d3d565b601e5490612d3d565b815190936001600160801b039186916130b191841690612d3d565b9201511690612d66565b8181106130d357035b978352522054613237565b9091565b5050826130c4565b90508381813d8311613107575b6130f28183612c03565b8101031261310357516130cf613064565b8480fd5b503d6130e8565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e557602061314a83613126565b92015190565b60208082526000916010549161316583612b64565b92838284015260019081811690816000146131c8575060011461318a575b5050505090565b929350601060005280600020926000935b8585106131b45750505060409250010138808080613183565b80548585016040015293820193810161319b565b925050506040935060ff929192191683830152151560051b010138808080613183565b156131f257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6132428215156131eb565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c80576000916132af575b509061086e61329b9260225490612d3d565b620186a06132ab601e5483612d3d565b0491565b906020823d82116132dd575b816132c860209383612c03565b810103126132da57505161086e613289565b80fd5b3d91506132bb565b6001600160a01b0316600081815260186020526040812054909261330891613237565b9183526017602052604083205480156133e95781156133e9578181106133e957828110156133df5760145461335191839161132091612e3a906001600160801b03831690612d3d565b90620186a092838302928084048514901517156133cb576133769291612f4f91612d94565b91601b5491601c54936133898585612dae565b80820291848212600160ff1b8214166133cb578183051490151715612efa5705818482019485129112908015821691151617612edf5750808212612eda575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806134ef575b1561344a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176127125760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613421565b1561351f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561356457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612b4e57806135c75750565b6001810361360f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361365c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461366557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161372e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156137215781516001600160a01b0381161561371b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612d505760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613964576014546001600160801b031690811561395d57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610c80578591600091613928575b50600460405180948193631a674cc560e11b8352165afa938415610c80576000946138f5575b50506138889192670de0b6b3a764000092839160295490612d3d565b0490818110156138ec5761389f602a548092612d94565b83810290808204851490151715612d5057612f4f6138c0926138e094612d94565b602754926138da602854926138d58487612d94565b612d3d565b04612da1565b90808211612eda575090565b50505060275490565b81813d8311613921575b6139098183612c03565b8101031261391d575192506138883861386c565b8380fd5b503d6138ff565b9182813d8311613956575b61393d8183612c03565b810103126132da575061395085916135a2565b38613846565b503d613933565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610c805760009161399c575090565b906020823d82116139c2575b816139b560209383612c03565b810103126132da57505190565b3d91506139a8565b604051906139d782612bb1565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612d5057565b60006020604051613a1981612bb1565b82815201526025546001600160401b039190613a3a9060401c831642612d94565b918215613a9157613a8c6138d591670de0b6b3a7640000613a81613a5c6139ca565b9660018060801b03958694858a5116906301e13380613a796137ee565b041690612d3d565b0416828551166139f0565b168252565b509050613a9c6139ca565b90565b601480546001600160801b0319166001600160801b0392909216919091179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b604051613af281612bb1565b6025546001600160401b03808216835260409190911c811660208301818152929190613b1e9042612d94565b918215613be457816301e13380613b336137ee565b041681528142168452613b95613b476139ca565b936020670de0b6b3a7640000613b6f60018060801b03936138d5858a51168989511690612d3d565b0495613b8d83613b84818a16828551166139f0565b16808352613a9f565b015116613ac1565b5116918260255491600160401b600160801b03905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b908160209103126102e5575161ffff811681036102e55790565b15613c0b57565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160801b039182169082160391908211612d5057565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c80578493600091613d13575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c8057600091613cdf575b50905090565b82813d8311613d0c575b613cf38183612c03565b810103126132da5750613d0590613126565b8038613cd9565b503d613ce9565b9091929381813d8311613d4e575b613d2b8183612c03565b81010312613d4a57519082821682036132da5750839291906044613c9f565b5080fd5b503d613d21565b15613d5c57565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b6001600160a01b039091168152602081019190915260400190565b91908260409103126102e5576020825192015190565b600954600c5495946001600160a01b039182169390929160009190853b1561423f576040988951630208d92960e11b81528481608481838760049e8f3090850152169c8d9760249e8f85015260448401528b60648401525af180156140665761422c575b5060209586818051810103126102e55786015180156141ed5790829189949360095416968c89600e549151809a8180613e72868c627eeac760e11b9e8f85528401613d97565b03915afa9889156141b057908e94939291899a6141ba575b50600c54945194633d9545e960e11b86528d8601528b850152876044850152606484015260016084840152600160a4840152610140808460c481865afa9384156141b057888f939487958f938f958f91859a614070575b50508680989960606101c49899519b8c9a8b9963efa84c6d60e01b8b52845192835116908b015285820151908a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af180156140665791879391613fb29796959361404a575b506009541690600e54928c519788948593849384528d8401613d97565b03915afa90811561403f5790614010575b613fcd9250612d94565b948515613fda5750505050565b5162461bcd60e51b81529283015260149082015273109a59d0985b99ce8814ddd85c0819985a5b195960621b6044820152606490fd5b508282813d8311614038575b6140268183612c03565b810103126102e557613fcd9151613fc3565b503d61401c565b8851903d90823e3d90fd5b614060908d803d10610dc557610db78183612c03565b50613f95565b8b513d87823e3d90fd5b965096505095509550505080823d84116141a9575b61408f8183612c03565b810103918212614189578d5191606083016001600160401b03811184821017614195578f81905260808212614191578f6140e7906140cc83612bcc565b6140d5856135a2565b83528d850151608087015284016135a2565b60a0850152606083015160c085015283526080607f1982011261418d578e90815161411181612bcc565b6080840151815260a08401518d82015260c08401518382015260e08401516060820152848d015260ff190112614189578b888f949587968d8f9688906101c49761417861012084519261416384612bb1565b6141706101008201613126565b845201613126565b848201528282015299989796613ee1565b8780fd5b8880fd5b8980fd5b8c60418f634e487b7160e01b600052526000fd5b503d614085565b8e513d8a823e3d90fd5b8b80929b508196503d83116141e6575b6141d48183612c03565b810103126102e5578d93519838613e8a565b503d6141ca565b8a5162461bcd60e51b8152808a01889052601a818a015279084d2ce84c2dcce7440e6d8d2e0e0c2ceca40e8dede40d0d2ced60331b6044820152606490fd5b61423890949194612b9e565b9238613e2c565b8280fd5b9190811015610c5b5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561435657601881526040862054801561434f578161428d6139ca565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561434357809761430d575b50506130b16142f26142e9614308969798620186a06022540490612d3d565b601f5490612d3d565b956138d560018060801b03948587511690612d3d565b111590565b9096508187813d831161433c575b6143258183612c03565b810103126132da57509451946130b16142f26142ca565b503d61431b565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a0019056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203134f5dff25a7f8c9b11772ca3c81e4bfc328b8b90914fd123d53737e6b8854364736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556142be9283620001ab8439608051836135b0015260a0518361367b015260c0518361357a015260e051836135ff01525182613625015251816135dc0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203e990b2d4ed7ca6688ee176ce98870e8bfef945e990b473d9aa0d6abe2f3a1ff64736f6c63430008120033"; type BBLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts index 026753ff..3169dfa6 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts @@ -1534,7 +1534,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126dc9283620001ab84396080518361224f015260a05183612319015260c05183612219015260e0518361229e015251826122c40152518161227b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611abb5750806302ce728f146118a4578063078dfbe7146117b2578063095ea7b31461178c5780630996efb7146112d55780630c4e84f0146111bb57806318160ddd1461119f5780631c9e379b146111655780631da8bf10146110bb5780631fb8f81a1461109d57806323b872dd14610ef9578063331960ff14610edb57806334d441d014610ebd5780633644e51514610ea257806337b6b7b914610e8457806338d52e0f14610e5b5780633ba0b9a914610e3d5780633f741adb14610e1957806340626d8b14610dfb57806344de240a14610ddd578063473e3ce714610dbf57806348e4163e14610d855780634e71e0c814610ce9578063529898f214610ccb5780635793546214610cad5780636b19ad1614610c8f5780636c3d8b8f14610c6657806370a0823114610c2c5780637277854714610bf657806374645ff314610aec5780637dc0d1d014610ac35780637ecebe0014610a895780637fa0b84e14610a585780638285ef4014610a2657806387b27937146109ec5780638c5d0ed3146109ce5780638da5cb5b146109a5578063910dd7c8146107b0578063959916dc1461079357806399a97028146107645780639e15e89f1461072a578063a9059cbb14610643578063b0e21e8a14610625578063b27c0e74146105f2578063b7113f19146105cf578063bb4cfe3b146105b1578063bde39c5d14610593578063ce8849ed1461056a578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b07565b610381611b1d565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f576104b9956104b1956001830190556040519060208201926000805160206126078339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b519020610480612216565b9060405190602082019261190160f01b845260228301526042820152604281526104a981611c16565b5190206124dc565b9190916123dd565b16036104ca576104c8926125af565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af57602554604080516001600160401b03808416825292821c909216602083015290f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761065c611b07565b602435908115801590610718575b6106a0575b6040519182526001600160a01b031690339060008051602061266783398151915290602090a3602060405160018152f35b3360005260016020526040600020546106bb8382101561233f565b6001600160a01b0382169083338390036106d8575b50505061066f565b6106ec916106e7841515612384565b611d20565b336000526001602052604060002055600052604060002061070e838254611d2d565b90558280836106d0565b50336001600160a01b0382161461066a565b346102af5760403660031901126102af576060610751610748611b07565b60243590611e6c565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061078b610782611b07565b602435906120e4565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af57806004013591821161098f5760405191610802601f8201601f191660200184611c31565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761084e90611fdd565b61085a604083016123c9565b91610867606082016123c9565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161052557851561097b576000805160206126078339815191525b6001600160a01b03881660009081526004602052604090208054909690600019811461050f5761ffff6104b1976109389960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261092981611bfa565b60208151910120610480612216565b6001600160a01b038381169116036104ca5715610965576104c8926001600160a01b0390811691166125af565b6104c8926001600160a01b039081169116612561565b6000805160206126478339815191526108aa565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a0d611b07565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610a7e610a74611b07565b6024359033612561565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610aaa611b07565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b0f83611bc0565b808352600193808516908115610bd55750600114610b87575b50610b3592500382611c31565b6040519081602080825282519081818401526000935b828510610b6e575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b4b565b6010600090815260008051602061268783398151915294602093509091905b818310610bbd575050610b35935082010184610b28565b85548784018501529485019486945091830191610ba6565b9050610b3594506020925060ff191682840152151560051b82010184610b28565b346102af5760203660031901126102af5760043560098110156102af5760ff610c20602092611b91565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c4d611b07565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d415780600554938416600080516020612627833981519152600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610da6611b07565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061078b604435602435600435611d53565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061078b612216565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f12611b07565b610f1a611b1d565b6044359081610f57575b6040519182526001600160a01b0390811692169060008051602061266783398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610f7f8286101561233f565b851693848403610f94575b5050505050610f24565b836000526002835260406000203360005283526040600020546000198103611008575b508492610fdf6000805160206126678339815191529795936001936106e76020991515612384565b92600052526040600020556000526040600020610ffd858254611d2d565b905591858481610f8a565b9091811061105d5760209492610fdf8860008051602061266783398151915298969461103682600196611d20565b86600052600285526040600020336000528552604060002055935093959750509294610fb7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af576110c936611b42565b9183919395949542116105255760018060a01b0392838816948560005260046020526040600020928354600019811461050f57611156956104b1956001830190556040519060208201926000805160206126478339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261047581611bfa565b16036104ca576104c892612561565b346102af5760203660031901126102af576001600160a01b03611186611b07565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af576111e0611b33565b6008549091906001600160a01b031633036112995760ff61120082611b91565b5416151591151591821461125f57808260ff61121e61124d94611b91565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b91565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af57602480356001600160a01b03818116918290036102af576001600160401b036044358181116102af57366023820112156102af5780600401359182116102af57368583830101116102af57606435938385168095036102af5761134f84600554163314611c54565b6004358061174b575b508061170c575b5084826115aa575b50505081611569575b505060843580611551575b5060a43580611539575b5060c43580611522575b5060e435806114fe575b5061010435806114da575b5061012435806114a8575b506101443580611435575b506101643590816113c757005b601e5482106113d65750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611444620186a0821115611c9f565b601f54811161145657601e55816113ba565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816113af565b6114e8620186a08210611c9f565b6114f5601b548211611c9f565b601c55816113a4565b61150c620186a08210611c9f565b611519601c548210611c9f565b601b5581611399565b611530620186a08210611c9f565b601d558161138f565b611548620186a0821115611c9f565b601a5581611385565b611560620186a0821115611c9f565b6019558161137b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180611370565b82916115b7601054611bc0565b601f81116116ab575b50600090601f84116001146116285760009361161b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084611367565b01013590508486806115d7565b60106000908152601f198516955060008051602061268783398151915293509091889160205b87821061168c5750508460019610611670575b50505050811b016010556115ee565b60001960f88660031b161c199201013516905585808681611661565b828501909301358555600194909401938992918201919081019061164e565b60106000529092509050600080516020612687833981519152601f840160051c810160208510611705575b91849391601f8994920160051c01905b8181106116f357506115c0565b600081558594508893506001016116e6565b50806116d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561135f565b61175a620186a0821115611c9f565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a360205586611358565b346102af5760403660031901126102af57610a7e6117a8611b07565b60243590336125af565b346102af5760603660031901126102af576117cb611b07565b6117d3611b33565b6044359081151582036102af5760018060a01b039283916117f983600554163314611c54565b1561188b571690811590811591611883575b50156118465780600554928316600080516020612627833981519152600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508361180b565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546118e681611bc0565b908160248501526001908181169081600014611a955750600114611a55575b50509060409181600081809603925af18015611a4957600091600091611a0a575b5081156119ad5780156119715760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b506119bd60135460125490611d2d565b42116119ce57601154604092611961565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a41575b81611a2660409383611c31565b810103126102af5781611a3882611fdd565b91015183611926565b3d9150611a19565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611a80575050505091810160440191806040611905565b80548688016044015295019486908201611a66565b60ff191660448087019190915292151560051b8501909201945082915060409050611905565b346102af5760403660031901126102af57602090611ad7611b07565b611adf611b1d565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611baa576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611bf0575b6020831014611bda57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bcf565b61010081019081106001600160401b0382111761098f57604052565b608081019081106001600160401b0382111761098f57604052565b601f909101601f19168101906001600160401b0382119082101761098f57604052565b15611c5b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ca657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561050f57565b8115611cfc570490565b634e487b7160e01b600052601260045260246000fd5b604d811161050f57600a0a90565b9190820391821161050f57565b9190820180921161050f57565b8181039291600013801582851316918412161761050f57565b601454919291611d9c91611d8d91611d8391611d79906001600160801b03831690611cdf565b9060801c90611cf2565b93601f5490611cdf565b611d9683611d12565b90611cf2565b808310611e6457611db0611dec9184611d20565b91611de7611de1611dd8601e54611dd2611dc986611d12565b60215490611d2d565b90611cdf565b611d9684611d12565b91611d12565b611d3a565b6509184e72a0009081810291818305149015171561050f57670de0b6b3a76400009182810292818405149015171561050f578015611cfc57600160ff1b9180831460001983141661050f5705906000821215611e5d57811461050f57600003905b808211611e58575090565b905090565b5090611e4d565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115611fd05783518085016001600160401b03811182821017611fbc578552888152888480830193828552611ec2891515611fea565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611fb2578a91611f7f575b50611f73979899949260189492611f56611f418a611f3c611f33611f5f97620186a06022540490611cdf565b601e5490611cdf565b611cf2565b915191946001600160801b0392831690611cdf565b91511690611cf2565b818110611f7757035b978352522054612036565b9091565b505082611f68565b90508481813d8311611fab575b611f968183611c31565b81010312611fa75751611f73611f07565b8980fd5b503d611f8c565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b15611ff157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612041821515611fea565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a49576000916120ae575b5090611f3c61209a9260225490611cdf565b620186a06120aa601e5483611cdf565b0491565b906020823d82116120dc575b816120c760209383611c31565b810103126120d9575051611f3c612088565b80fd5b3d91506120ba565b6001600160a01b0316600081815260186020526040812054909261210791612036565b918352601760205260408320548015612210578115612210578181106122105782811015612206576014546121509183916106e791611d79906001600160801b03831690611cdf565b90620186a092838302928084048514901517156121f2576121759291611d9691611d20565b91601b5491601c54936121888585611d3a565b80820291848212600160ff1b8214166121f25781830514901517156121de57058184820194851291129080158216911516176121ca5750808212611e58575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612316575b15612271577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b0382111761098f5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612248565b1561234657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561238b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611baa57806123ee5750565b600181036124365760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124835760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461248c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116125555791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156125485781516001600160a01b03811615612542579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a77051bfbb5fad893c7c0b2c6e817e28c298a6d568311d41b31e7dcd5b25b8bc64736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126a39283620001ab843960805183612295015260a05183612360015260c0518361225f015260e051836122e40152518261230a015251816122c10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eadf0960ce249225f85bbfa6ca419e318a421f46a4aa066bc33e854b1d64302164736f6c63430008120033"; type BBStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts index 7b8ed5aa..bc6ece99 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts @@ -1120,14 +1120,14 @@ const _abi = [ type: "uint256[]", }, { - internalType: "bytes[]", - name: "collateralToAssetSwapDatas", - type: "bytes[]", + internalType: "contract IMarketLiquidatorReceiver[]", + name: "liquidatorReceivers", + type: "address[]", }, { - internalType: "contract ISwapper", - name: "swapper", - type: "address", + internalType: "bytes[]", + name: "liquidatorReceiverDatas", + type: "bytes[]", }, ], name: "liquidate", @@ -1148,13 +1148,13 @@ const _abi = [ type: "address", }, { - internalType: "contract ISwapper", - name: "swapper", + internalType: "contract IMarketLiquidatorReceiver", + name: "liquidatorReceiver", type: "address", }, { internalType: "bytes", - name: "collateralToAssetSwapData", + name: "liquidatorReceiverData", type: "bytes", }, ], @@ -1982,7 +1982,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556143f69283620001ab8439608051836130bb015260a05183613176015260c05183613085015260e0518361310a01525182613130015251816130e70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cb7940e1146103b9578063cce19f81146103b4578063cd0211eb146103af578063ce8849ed146103aa578063d505accf146103a5578063d8dfeb45146103a0578063dd62ed3e1461039b578063de40657714610396578063e0996cb614610391578063e30c39781461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e5761232c565b61230e565b6122e5565b6122c7565b6122a9565b612225565b6121fc565b6121de565b6121b5565b612185565b61215c565b6120c0565b612097565b612015565b611fda565b611eaa565b611e81565b611e66565b611e48565b611e2a565b611e07565b611dd4565b611d48565b611d2a565b611b21565b611a0e565b611921565b611877565b611839565b61180e565b6117f1565b611770565b61172c565b61170e565b6116d1565b61169f565b611675565b611638565b61160f565b611548565b6113e7565b61136c565b611343565b611325565b6112fc565b611259565b61123b565b61121d565b6111c3565b611119565b610f8b565b610f4e565b610f30565b610f12565b610ef4565b610ed0565b610eb2565b610e89565b610e6b565b610e48565b610e2a565b610e01565b610de3565b610beb565b610bc2565b610bac565b610b62565b610a8f565b610978565b6108eb565b6108cf565b6107d8565b61074e565b6106df565b6105d6565b6105a3565b61056a565b6001600160a01b031690565b6001600160a01b0381160361050c57565b600080fd5b604090600319011261050c57600435610529816104fb565b90602435610536816104fb565b90565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b3461050c57602061059a61057d36610511565b6001600160a01b0390911660009081526003845260409020610553565b54604051908152f35b3461050c57600036600319011261050c5760406105be612da6565b825191151582526020820152f35b8015150361050c57565b3461050c57606036600319011261050c576004356105f3816104fb565b60243590610600826105cc565b6044359161060d836105cc565b6005546001600160a01b0391906106279083163314612345565b156106c6578116918215908115916106be575b50156106815761066f916106576106526005546104ef565b6104ef565b600080516020614361833981519152600080a3612390565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861063a565b60068054919092166001600160a01b0319909116179055005b3461050c57604036600319011261050c576107096004356106ff816104fb565b6024359033613590565b602060405160018152f35b359061071f826104fb565b565b9181601f8401121561050c578235916001600160401b03831161050c576020838186019501011161050c57565b3461050c5761018036600319011261050c5760243561076c816104fb565b604435906001600160401b03821161050c5761078f610019923690600401610721565b906064359261079d846104fb565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123d4565b60043590600982101561050c57565b3461050c57604036600319011261050c576107f16107c9565b6024356107fd816105cc565b6008546001600160a01b03163303610893576108828261083161082c610825610019966113ce565b5460ff1690565b151590565b610840841515918214156128a4565b61084c610825836113ce565b610855836113bf565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46113ce565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050c57600036600319011261050c57602060405160008152f35b3461050c57602036600319011261050c57600435610908816104fb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050c57565b60e090600319011261050c5760043561094b816104fb565b90602435610958816104fb565b90604435906064359060843561096d81610928565b9060a4359060c43590565b3461050c5761098636610933565b9592809594959291924211610a4a5761001996610a4593610a3293610a25878a610a1d8b610a0f610a2a996109ba8661351b565b60405195869460208601988991959493909260c09360e084019760008051602061438183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f1981018352826114cc565b5190206134c6565b61344e565b919091613333565b6001600160a01b038381169116146132ce565b613543565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050c5760c036600319011261050c57600435610aac816104fb565b608435610ab8816104fb565b60a435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f610ae9610b4e963690600401610721565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916140f8565b61422a565b60208082518301019101612edb565b6040519081529081906020820190565b0390f35b3461050c57600036600319011261050c576020602a54604051908152f35b606090600319011261050c57600435610b98816104fb565b90602435610ba5816104fb565b9060443590565b3461050c57610bba36610b80565b5050506141a2565b3461050c57600036600319011261050c57602c546040516001600160a01b039091168152602090f35b3461050c57608036600319011261050c576004356024356044359060643592610c1f60018060a01b03600554163314612345565b6004600c546020610c34610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57610c6f92600092610dae575b501460ff8019602654169115151617602655565b610c82610c7e60265460ff1690565b1590565b610c8857005b610c90613861565b80610d69575b5080610d24575b5080610cec575b5080610cac57005b80610cbe620186a061001993106141ee565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d1e916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610ca4565b610d6390610d3560285482116141ee565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c9d565b610da890610d7a60275482106141ee565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c96565b610dd091925060203d8111610dd7575b610dc881836114cc565b810190612edb565b9038610c5b565b503d610dbe565b612d14565b3461050c57600036600319011261050c576020601354604051908152f35b3461050c57600036600319011261050c576014546040516001600160801b039091168152602090f35b3461050c57600036600319011261050c576020601954604051908152f35b3461050c57600036600319011261050c576020610e63613082565b604051908152f35b3461050c57600036600319011261050c576020601254604051908152f35b3461050c57600036600319011261050c57600d546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601154604051908152f35b3461050c57606036600319011261050c576020610e63604435602435600435612a35565b3461050c57600036600319011261050c576020601654604051908152f35b3461050c57600036600319011261050c576020600e54604051908152f35b3461050c57600036600319011261050c576020601554604051908152f35b3461050c57602036600319011261050c57600435610f6b816104fb565b60018060a01b031660005260176020526020604060002054604051908152f35b3461050c57602036600319011261050c576004356001600160401b03811161050c57610fbb903690600401610721565b60ff602354166110de57816101e0918101031261050c57806110a1610fe26110c093610714565b610fee60208401610714565b610ffa60408501610714565b9161108161100a60608701610714565b9361101760808801610714565b9361102460a08901610714565b9361103160e08a01610714565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613bf8565b6101808101359061016081013590610120610140820135910135613a84565b6110cc62015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461050c576000806003193601126111c0576006546001600160a01b03163381900361117c5780611169916111526106526005546104ef565b6000805160206143618339815191528580a3612390565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461050c576040611211611202610a0f6111fd6111df36610b80565b87516314890dcb60e21b6020820152948593909290602485016140c0565b6142c2565b602080825183010191016140e2565b82519182526020820152f35b3461050c57600036600319011261050c576020602154604051908152f35b3461050c57600036600319011261050c576020601c54604051908152f35b3461050c5760a036600319011261050c57600435611276816104fb565b606435611282816104fb565b608435906001600160401b03821161050c57610b5e92610b3a610b3f92610a0f6112b3610b4e963690600401610721565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916140f8565b3461050c57600036600319011261050c57602b546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602754604051908152f35b3461050c57600036600319011261050c57600a546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611389816104fb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156113c957565b6113a9565b60098110156113c9576000526007602052604060002090565b3461050c57602036600319011261050c576114006107c9565b60098110156113c9576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611456575b602083101461144057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611435565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761149157604052565b611460565b60c081019081106001600160401b0382111761149157604052565b60e081019081106001600160401b0382111761149157604052565b601f909101601f19168101906001600160401b0382119082101761149157604052565b60005b8381106115025750506000910152565b81810151838201526020016114f2565b9060209161152b815180928185528580860191016114ef565b601f01601f1916010190565b906020610536928181520190611512565b3461050c576000806003193601126111c0576040518160105461156a81611426565b808452906001908181169081156115e757506001146115a0575b610b5e84611594818803826114cc565b60405191829182611537565b60108352602094506000805160206143a18339815191525b8284106115d45750505081610b5e936115949282010193611584565b80548585018701529285019281016115b8565b610b5e96506115949450602092508593915060ff191682840152151560051b82010193611584565b3461050c57600036600319011261050c57600f546040516001600160a01b039091168152602090f35b3461050c57602036600319011261050c57600435611655816104fb565b60018060a01b031660005260046020526020604060002054604051908152f35b3461050c57604036600319011261050c57610709600435611695816104fb565b6024359033613543565b3461050c57600036600319011261050c57601454604080516001600160801b038316815260809290921c602083015290f35b3461050c57602036600319011261050c576004356116ee816104fb565b60018060a01b031660005260246020526020604060002054604051908152f35b3461050c57600036600319011261050c576020601b54604051908152f35b3461050c57600036600319011261050c576005546040516001600160a01b039091168152602090f35b6001600160401b03811161149157601f01601f191660200190565b3461050c57604036600319011261050c576004356001600160401b03811161050c573660238201121561050c5780600401356117ab81611755565b916117b960405193846114cc565b818352366024838301011161050c5781600092602460209301838601378301015260243561ffff8116810361050c576100199161319c565b3461050c57600036600319011261050c5760208054604051908152f35b3461050c57604036600319011261050c576020610e63600435611830816104fb565b60243590612fb2565b3461050c57604036600319011261050c57606061186460043561185b816104fb565b60243590612b19565b9060405192835260208301526040820152f35b3461050c57608036600319011261050c57600435611894816104fb565b6024356118a0816104fb565b604435906118ad826104fb565b606435926001600160401b03841161050c57610a0f61191c926118d7610019963690600401610721565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916140f8565b6142ec565b3461050c57604036600319011261050c5761193d6004356104fb565b6141a2565b9181601f8401121561050c578235916001600160401b03831161050c576020808501948460051b01011161050c57565b906040820191604081528151809352606081019260208093019060005b8181106119f857505050818184039101528251908183528083019281808460051b8301019501936000915b8483106119ca5750505050505090565b90919293949584806119e8600193601f198682030187528a51611512565b98019301930191949392906119ba565b825115158652948401949184019160010161198f565b3461050c5760408060031936011261050c57600480356001600160401b03811161050c57611a3f9036908301611942565b9290602435611a4d816105cc565b611a5685613eab565b93611a6086613edd565b95600090815b818110611a7b57865180610b5e8b8b83611972565b8280611a8883858a613f3d565b90611a978b5180938193613f83565b0390305af4611aa4613f91565b90801580611b1a575b611af3578291611ace611ad392611ac7611aee968e613fc1565b9015159052565b613fd5565b611add828c613fc1565b52611ae8818b613fc1565b5061350c565b611a66565b8886611b16611b0185613fd5565b925162461bcd60e51b81529283928301611537565b0390fd5b5086611aad565b3461050c576000806003193601126111c057611b4860018060a01b03600554163314612345565b611b56610652600d546104ef565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610dde57611bb7948392611d0b575b50611b986106526009546104ef565b8683600e5487519889928392638eb22cdd60e01b845260048401612eea565b0381845afa958615610dde578496611cec575b5085611bdb575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610dde57611c769584938693611cbe575b5050611c346106526009546104ef565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610dde57610b5e93611c92575b808080611bd1565b611cb190823d8411611cb7575b611ca981836114cc565b8101906140e2565b50611c8a565b503d611c9f565b81611cdd92903d10611ce5575b611cd581836114cc565b8101906141d9565b503880611c24565b503d611ccb565b611d04919650873d8911610dd757610dc881836114cc565b9438611bca565b611d23919250863d8811610dd757610dc881836114cc565b9038611b89565b3461050c57600036600319011261050c576020601a54604051908152f35b3461050c57604036600319011261050c57602435611d65816104fb565b611d7a60018060a01b03600554163314612345565b60008080808094600435905af1611d8f613f91565b5015611d985780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b3461050c57600036600319011261050c57602554604080516001600160401b03808416825292821c909216602083015290f35b3461050c57600036600319011261050c57602060ff602654166040519015158152f35b3461050c57600036600319011261050c576020601e54604051908152f35b3461050c57600036600319011261050c576020602954604051908152f35b3461050c57600036600319011261050c576020610e636135f7565b3461050c57600036600319011261050c57602d546040516001600160a01b039091168152602090f35b3461050c5760031960803682011261050c576001600160401b0360043581811161050c57611edc903690600401611942565b92909160243581811161050c57611ef7903690600401611942565b909160443590811161050c57611f11903690600401611942565b94909160643592611f21846104fb565b6040519660209863cb7940e160e01b8a8a01528060a48a01608060248c01525260c48901949060005b8b828210611fb257505050508784036023190160448901528284526001600160fb1b03831161050c576100199861191c978997610a0f96611fa09660051b80928583013701908882030160648901520191614119565b6001600160a01b039092166084840152565b808498600193949535611fc4816104fb565b848060a01b031681520197019101919091611f4a565b3461050c57610019610a0f612010611ff136610b80565b60405163cce19f8160e01b6020820152948593909290602485016140c0565b614316565b3461050c57608036600319011261050c57610b5e610b4e610b3f60043561203b816104fb565b60243590612048826104fb565b60443590612055826105cc565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526111fd81611496565b3461050c57600036600319011261050c576008546040516001600160a01b039091168152602090f35b3461050c576120ce36610933565b9592809594959291924211610a4a576100199661215793610a3293610a25878a610a1d8b610a0f610a2a996121028661351b565b60405195869460208601988991959493909260c09360e084019760008051602061434183398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613590565b3461050c57600036600319011261050c57600b546040516001600160a01b039091168152602090f35b3461050c57602061059a61219836610511565b6001600160a01b0390911660009081526002845260409020610553565b3461050c57600036600319011261050c576009546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020601d54604051908152f35b3461050c57600036600319011261050c576006546040516001600160a01b039091168152602090f35b3461050c5760a036600319011261050c57610019600435612245816104fb565b60243590612252826104fb565b6044359061225f826105cc565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152612010816114b1565b3461050c57600036600319011261050c576020601f54604051908152f35b3461050c57600036600319011261050c576020600c54604051908152f35b3461050c57600036600319011261050c57602e546040516001600160a01b039091168152602090f35b3461050c57600036600319011261050c576020602854604051908152f35b3461050c57600036600319011261050c57610019613861565b1561234c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906123f09086163314612345565b8061263d575b50838116612609575b50806125d4575b505081169081612574575b505080612556575b5080612538575b508061251b575b50806124f1575b50806124c7575b508061248f575b5080612463575b508061244c5750565b61071f9061245e601e5482101561283d565b601f55565b80612476620186a0612489931115612684565b612484601f548211156127e3565b601e55565b38612443565b806124c1916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861243c565b806124d9620186a06124eb9310612684565b6124e6601b548211612684565b601c55565b38612435565b80612503620186a06125159310612684565b612510601c548210612684565b601b55565b3861242e565b8061252d620186a06125329310612684565b601d55565b38612427565b8061254b620186a0612550931115612684565b601a55565b38612420565b80612569620186a061256e931115612684565b601955565b38612419565b6125cd916125866106526008546104ef565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612411565b6125dd91612718565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612406565b612612906123b2565b7f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386123ff565b80612650620186a061267e931115612684565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b386123f6565b1561268b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126d0575050565b6000906010825260208220906020601f850160051c8301941061270e575b601f0160051c01915b82811061270357505050565b8181556001016126f7565b90925082906126ee565b91906001600160401b0381116114915761273c81612737601054611426565b6126c4565b6000601f82116001146127765781929360009261276b575b50508160011b916000199060031b1c191617601055565b013590503880612754565b6010600052601f198216936000805160206143a183398151915291805b8681106127cb57508360019596106127b1575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127a6565b90926020600181928686013581550194019101612793565b156127ea57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561284457565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128ab57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561291357565b6128e5565b90670de0b6b3a76400009182810292818404149015171561291357565b8181029291811591840414171561291357565b634e487b7160e01b600052601260045260246000fd5b8115612968570490565b612948565b604d811161291357600a0a90565b9190820391821161291357565b9190820180921161291357565b8181039291600013801582851316918412161761291357565b906509184e72a0009182810292818405149015171561291357565b90670de0b6b3a76400009182810292818405149015171561291357565b818102929160008212600160ff1b82141661291357818405149015171561291357565b811561296857600160ff1b8114600019831416612913570590565b600160ff1b81146129135760000390565b60145491929190612a50906001600160801b03831690612935565b9060801c90811561296857612a7d91612a6e910493601f5490612935565b612a778361296d565b9061295e565b90818310612b1157612ae2612adc612ad7612a9b612ae7958761297b565b93612ad2612acc612ac3601e54612abd612ab48661296d565b60215490612988565b90612935565b612a778461296d565b9161296d565b612995565b6129ae565b916129c9565b612a09565b6000811215612b0b57612af990612a24565b905b808211612b06575090565b905090565b90612afb565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c4f57612b9190612b496137cc565b93612b55841515612e8f565b6020612b656106526009546104ef565b600c5490612b728a610539565b5460405163442c159960e01b8152968793849283929160048401612eea565b03915afa928315610dde57612c2695612a77612bf46020612c00612be18a612bdc612bd3612c209c612c0f9a8c91612c32575b50602254620186a09004612abd565b601e5490612935565b61295e565b8551909890612abd906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c2a5750035b94610539565b54612f02565b9091565b915050612c1a565b612c499150873d8111610dd757610dc881836114cc565b38612bc4565b505080919250918190565b919082604091031261050c5760208251612c73816105cc565b92015190565b602080825260009160105491612c8e83611426565b9283828401526001908181169081600014612cf15750600114612cb3575b5050505090565b929350601060005280600020926000935b858510612cdd5750505060409250010138808080612cac565b805485850160400152938201938101612cc4565b925050506040935060ff929192191683830152151560051b010138808080612cac565b6040513d6000823e3d90fd5b15612d2757565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612d6a57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b612db4610652600f546104ef565b6040805163d6d7d52560e01b81529291839081600081612dd660048201612c79565b03925af18015610dde576000928391612e5b575b50908215612e3657612dfd821515612d63565b612e0682601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61071f42601355565b9050612e52612e4a60135460125490612988565b421115612d20565b60115490612e2d565b9050612e7f91925060403d8111612e88575b612e7781836114cc565b810190612c5a565b91909138612dea565b503d612e6d565b15612e9657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b9081602091031261050c575190565b60409060009294936060820195825260208201520152565b612f3e6020831592612f148415612e8f565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401612eea565b03915afa8015610dde57612f5e91600091612f78575b5060225490612935565b906129685704620186a0612f74601e5483612935565b0491565b612f90915060203d8111610dd757610dc881836114cc565b38612f54565b9190916000838201938412911290801582169115161761291357565b90612fc3612fe191612c2084610539565b6001600160a01b039093166000908152601760205260409020909291565b548015612b11578215612b1157828110612b115781811015613079578261303961303461303f9561302f612a77956130256014549160018060801b03831690612935565b9060801c9061295e565b61297b565b6128fb565b9261297b565b61306d601b549161306861305f601c549261305a8487612995565b6129e6565b620186a0900590565b612f96565b90808212612b06575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613173575b156130dd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261316d81611496565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b4565b61010090818180518101031261050c5760208101516131ba816105cc565b6040820151926131c9846104fb565b6060830151946131d8866104fb565b60808401519460a085015160c0860151936131f285610928565b60e08701519601516001600160a01b0392831698831696428310610a4a576132a2956132968a8c610a1d8199610a0f61329b998f8f6000146132b957600080516020614341833981519152965b6132488761351b565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61331a565b16146132ce565b156132b05761071f92613590565b61071f92613543565b6000805160206143818339815191529661323f565b156132d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105369391610a2a9361344e565b600511156113c957565b61333c81613329565b806133445750565b61334d81613329565b600181036133955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61339e81613329565b600281036133eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806133f7600392613329565b146133fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610dde5781516001600160a01b038116156134b4579190565b50600190565b50505050600090600390565b6134ce613082565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176114915760405251902090565b60001981146129135760010190565b6001600160a01b0316600090815260046020526040902080549061353e8261350c565b905590565b60018060a01b038091169182600052600360205283613566826040600020610553565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809116938460005260028352856135d6826040600020610553565b556040519586521693a3565b9081602091031261050c5751610536816104fb565b60265460ff1661373d576014546001600160801b0316801561373657613621610652600a546104ef565b6040518091631848f2bf60e31b825281600460209384935afa918215610dde576004928291600091613709575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610dde5761369b9261368d926000926136ec575b505060295490612935565b670de0b6b3a7640000900490565b808210156136e457612a776136bf926130396136ba602a54809361297b565b612918565b612af9602754916136df61368d602854926136da848761297b565b612935565b612988565b505060275490565b6137029250803d10610dd757610dc881836114cc565b3880613682565b6137299150823d841161372f575b61372181836114cc565b8101906135e2565b3861364e565b503d613717565b5060285490565b6004602061374f610652600a546104ef565b60405163e6abad4960e01b815292839182905afa908115610dde57600091613775575090565b610536915060203d8111610dd757610dc881836114cc565b6040519061379a82611476565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161291357565b600060206040516137dc81611476565b828152015260255460401c6001600160401b0390811642818103939291908411612913574214613856576138516136da91670de0b6b3a764000061384661382161378d565b9660018060801b03958694858a5116906301e1338061383e6135f7565b041690612935565b0416828551166137b3565b168252565b50905061053661378d565b60405161386d81611476565b6025546001600160401b03808216835260409190911c81166020830181815290613897904261297b565b9283156139ed576138e96139c4926138d96138cc6138c06138b66135f7565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b6001600160401b03428616169052565b61397c61392961368d6138fa61378d565b80519097906136da90613915906001600160801b0316612bf4565b8651612abd906001600160401b03166138c0565b855190959061395590613948906001600160801b03808a1691166137b3565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b8051602580546020840151600160401b600160801b0360409190911b166001600160401b039093166001600160801b031990911617919091179055516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b156139fa57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601b60248201527a10908e881b585e081919589d081c985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b9291906004600c546020613a9c610652600a546104ef565b6040516364cfdbb760e11b815293849182905afa908115610dde57613ad692600092610dae57501460ff8019602654169115151617602655565b613ae5610c7e60265460ff1690565b613aef5750505050565b613b16613b1b92613b11613b2096602854151580613b4d575b613b2957602955565b602755565b602855565b602a55565b388080806139ed565b613b348386106139f3565b613b48670de0b6b3a7640000841115613a3a565b602955565b506027541515613b08565b15613b5f57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613b9a57565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610dde5781613c7891600494600091613e77575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b613c8e613c89610652600a546104ef565b612390565b85613c9d610652600a546104ef565b604051631192124760e11b815293849182905afa8015610dde57613d0092600091613e5a575b50818516151580613e4f575b80613e44575b613cde90613b58565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600484613d11610652600a546104ef565b6040516386c8e21d60e01b815292839182905afa928315610dde57613d4a613d7194613d6c93613d7698600092613e27575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b6123b2565b613d7e612da6565b5050613d8c62015f90601955565b613d966000601a55565b8015613e1a57601e555b8015613e0d57601f555b613db9601f54601e5410613b93565b8015613dfb576022555b613dcf62013880601b55565b613ddb62015f90601c55565b613de6612710601d55565b613df06032602055565b61071f612ee0602155565b50613dc3670de0b6b3a7640000602255565b50613daa6201388061245e565b50613da0620124f8612484565b613e3d9250803d10610dd757610dc881836114cc565b3880613d43565b508582161515613cd5565b508181161515613ccf565b613e719150873d891161372f5761372181836114cc565b38613cc3565b613e8e9150893d8b1161372f5761372181836114cc565b38613c55565b6001600160401b0381116114915760051b60200190565b90613eb582613e94565b613ec260405191826114cc565b8281528092613ed3601f1991613e94565b0190602036910137565b90613ee782613e94565b613ef460405191826114cc565b8281528092613f05601f1991613e94565b019060005b828110613f1657505050565b806060602080938501015201613f0a565b634e487b7160e01b600052603260045260246000fd5b9190811015613f7e5760051b81013590601e198136030182121561050c5701803591906001600160401b03831161050c57602001823603811361050c579190565b613f27565b908092918237016000815290565b3d15613fbc573d90613fa282611755565b91613fb060405193846114cc565b82523d6000602084013e565b606090565b8051821015613f7e5760209160051b010190565b6103e881511161408c5760448151106140595760048101518101906020816024840193031261050c576024810151906001600160401b03821161050c57018160438201121561050c57602481015161402c81611755565b9261403a60405194856114cc565b8184526044828401011161050c576105369160446020850191016114ef565b5060405161406681611476565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161409981611476565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b6001600160a01b03918216815291166020820152604081019190915260600190565b919082604091031261050c576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b9082818152602080910193818360051b82010194846000925b858410614143575050505050505090565b90919293949596601f198282030184528735601e198436030181121561050c5783018681019190356001600160401b03811161050c57803603831361050c57614191889283926001956140f8565b990194019401929594939190614132565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b9081602091031261050c5751610536816105cc565b156141f557565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b911561425c57565b611b1661426883613fd5565b60405162461bcd60e51b8152602060048201529182916024830190611512565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602b546001600160a01b0316801561428857816000929160208493519201905af490614254613f91565b602d546001600160a01b0316801561428857816000929160208493519201905af490614254613f9156fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d61b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122073b4b624c9af05cb4e8a1e991716ab447e030ea18b7c11eaed49f1513332774364736f6c63430008120033"; + "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556145619283620001ab843960805183613123015260a051836131de015260c051836130ed015260e05183613172015251826131980152518161314f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220fb29a2f0378ac34617491f225c4a2f783a294a870969c33fa8889c53ee7be1ca64736f6c63430008120033"; type BigBangConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/index.ts b/src/typechain/tapioca-bar/factories/markets/index.ts index 5031f77b..15e2c7c8 100644 --- a/src/typechain/tapioca-bar/factories/markets/index.ts +++ b/src/typechain/tapioca-bar/factories/markets/index.ts @@ -5,3 +5,4 @@ export * as bigBang from "./bigBang"; export * as singularity from "./singularity"; export { Market__factory } from "./Market__factory"; export { MarketERC20__factory } from "./MarketERC20__factory"; +export { MarketLiquidatorReceiver__factory } from "./MarketLiquidatorReceiver__factory"; diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts index d450e8a7..a7375808 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts @@ -1216,19 +1216,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1948,7 +1935,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556140ee928362000207843960805183612afa015260a05183612bc4015260c05183612ac4015260e05183612b4901525182612b6f01525181612b260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a201461202b5750826302ce728f1461200257826306fdde0314611f4a578263078dfbe714611e57578263095ea7b314611e2c5782630996efb71461197a5782630c4e84f01461186357826318160ddd146118405782631c9e379b146118075782631da8bf101461175f57826323b872dd146115d7578263313ce567146115a0578263331960ff1461158057826334d441d0146115605782633644e5151461154257826337b6b7b91461152257826338d52e0f146114f85782633ba0b9a9146114d85782633f741adb146114af57826340626d8b1461148f57826344de240a1461146f578263473e3ce71461144f57826348e4163e146114165782634d7f2a34146113f65782634e71e0c8146113535782635224372c1461129c578263529898f21461127c57826352f353eb14611252578263551402321461122857826355c2ab94146111fe57826357935462146111de5782635dfe04e81461117e5782636c3d8b8f1461115457826370a082311461111b57826372778547146110e357826374645ff3146110b65782637dc0d1d01461108c5782637ecebe00146110555782637fa0b84e14611023578263821226e8146110035782638285ef4014610fcf5782638c5d0ed314610faf5782638da5cb5b14610f85578263910dd7c814610d4c578263959916dc14610d2d57826395d89b4114610c7457826399a9702814610c435782639c5d719214610c235782639e15e89f14610be7578263a9059cbb14610b0b578263b0e21e8a14610aeb578263b27c0e7414610ab0578263bb4cfe3b14610a90578263c23ea21f14610a66578263cd0211eb14610640578263ce8849ed14610616578263d505accf146104c55750508063d8dfeb451461049d578063dd62ed3e14610450578063de40657714610428578063e0996cb61461040a578063e30c3978146103e2578063ea64dd56146103c4578063eec0f42e146103a6578063f42760b714610388578063f8ba4cff14610369578063f9557ccb146103335763ffe04c661461031257600080fd5b3461032f578160031936011261032f57602090602b549051908152f35b5080fd5b503461032f578160031936011261032f57602554905190819061036590608081901c906001600160801b03168361232e565b0390f35b8234610385578060031936011261038557610382613ccb565b80f35b80fd5b503461032f578160031936011261032f57602090602c549051908152f35b503461032f578160031936011261032f57602090600c549051908152f35b503461032f578160031936011261032f57602090601f549051908152f35b503461032f578160031936011261032f5760065490516001600160a01b039091168152602090f35b503461032f578160031936011261032f57602090601d549051908152f35b503461032f578160031936011261032f5760095490516001600160a01b039091168152602090f35b503461032f578060031936011261032f5760209161046c612071565b82610475612087565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b503461032f578160031936011261032f57600b5490516001600160a01b039091168152602090f35b84925034610612576104d636612103565b9183949895979342116105e157916105969161059e938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161051683612e1a565b90558c8751956020870197600080516020613fd9833981519152895260008a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b519020610567612ac1565b915190602082019261190160f01b8452602283015260428201526042815261058e816122f0565b519020612d95565b919091612c96565b16036105b05750610382939450612e77565b606490602087519162461bcd60e51b8352820152601e6024820152600080516020613fb98339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d6024820152600080516020613f998339815191526044820152606490fd5b8280fd5b5050503461032f578160031936011261032f5760085490516001600160a01b039091168152602090f35b5083833461032f57608036600319011261032f5761065c612071565b610664612087565b9061066d6120f4565b9360643591600182526020956007875261068d60ff878520541615612ece565b6001600160a01b03858116959093906106ea906106ac30891415612f0b565b6106b4612652565b50506106be613ccb565b6106cf876106ca6133d3565b61366f565b905060115460ff6106e389600d5416613365565b169261351c565b8015610a23576106fa908461359f565b8581526017885286812054808611610a1b575b5084156109e057879861074a98610726876106ca6133d3565b8151909b6001600160801b039390928492610742908416613c87565b015116613c3d565b87835260178b5288832061075f888254612445565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610915578c918f9188976109aa575b50602554861694891561091f575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561091557839087906108df575b6107ec9250612445565b84116108ac575092600080516020613ff983398151915295928c959261081a8d9b9a99965b82841690613742565b1660018060801b0319602554161760255584841690818352602787528b83206028549081855288528c842054821160001461088757505081526027855289812060285482528552808a8120555b5015610882575080600954165b87519485521692a451908152f35b610874565b90918352602787528b832090835286526108a58b8320918254612445565b9055610867565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d831161090e575b6108f6818361230b565b8101031261090957826107ec91516107e2565b600080fd5b503d6108ec565b8c513d88823e3d90fd5b9250929050813b156109a6579186918693838f6109528d915197889687958694630208d92960e11b865230918601613da6565b03925af1801561099c57928c9a99989592600080516020613ff98339815191529895928f9895610987575b5061081a90610811565b9361099561081a9295612275565b939061097d565b8b513d87823e3d90fd5b8680fd5b9250955081813d83116109d9575b6109c2818361230b565b810103126109d5578d8c915195386107a3565b8580fd5b503d6109b8565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b94508961070d565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461032f578160031936011261032f5760265490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601e549051908152f35b5050503461032f578160031936011261032f576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b5050503461032f578160031936011261032f57602090601a549051908152f35b5050503461032f578060031936011261032f57602091610b29612071565b82602435928315801590610bd5575b610b68575b50519182526001600160a01b0316903390600080516020614059833981519152908590a35160018152f35b3381526001865281812054610b7f85821015612bea565b6001600160a01b038416908533839003610b9c575b505050610b3d565b610bb091610bab841515612c2f565b612445565b3383526001885283832055815220610bc9838254612452565b90558238808085610b94565b50336001600160a01b03841614610b38565b5050503461032f578060031936011261032f57606090610c11610c08612071565b60243590612591565b91929081519384526020840152820152f35b5050503461032f578160031936011261032f57602090602d549051908152f35b5050503461032f578060031936011261032f57602090610c6d610c64612071565b6024359061298f565b9051908152f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cb68161229e565b51915afa610cc2613335565b915015610d1e57610cd290613e27565b905b610d0c60238251809462746d2d60e81b6020830152610cfc815180926020868601910161209d565b810103600381018552018361230b565b519182916020835260208301906120c0565b50610d27613dd0565b90610cd4565b5050503461032f578160031936011261032f5760209081549051908152f35b84918434610f815780600319360112610f81578135926001600160401b038411610f7d5736602385011215610f7d578383013592610d8984612348565b94610d968451968761230b565b84865286602091828801963660248284010111610612578060248593018937880101526024359361ffff8516809503610f7957610100958688805181010312610f7557610de290612645565b93610dee828901612c74565b90610dfb60608a01612c74565b9860808101519860a082015192610e1460c08401612c88565b91818401519301519360018060a01b03808097169d169a814211610f4457928d8f819897948f948f8f968f918f959a8f8c8195610ede9f9c6105969f50600014610f2f57600080516020613fd98339815191529a5b825289522093845494610e7b86612e1a565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610eac816122d4565b519020610eb7612ac1565b908951908b82019261190160f01b8452602283015260428201526042815261058e816122f0565b1603610f0057505050600014610ef75761038292612e77565b61038292612e29565b5162461bcd60e51b815291820152601e6024820152600080516020613fb9833981519152604482015260649150fd5b6000805160206140398339815191529a610e69565b875162461bcd60e51b8152808b018a9052601d6024820152600080516020613f998339815191526044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032f578160031936011261032f5760055490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57602090601b549051908152f35b5050503461032f578160031936011261032f57601454905190819061036590608081901c906001600160801b03168361232e565b5050503461032f578160031936011261032f57602090602f549051908152f35b5050503461032f578060031936011261032f5760209061104e611044612071565b6024359033612e29565b5160018152f35b509050346106125760203660031901126106125760209282916001600160a01b0361107e612071565b168252845220549051908152f35b5050503461032f578160031936011261032f57600f5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f57805161036591610d0c826110dc816121f0565b038361230b565b509050346106125760203660031901126106125735916009831015610385575060ff611110602093612187565b541690519015158152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b03611144612071565b1681526001845220549051908152f35b5050503461032f578160031936011261032f57600a5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f5760809061119c613723565b506111a561375b565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461032f578160031936011261032f57602090601c549051908152f35b5050503461032f578160031936011261032f57602e548151911c6001600160401b03168152602090f35b5050503461032f578160031936011261032f57602e5490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f5760305490516001600160401b039091168152602090f35b5050503461032f578160031936011261032f576020906021549051908152f35b509050346106125761130a906112fe60ff84956112d16112bb36612152565b9491989093808052600760205220541615612ece565b6112d9612652565b50506112e3613ccb565b6112f86001600160a01b038216301415612f0b565b85612f56565b9290936011549061341f565b1561131c575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346106125782600319360112610612576006546001600160a01b039290918383169190338390036113b3575050806005549384166000805160206140198339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461032f578160031936011261032f57602090602a549051908152f35b5050503461032f57602036600319011261032f5760209181906001600160a01b0361143f612071565b1681526017845220549051908152f35b5050503461032f578160031936011261032f576020906015549051908152f35b5050503461032f578160031936011261032f57602090600e549051908152f35b5050503461032f578160031936011261032f576020906016549051908152f35b508284346103855760603660031901126103855750610c6d602092604435906024359035612478565b5050503461032f578160031936011261032f576020906011549051908152f35b5050503461032f578160031936011261032f57600d5490516001600160a01b039091168152602090f35b5050503461032f578160031936011261032f576020906012549051908152f35b5050503461032f578160031936011261032f57602090610c6d612ac1565b5050503461032f578160031936011261032f576020906019549051908152f35b5050503461032f578160031936011261032f576020906013549051908152f35b5050503461032f578160031936011261032f57600d546020919060ff906115cf906001600160a01b0316613365565b915191168152f35b50828434610385576115e836612152565b919282611622575b508351918252602094506001600160a01b03908116921690600080516020614059833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061164d87831015612bea565b851692838a03611661575b505050506115f0565b8985526002835288852033865283528885205490600182016116cb575b5050928260209960018a946116aa8a8e99610bab6000805160206140598339815191529c9a1515612c2f565b92855252838320558152206116c0858254612452565b905591878080611658565b87821061172157509260209960018a946116aa8a8e99966116fc826000805160206140598339815191529d9b612445565b86895260028552898920338a528552898920559699505050945050998194965061167e565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b849250346106125761177036612103565b9397949690928042116105e1579386936117f5938c8c89610596968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117b285612e1a565b905588519660208801986000805160206140398339815191528a528a890152606088015216608086015260a085015260c084015281830152815261055c816122d4565b16036105b05750610382939450612e29565b5050503461032f57602036600319011261032f5760209181906001600160a01b03611830612071565b1681526018845220549051908152f35b5050503461032f578160031936011261032f5760209060255460801c9051908152f35b509050346106125781600319360112610612578035906009821015610f815761188a6120e5565b6008549093906001600160a01b031633036119405760ff6118aa84612187565b54161515931515938414611908575050808260ff6118ca6118f894612187565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612187565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b509050346106125761018036600319011261061257602480356001600160a01b03818116918290036109d5576001600160401b03604435818111610f795736602382011215610f795780860135918211610f795736858383010111610f795760643593838516809503610f75576119f684600554163314612363565b863580611dec575b5080611dae575b508482611c54575b50505081611c14575b505060843580611bfc575b5060a43580611be4575b5060c43580611bcd575b5060e43580611ba9575b506101043580611b85575b506101243580611b54575b506101443580611ae3575b50610164359283611a6f578480f35b601e548410611a8657505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611af2620186a08211156123ae565b601f548111611b0457601e5538611a60565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611a55565b611b93620186a082106123ae565b611ba0601b5482116123ae565b601c5538611a4a565b611bb7620186a082106123ae565b611bc4601c5482106123ae565b601b5538611a3f565b611bdb620186a082106123ae565b601d5538611a35565b611bf3620186a08211156123ae565b601a5538611a2b565b611c0b620186a08211156123ae565b60195538611a21565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611a16565b8291611c616010546121b6565b601f8111611d4f575b508990601f8411600114611ccf578a93611cc2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084611a0d565b0101359050843880611c7f565b60108b52601f198416945060008051602061409983398151915292509087908b60205b878210611d305750508460019610611d14575b50505050811b01601055611c96565b60001960f88660031b161c199201013516905538808681611d05565b8285019093013585556001949094019389929182019190810190611cf2565b60108b529092509050600080516020614099833981519152601f840160051c810160208510611da7575b91849391601f8994920160051c01905b818110611d965750611c6a565b8b8155859450889350600101611d89565b5080611d79565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a05565b611dfb620186a08211156123ae565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3602055386119fe565b5050503461032f578060031936011261032f5760209061104e611e4d612071565b6024359033612e77565b8482853461061257606036600319011261061257611e73612071565b91611e7c6120e5565b91611e856120f4565b9260018060a01b03948591611e9f83600554163314612363565b15611f31571692831590811591611f29575b5015611eee575050806005549283166000805160206140198339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611eb1565b93505050501660018060a01b0319600654161760065580f35b509050346106125782600319360112610612579180806103659460018060a01b03600b541690855160208101916306fdde0360e01b83528152611f8c8161229e565b51915afa611f98613335565b915015611ff357611fa890613e27565b905b610d0c60348251809473546170696f63612053696e67756c61726974792d60601b6020830152611fe3815180926020868601910161209d565b810103601481018552018361230b565b50611ffc613dd0565b90611faa565b8385346103855780600319360112610385575061201d612652565b825191151582526020820152f35b85908534610612578060031936011261061257602092612049612071565b612051612087565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361090957565b602435906001600160a01b038216820361090957565b60005b8381106120b05750506000910152565b81810151838201526020016120a0565b906020916120d98151809281855285808601910161209d565b601f01601f1916010190565b60243590811515820361090957565b60443590811515820361090957565b60e0906003190112610909576001600160a01b03906004358281168103610909579160243590811681036109095790604435906064359060843560ff81168103610909579060a4359060c43590565b6060906003190112610909576001600160a01b0390600435828116810361090957916024359081168103610909579060443590565b60098110156121a0576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156121e6575b60208310146121d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916121c5565b60105460009291612200826121b6565b90818152600192838116908160001461225a575060011461222057505050565b9092935060106000526020928360002092846000945b8386106122465750505050010190565b805485870183015294019385908201612236565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161228857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761228857604052565b606081019081106001600160401b0382111761228857604052565b61010081019081106001600160401b0382111761228857604052565b608081019081106001600160401b0382111761228857604052565b601f909101601f19168101906001600160401b0382119082101761228857604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161228857601f01601f191660200190565b1561236a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156123b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561240157565b634e487b7160e01b600052601160045260246000fd5b8115612421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161240157600a0a90565b9190820391821161240157565b9190820180921161240157565b8181039291600013801582851316918412161761240157565b6014549192916124c1916124b2916124a89161249e906001600160801b038316906123ee565b9060801c90612417565b93601f54906123ee565b6124bb83612437565b90612417565b808310612589576124d56125119184612445565b9161250c6125066124fd601e546124f76124ee86612437565b60215490612452565b906123ee565b6124bb84612437565b91612437565b61245f565b6509184e72a0009081810291818305149015171561240157670de0b6b3a76400009182810292818405149015171561240157801561242157600160ff1b91808314600019831416612401570590600082121561258257811461240157600003905b80821161257d575090565b905090565b5090612572565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612639579160409161261561262d959483602086516125d18161229e565b82815201526125ef866125e261375b565b5050505050939050612806565b815190936001600160801b039160209161260b918416906123ee565b9201511690612417565b81811061263157035b958152601860205220546128d8565b9091565b50508061261e565b50509192505080918190565b5190811515820361090957565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b0316828480612685602482016121f0565b0381600080955af180156127ae5781948291612772575b509284156127155783156126db57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061272860135460125490612452565b42116127385750601154906126d5565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116127a7575b61278b818361230b565b8101031261038557602061279e85612645565b9401513861269c565b503d612781565b508251903d90823e3d90fd5b156127c157565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6128118215156127ba565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156128cc578092612894575b50509061288c61288361289193620186a060225404906123ee565b601e54906123ee565b612417565b90565b9091506020823d82116128c4575b816128af6020938361230b565b8101031261038557505161288c612883612868565b3d91506128a2565b604051903d90823e3d90fd5b6128e38215156127ba565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561298357600091612950575b509061288c61293c92602254906123ee565b620186a061294c601e54836123ee565b0491565b906020823d821161297b575b816129696020938361230b565b8101031261038557505161288c61292a565b3d915061295c565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129b2916128d8565b918352601760205260408320548015612abb578115612abb57818110612abb5782811015612ab1576014546129fb918391610bab9161249e906001600160801b038316906123ee565b90620186a09283830292808404851490151715612a9d57612a2092916124bb91612445565b91601b5491601c5493612a33858561245f565b80820291848212600160ff1b821416612a9d578183051490151715612a895705818482019485129112908015821691151617612a75575080821261257d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bc1575b15612b1c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122885760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612af3565b15612bf157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c3657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361090957565b519060ff8216820361090957565b60058110156121a05780612ca75750565b60018103612cef5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d3c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d4557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e0e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e015781516001600160a01b03811615612dfb579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ed557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f1257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561332a57620186a09260209084612f738354866123ee565b0494612fa9612f856011549787612452565b600d546001600160a01b0398919060ff90612fa1908b16613365565b16918761351c565b80156132db57612fb9908561359f565b612fc48354866123ee565b0494612fce6133d3565b9583612fda8288612452565b916040968751612fe98161229e565b6000808252970187905289516001600160801b039490851661326c5799613049908b906130449087908161302381865b1682845116613742565b16815281613039818a8401961682875116613742565b168094525116613c87565b613c3d565b601654801590811561325d575b501561321f5784899116808852601784528888206130758c8254612452565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806131fe575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156131f45785976131c5575b506130f66133f9565b818101916103e88484511610613191575090613129839283613120613130968c1682845116613656565b16809152613ca9565b5116613c62565b6009541690600e5490823b15610f81578392839286958893613168985198899586948593630208d92960e11b85523060048601613da6565b03925af191821561318757505061317e57509091565b61262d90612275565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116131ed575b6131dd818361230b565b81010312610f7d575195386130ed565b503d6131d3565b86513d87823e3d90fd5b83600a5416865260018252613217878720918254612452565b9055386130af565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508460145416111538613056565b998a859b8583018781511661328190836123ee565b8885511661328e91612417565b9d8e8186511661329d916123ee565b9151166132a991612417565b106132c4575b6130448661304993818f948161302391613019565b85806132d181949e612e1a565b9d935050506132af565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613360573d9061334682612348565b91613354604051938461230b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526133888161229e565b51916001600160a01b03165afa61339d613335565b90806133c8575b156133c2576020818051810103126109095760206128919101612c88565b50601290565b5060208151146133a4565b604051906133e08261229e565b6014546001600160801b038116835260801c6020830152565b604051906134068261229e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561351257601881526040862054801561350b57816134596133d3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156128cc5780976134d5575b505061260b6134b56128836134d0969798620186a060225404906123ee565b956134cb60018060801b039485875116906123ee565b6123ee565b111590565b9096508187813d8311613504575b6134ed818361230b565b81010312610385575094519461260b6134b5613496565b503d6134e3565b5050505050565b5060019450505050565b6125069061353c8561289196956135366124bb9685612806565b9061355c565b6001600160a01b03909116600090815260186020526040902054906123ee565b9182158015613597575b612589576001810180911161240157613585926124f761288c92612437565b6005810180911161240157600a900490565b508115613566565b6001600160a01b03163381036135b3575050565b600081815260209060038252604091828220338352815284838320541061361c57838252600381528282203383528152828220546001016135f5575050505050565b61361093825260038152828220903383525220918254612445565b9055388080808061350b565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161240157565b919091600060206040516136828161229e565b82815201526020810180516001600160801b039081166136c6576136bf81865b816136b2818a1682895116613656565b1686521682845116613656565b1690529190565b6136e06136d682855116876123ee565b8284511690612417565b94806136fc6136f284865116896123ee565b8487511690612417565b1061370c575b816136bf916136a2565b948161371a6136bf92612e1a565b96915050613702565b60405190613730826122b9565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161240157565b613763613723565b50600060206040516137748161229e565b8281520152600060206040516137898161229e565b828152015260405161379a816122b9565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906137cc6133d3565b916137d56133f9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561298357600090613c09575b885161384092506001600160801b031690612452565b9485613bd45760005b60208501518190613863906001600160401b031642612445565b958615613ba9575050426001600160401b031660208b8101919091528901516001600160801b031615613b5f57508751895160209161391291670de0b6b3a7640000916138c89189916134cb916001600160401b0316906001600160801b03166123ee565b8b5191900498906001600160801b03906138e790828c16908316613742565b168b5261288c620186a06138fd601a548c6123ee565b858e01516001600160801b03169190046123ee565b60408b0180519197916001600160801b03808a1692916139359084908316613742565b169052898301805190916001600160801b039161395491908316613742565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561298357600090613b2b575b88516139b192506001600160801b031690612452565b80613af557506000925b602b548481811015613a55576139d19082612445565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561240157613a37916139ff91612417565b9161288c613a24613a1e602f54936134cb60018060401b0397806123ee565b83612452565b8c519092906001600160401b03166123ee565b16808952602e546001600160401b0316908111613a515750565b8852565b9050602c54808211613a6657505050565b613a6f91612445565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156124015761288c613ab8613a1e613aaa613ac895602d5490612417565b936134cb602f5495806123ee565b8b516001600160401b03166123ee565b602e5460401c6001600160401b0316808211613aed575b506001600160401b03168852565b905038613adf565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561240157613b2591612417565b926139bb565b506020813d602011613b57575b81613b456020938361230b565b81010312610909576139b1905161399b565b3d9150613b38565b8951603054999a91999498509296509450506001600160401b03918216925016819003613b9d575b509392613b926133f9565b926000926000929190565b81526001925038613b87565b98509950505095505050505091613bbe6133d3565b91613bc76133f9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156124015786613c0491612417565b613849565b506020813d602011613c35575b81613c236020938361230b565b8101031261090957613840905161382a565b3d9150613c16565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b613d7a602080613d66613cdc61375b565b9396959390929015613d7c5750505060018060401b036030541660008060008051602061407983398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091610742908416613c87565b613d7283825116613ca9565b015116613c62565b565b83516040519384526001600160401b031692600080516020614079833981519152908990a4613d11565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b60405190613ddd8261229e565b60038252623f3f3f60e81b6020830152565b908151811015613e00570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124015760010190565b805160408110613e9f57508051810190602081818401930312610909576020810151906001600160401b038211610909570181603f82011215610909576020810151613e7281612348565b92613e80604051948561230b565b818452604082840101116109095761289191604060208501910161209d565b602092908303613f8d576000805b60ff81168581109081613f6e575b5015613ecf57613eca90613e16565b613ead565b9260ff80941692613edf84612348565b93613eed604051958661230b565b808552613efc601f1991612348565b013687860137825b85811687811080613f51575b15613f4657613f419190613f3b6001600160f81b0319613f308388613def565b5116871a9188613def565b53613e16565b613f04565b505094505050905090565b506001600160f81b0319613f658286613def565b51161515613f10565b6001600160f81b03199150613f839086613def565b5116151538613ebb565b915050612891613dd056fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266c8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207c79cc4e572498c1a2ddb00aaaac7fb8ab838bba0a64908d1a7a60a07581900564736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295561405f928362000207843960805183612b6e015260a05183612c39015260c05183612b38015260e05183612bbd01525182612be301525181612b9a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b40d81eabd36dc9676daea5d696f5967b4eb7a176aaafa6c71a020e3e508ea6364736f6c63430008120033"; type SGLBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts index 56e6cdda..f663729c 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts @@ -1215,19 +1215,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1936,7 +1923,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a55613a6f928362000207843960805183612b25015260a05183612bef015260c05183612aef015260e05183612b7401525182612b9a01525181612b510152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120915750806302ce728f1461206857806306fdde0314611fb1578063078dfbe714611ec4578063095ea7b314611e9d5780630996efb7146119e75780630c4e84f0146118cf57806318160ddd146118ae5780631c9e379b146118755780631da8bf10146117b357806323b872dd1461162c578063313ce5671461159a578063331960ff1461157c57806334d441d01461155e5780633644e5151461154357806337b6b7b91461152557806338d52e0f146114fc5780633ba0b9a9146114de5780633f741adb146114b957806340626d8b1461149b57806344de240a1461147d578063473e3ce71461145f57806348e4163e146114265780634d7f2a34146114085780634e71e0c81461136c578063529898f21461134e57806352f353eb1461132557806355140232146112fc57806355c2ab94146112d157806357935462146112b35780635dfe04e8146112525780636c3d8b8f1461122957806370a08231146111f057806372778547146111b857806374645ff31461118d5780637dc0d1d0146111645780637ecebe001461112b5780637fa0b84e146110f9578063821226e8146110db5780638285ef40146110a85780638c5d0ed31461108a5780638da5cb5b14611061578063910dd7c814610e6c578063959916dc14610e4f57806395d89b4114610d9557806399a9702814610d655780639c5d719214610d475780639e15e89f14610d0c578063a9059cbb14610c29578063b0e21e8a14610c0b578063b27c0e7414610bd1578063bb4cfe3b14610bb3578063c23ea21f14610b8a578063cce19f81146109b4578063ce8849ed1461098b578063d505accf146107fc578063d8dfeb45146107d3578063dd62ed3e14610784578063de4065771461075b578063e0996cb61461073d578063e30c397814610714578063e9a49252146103d9578063ea64dd56146103bb578063eec0f42e1461039d578063f42760b71461037f578063f8ba4cff14610363578063f9557ccb1461032c5763ffe04c661461030c57600080fd5b346103295780600319360112610329576020602b54604051908152f35b80fd5b503461032957806003193601126103295760255460405190819061035f90608081901c906001600160801b031683612396565b0390f35b503461032957806003193601126103295761037c613692565b80f35b50346103295780600319360112610329576020602c54604051908152f35b50346103295780600319360112610329576020600c54604051908152f35b50346103295780600319360112610329576020601f54604051908152f35b50346103295760a0366003190112610329576103f36120d9565b6103fb6120ef565b9061040461215c565b916064359160843593600260005260206007815261042a60ff6040600020541615612eea565b6001600160a01b039384169461044230871415612f27565b8615610696575b6104538785612f72565b8615610615575b5084875260188152604087206104718782546124a4565b905560155461048087826124a4565b601555600c54908884156105a2575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa8015610597578990610563575b6104cc9250612497565b861161052f575b848752602781526040872090602954885252604086206104f48682546124a4565b90551561052a575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610502565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610590575b6105798183612373565b8101031261058b576104cc91516104c2565b600080fd5b503d61056f565b6040513d8b823e3d90fd5b9190508560095416803b15610611578883916105d89383604051809681958294630208d92960e11b84528d309060048601613754565b03925af18015610606576105ee575b50506104d3565b6105f7906122dd565b6106025786386105e7565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561068b57879161065e575b50943861045a565b90508581813d8311610684575b6106758183612373565b8101031261058b575138610656565b503d61066b565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107095788916106dc575b5095610449565b90508181813d8311610702575b6106f38183612373565b8101031261058b5751386106d5565b503d6106e9565b6040513d8a823e3d90fd5b50346103295780600319360112610329576006546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601d54604051908152f35b50346103295780600319360112610329576009546040516001600160a01b039091168152602090f35b50346103295760403660031901126103295761079e6120d9565b60406107a86120ef565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610329578060031936011261032957600b546040516001600160a01b039091168152602090f35b50346103295761080b3661216b565b9183919395949542116109465760018060a01b03928388169485600052600460205260406000209283546000198114610930576108dc956108d49560018301905560405190602082019260008051602061397a8339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b5190206108a3612aec565b9060405190602082019261190160f01b845260228301526042820152604281526108cc81612358565b519020612dc0565b919091612cc1565b16036108eb5761037c92612e93565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103295780600319360112610329576008546040516001600160a01b039091168152602090f35b5034610329576109c3366121ba565b90929160038352602091600783526109e260ff60408620541615612eea565b6109ea61274f565b50506109f4613692565b6109fe8183612f72565b6001600160a01b0385811695909190610a1930881415612f27565b828416928387526018865260408720610a33848254612497565b9055610a4183601554612497565b6015556009541690600c5490823b15610b8657610a7b92889283869360405196879586948593630208d92960e11b85523060048601613754565b03925af18015610b7b57610b64575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610afc9899a4818652602785526040862060295490818852865260408720548211600014610b3d57505084526027835260408420602954855283528360408120555b60115490613076565b15610b05575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260278552604086209086528452610b5d60408620918254612497565b9055610af3565b610afc9495610b7383926122dd565b959450610a8a565b6040513d88823e3d90fd5b8780fd5b50346103295780600319360112610329576026546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601e54604051908152f35b503461032957806003193601126103295760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103295780600319360112610329576020601a54604051908152f35b503461032957604036600319011261032957610c436120d9565b60243580928115801590610cfa575b610c8a575b50506040519182526001600160a01b03169033906000805160206139da83398151915290602090a3602060405160018152f35b33815260016020526040812054610ca383821015612c15565b6001600160a01b0384169033829003610cbe575b5050610c57565b604093610cd591610cd0841515612c5a565b612497565b338352600160205283832055815220610cef8382546124a4565b905581388080610cb7565b50336001600160a01b03841614610c52565b5034610329576040366003190112610329576060610d34610d2b6120d9565b602435906125e3565b9060405192835260208301526040820152f35b50346103295780600319360112610329576020602d54604051908152f35b5034610329576040366003190112610329576020610d8d610d846120d9565b602435906129ba565b604051908152f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd281612306565b51915afa610dde61377e565b915015610e3e57610df161035f91613805565b610e2a6023604051809362746d2d60e81b6020830152610e1a8151809260208686019101612105565b8101036003810184520182612373565b604051918291602083526020830190612128565b5061035f610e4a6137ae565b610df1565b503461032957806003193601126103295760208054604051908152f35b5034610329576040366003190112610329576004356001600160401b03811161105d573660238201121561105d57806004013582610ea9826123b0565b92610eb76040519485612373565b82845260208401923660248284010111610611578060246020930185378401015260243561ffff811681036110595761010091828480518101031261105557610eff90612742565b610f0b60408501612c9f565b91610f1860608601612c9f565b9460808101519460a082015192610f3160c08401612cb3565b9160e0840151930151938042116109465785156110405760008051602061397a833981519152915b6001600160a01b0388168b52600460205260408b2080549190600019831461102c579161ffff610fe9989694926108d498969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fda8161233c565b602081519101206108a3612aec565b6001600160a01b038381169116036108eb57156110165761037c926001600160a01b039081169116612e93565b61037c926001600160a01b039081169116612e45565b634e487b7160e01b8d52601160045260248dfd5b6000805160206139ba83398151915291610f59565b8480fd5b8380fd5b5080fd5b50346103295780600319360112610329576005546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601b54604051908152f35b503461032957806003193601126103295760145460405190819061035f90608081901c906001600160801b031683612396565b50346103295780600319360112610329576020602f54604051908152f35b5034610329576040366003190112610329576111206111166120d9565b6024359033612e45565b602060405160018152f35b5034610329576020366003190112610329576020906040906001600160a01b036111536120d9565b168152600483522054604051908152f35b5034610329578060031936011261032957600f546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761035f604051610e2a816111b181612258565b0382612373565b50346103295760203660031901126103295760043590600982101561032957602060ff6111e4846121ef565b54166040519015158152f35b5034610329576020366003190112610329576020906040906001600160a01b036112186120d9565b168152600183522054604051908152f35b5034610329578060031936011261032957600a546040516001600160a01b039091168152602090f35b503461032957806003193601126103295761126b613178565b5060806112766131b0565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103295780600319360112610329576020601c54604051908152f35b5034610329578060031936011261032957602e546040805191901c6001600160401b03168152602090f35b5034610329578060031936011261032957602e546040516001600160401b039091168152602090f35b50346103295780600319360112610329576030546040516001600160401b039091168152602090f35b50346103295780600319360112610329576020602154604051908152f35b50346103295780600319360112610329576006546001600160a01b0390818116338190036113c4578060055493841660008051602061399a8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103295780600319360112610329576020602a54604051908152f35b5034610329576020366003190112610329576020906040906001600160a01b0361144e6120d9565b168152601783522054604051908152f35b50346103295780600319360112610329576020601554604051908152f35b50346103295780600319360112610329576020600e54604051908152f35b50346103295780600319360112610329576020601654604051908152f35b5034610329576060366003190112610329576020610d8d6044356024356004356124ca565b50346103295780600319360112610329576020601154604051908152f35b5034610329578060031936011261032957600d546040516001600160a01b039091168152602090f35b50346103295780600319360112610329576020601254604051908152f35b50346103295780600319360112610329576020610d8d612aec565b50346103295780600319360112610329576020601954604051908152f35b50346103295780600319360112610329576020601354604051908152f35b5034610329578060031936011261032957808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526115d781612306565b51915afa906115e461377e565b9180611621575b1561161657602082805181010312610329575061160b6020809201612cb3565b60ff60405191168152f35b50506020601261160b565b5060208251146115eb565b50346103295761163b366121ba565b919282611677575b506040519182526001600160a01b039081169216906000805160206139da83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116a082861015612c15565b8616938484036116b5575b5050505050611643565b83865260028352604080872033885284528620546001810161171f575b50926001602096936116fd8794604097610cd06000805160206139da8339815191529c9a1515612c5a565b92855252838320558152206117138582546124a4565b905591388085816116ab565b9091811061177357926001602096936116fd8a6000805160206139da8339815191529a98956117508260409a612497565b86895260028552898920338a5285528989205594975094979950509396506116d2565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b5034610329576117c23661216b565b90839594954211610946576001600160a01b03878116808a52600460205260408a208054919692959290600019831461186157826118529694928d9260016108d498960190556040519160208301936000805160206139ba833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108988161233c565b16036108eb5761037c92612e45565b634e487b7160e01b8c52601160045260248cfd5b5034610329576020366003190112610329576020906040906001600160a01b0361189d6120d9565b168152601883522054604051908152f35b5034610329578060031936011261032957602060255460801c604051908152f35b503461032957604036600319011261032957600435600981101561105d576118f561214d565b6008549091906001600160a01b031633036119ab5760ff611915826121ef565b5416151591151591821461197157808260ff611933611961946121ef565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46121ef565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103295761018036600319011261032957602480356001600160a01b0381811691829003611059576001600160401b03604435818111611e995736602382011215611e99578060040135918211611e995736858383010111611e99576064359383851680950361060257611a62846005541633146123cb565b60043580611e59575b5080611e1b575b508482611cc1575b50505081611c81575b505060843580611c69575b5060a43580611c51575b5060c43580611c3a575b5060e43580611c16575b506101043580611bf2575b506101243580611bc1575b506101443580611b4e575b50610164359081611adc578280f35b601e548210611aef5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b5d620186a0821115612416565b601f548111611b6f57601e5538611acd565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611ac2565b611c00620186a08210612416565b611c0d601b548211612416565b601c5538611ab7565b611c24620186a08210612416565b611c31601c548210612416565b601b5538611aac565b611c48620186a08210612416565b601d5538611aa2565b611c60620186a0821115612416565b601a5538611a98565b611c78620186a0821115612416565b60195538611a8e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611a83565b8291611cce60105461221e565b601f8111611dbc575b508790601f8411600114611d3c578893611d2f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084611a7a565b0101359050843880611cec565b60108952601f1984169450600080516020613a1a83398151915292509087908960205b878210611d9d5750508460019610611d81575b50505050811b01601055611d03565b60001960f88660031b161c199201013516905538808681611d72565b8285019093013585556001949094019389929182019190810190611d5f565b601089529092509050600080516020613a1a833981519152601f840160051c810160208510611e14575b91849391601f8994920160051c01905b818110611e035750611cd7565b898155859450889350600101611df6565b5080611de6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611a72565b611e68620186a0821115612416565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a360205538611a6b565b8580fd5b503461032957604036600319011261032957611120611eba6120d9565b6024359033612e93565b503461032957606036600319011261032957611ede6120d9565b611ee661214d565b611eee61215c565b9060018060a01b03928391611f08836005541633146123cb565b15611f9a571690811590811591611f92575b5015611f55578060055492831660008051602061399a8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f1a565b9150501660018060a01b0319600654161760065580f35b5034610329578060031936011261032957808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611fee81612306565b51915afa611ffa61377e565b9150156120575761200d61035f91613805565b610e2a6034604051809373546170696f63612053696e67756c61726974792d60601b60208301526120478151809260208686019101612105565b8101036014810184520182612373565b5061035f6120636137ae565b61200d565b5034610329578060031936011261032957604061208361274f565b825191151582526020820152f35b90503461105d57604036600319011261105d5760406020926120b16120d9565b6120b96120ef565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361058b57565b602435906001600160a01b038216820361058b57565b60005b8381106121185750506000910152565b8181015183820152602001612108565b9060209161214181518092818552858086019101612105565b601f01601f1916010190565b60243590811515820361058b57565b60443590811515820361058b57565b60e090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b5790604435906064359060843560ff8116810361058b579060a4359060c43590565b606090600319011261058b576001600160a01b0390600435828116810361058b5791602435908116810361058b579060443590565b6009811015612208576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561224e575b602083101461223857565b634e487b7160e01b600052602260045260246000fd5b91607f169161222d565b601054600092916122688261221e565b9081815260019283811690816000146122c2575060011461228857505050565b9092935060106000526020928360002092846000945b8386106122ae5750505050010190565b80548587018301529401938590820161229e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116122f057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176122f057604052565b606081019081106001600160401b038211176122f057604052565b61010081019081106001600160401b038211176122f057604052565b608081019081106001600160401b038211176122f057604052565b601f909101601f19168101906001600160401b038211908210176122f057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116122f057601f01601f191660200190565b156123d257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561241d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561093057565b8115612473570490565b634e487b7160e01b600052601260045260246000fd5b604d811161093057600a0a90565b9190820391821161093057565b9190820180921161093057565b8181039291600013801582851316918412161761093057565b60145491929161251391612504916124fa916124f0906001600160801b03831690612456565b9060801c90612469565b93601f5490612456565b61250d83612489565b90612469565b8083106125db576125276125639184612497565b9161255e61255861254f601e5461254961254086612489565b602154906124a4565b90612456565b61250d84612489565b91612489565b6124b1565b6509184e72a0009081810291818305149015171561093057670de0b6b3a76400009182810292818405149015171561093057801561247357600160ff1b9180831460001983141661093057059060008212156125d457811461093057600003905b8082116125cf575090565b905090565b50906125c4565b505050600090565b9160018060a01b038093169160009383855260206017815260409182872054908115612735578783855161261681612306565b82815201526126236131b0565b50505050509190506126368615156128b7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561272b5789916126f8575b50916126d86126ec97989994926126b3886126ae6126a5601898620186a06022540490612456565b601e5490612456565b612469565b815190936001600160801b039186916126ce91841690612456565b9201511690612469565b8181106126f057035b978352522054612903565b9091565b5050826126e1565b90508381813d8311612724575b61270f8183612373565b8101031261272057516126d861267d565b8880fd5b503d612705565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361058b57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278260248201612258565b0381600080955af180156128ab578194829161286f575b509284156128125783156127d857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612825601354601254906124a4565b42116128355750601154906127d2565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128a4575b6128888183612373565b8101031261032957602061289b85612742565b94015138612799565b503d61287e565b508251903d90823e3d90fd5b156128be57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61290e8215156128b7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129ae5760009161297b575b50906126ae6129679260225490612456565b620186a0612977601e5483612456565b0491565b906020823d82116129a6575b8161299460209383612373565b810103126103295750516126ae612955565b3d9150612987565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129dd91612903565b918352601760205260408320548015612ae6578115612ae657818110612ae65782811015612adc57601454612a26918391610cd0916124f0906001600160801b03831690612456565b90620186a09283830292808404851490151715612ac857612a4b929161250d91612497565b91601b5491601c5493612a5e85856124b1565b80820291848212600160ff1b821416612ac8578183051490151715612ab45705818482019485129112908015821691151617612aa057508082126125cf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bec575b15612b47577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176122f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b1e565b15612c1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361058b57565b519060ff8216820361058b57565b60058110156122085780612cd25750565b60018103612d1a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e395791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e2c5781516001600160a01b03811615612e26579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612ef157565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f2e57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f86575050565b6000818152602090600382526040918282203383528152848383205410612ff05783825260038152828220338352815282822054600101612fc9575b5050505050565b612fe493825260038152828220903383525220918254612497565b90553880808080612fc2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061303782612306565b6014546001600160801b038116835260801c6020830152565b6040519061305d82612306565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561316e576018815260408620548015612fc257816130b061302a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316257809761312c575b50506126ce61310c6126a5613127969798620186a06022540490612456565b9561312260018060801b03948587511690612456565b612456565b111590565b9096508187813d831161315b575b6131448183612373565b8101031261032957509451946126ce61310c6130ed565b503d61313a565b604051903d90823e3d90fd5b5060019450505050565b6040519061318582612321565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161093057565b6131b8613178565b50600060206040516131c981612306565b8281520152600060206040516131de81612306565b82815201526040516131ef81612321565b6024546001600160401b038082168352604082811c909116602084015260809190911c9082015290819061322161302a565b9161322a613050565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa80156129ae5760009061365e575b885161329592506001600160801b0316906124a4565b94856136295760005b602085015181906132b8906001600160401b031642612497565b9586156135fe575050426001600160401b031660208b8101919091528901516001600160801b0316156135b457508751895160209161336791670de0b6b3a76400009161331d918991613122916001600160401b0316906001600160801b0316612456565b8b5191900498906001600160801b039061333c90828c16908316613197565b168b526126ae620186a0613352601a548c612456565b858e01516001600160801b0316919004612456565b60408b0180519197916001600160801b03808a16929161338a9084908316613197565b169052898301805190916001600160801b03916133a991908316613197565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129ae57600090613580575b885161340692506001600160801b0316906124a4565b8061354a57506000925b602b5484818110156134aa576134269082612497565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109305761348c9161345491612469565b916126ae613479613473602f549361312260018060401b039780612456565b836124a4565b8c519092906001600160401b0316612456565b16808952602e546001600160401b03169081116134a65750565b8852565b9050602c548082116134bb57505050565b6134c491612497565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610930576126ae61350d6134736134ff61351d95602d5490612469565b93613122602f549580612456565b8b516001600160401b0316612456565b602e5460401c6001600160401b0316808211613542575b506001600160401b03168852565b905038613534565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109305761357a91612469565b92613410565b506020813d6020116135ac575b8161359a60209383612373565b8101031261058b5761340690516133f0565b3d915061358d565b8951603054999a91999498509296509450506001600160401b039182169250168190036135f2575b5093926135e7613050565b926000926000929190565b815260019250386135dc565b9850995050509550505050509161361361302a565b9161361c613050565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029180830490911490151715610930578661365991612469565b61329e565b506020813d60201161368a575b8161367860209383612373565b8101031261058b57613295905161327f565b3d915061366b565b6020604061369e6131b0565b939795939092901561372f57505050600180851b03603054166000806000805160206139fa833981519152868851838152a45b600180851b03815116838201519160018060801b0319958691015160801b1691600160401b600160801b039060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b6000805160206139fa833981519152866001808a1b03865116948951908152a46136d1565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b3d156137a9573d9061378f826123b0565b9161379d6040519384612373565b82523d6000602084013e565b606090565b604051906137bb82612306565b60038252623f3f3f60e81b6020830152565b9081518110156137de570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109305760010190565b8051604081106138805750805181019060208181840193031261058b576020810151906001600160401b03821161058b570181603f8201121561058b576020810151613850816123b0565b9261385e6040519485612373565b8184526040828401011161058b5761387d916040602085019101612105565b90565b60209290830361396e576000805b60ff8116858110908161394f575b50156138b0576138ab906137f4565b61388e565b9260ff809416926138c0846123b0565b936138ce6040519586612373565b8085526138dd601f19916123b0565b013687860137825b85811687811080613932575b1561392757613922919061391c6001600160f81b031961391183886137cd565b5116871a91886137cd565b536137f4565b6138e5565b505094505050905090565b506001600160f81b031961394682866137cd565b511615156138f1565b6001600160f81b0319915061396490866137cd565b511615153861389c565b91505061387d6137ae56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207acd4251851f5cf1eb79a9ed055756a40c008a6ab5a53b9d246ac85d9f3452fd64736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556139b1928362000207843960805183612b2d015260a05183612bf8015260c05183612af7015260e05183612b7c01525182612ba201525181612b590152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220399709a559a74e0d2cc10af123840ecb35677ef037e24e4c3e8197ffd952c1b664736f6c63430008120033"; type SGLCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts index a7fd185a..35ef7470 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts @@ -1182,19 +1182,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1880,7 +1867,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a5561329c92836200020784396080518361267b015260a05183612745015260c05183612645015260e051836126ca015251826126f0015251816126a70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122041682b6289b3679e79836ea2ef5ed4c32aa8b7e93fe97a199277b1ecafa7301164736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122035f729f803dfd9f8c297404ba8278abed5b88654d5c6e33eb7d1b59b2a92e6a064736f6c63430008120033"; type SGLCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts index 4e5c4fdb..a6f5c116 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts @@ -1182,19 +1182,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1880,7 +1867,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a5561329c92836200020784396080518361267b015260a05183612745015260c05183612645015260e051836126ca015251826126f0015251816126a70152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d8b5750806302ce728f14611c0357806306fdde0314611b4c578063078dfbe714611a5b578063095ea7b314611a345780630996efb71461157a5780630c4e84f01461146257806318160ddd146114415780631c9e379b146114085780631da8bf101461135a57806323b872dd146111bd578063313ce5671461112b578063331960ff1461110d57806334d441d0146110ef5780633644e515146110d457806337b6b7b9146110b657806338d52e0f1461108d5780633ba0b9a91461106f5780633f741adb1461104a57806340626d8b1461102c57806344de240a1461100e578063473e3ce714610ff057806348e4163e14610fb75780634d7f2a3414610f995780634e71e0c814610efd578063529898f214610edf57806352f353eb14610eb65780635514023214610e8d57806355c2ab9414610e625780635793546214610e445780635dfe04e814610de35780636c3d8b8f14610dba57806370a0823114610d815780637277854714610d4957806374645ff314610d1e5780637dc0d1d014610cf55780637ecebe0014610cbc5780637fa0b84e14610c8a578063821226e814610c6c5780638285ef4014610c395780638c5d0ed314610c1b5780638da5cb5b14610bf2578063910dd7c8146109f9578063959916dc146109dc57806395d89b411461092257806399a97028146108f25780639c5d7192146108d45780639e15e89f14610899578063a9059cbb146107b6578063b0e21e8a14610798578063b27c0e741461075e578063bb4cfe3b14610740578063c23ea21f14610717578063ce8849ed146106ee578063d505accf1461055b578063d8dfeb4514610532578063dd62ed3e146104e7578063de406577146104be578063e0996cb6146104a0578063e30c397814610477578063ea64dd5614610459578063eec0f42e1461043b578063f42760b71461041d578063f8ba4cff1461034d578063f9557ccb146103165763ffe04c66146102f657600080fd5b346103135780600319360112610313576020602b54604051908152f35b80fd5b503461031357806003193601126103135760255460405190819061034990608081901c906001600160801b03168361203e565b0390f35b50346103135780600319360112610313576020604061036a612ac4565b93979593909290156103f857505050600180851b03603054168680600080516020613227833981519152868851838152a45b600180851b038151166001851b600160801b0384830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b600080516020613227833981519152866001808a1b03865116948951908152a461039c565b50346103135780600319360112610313576020602c54604051908152f35b50346103135780600319360112610313576020600c54604051908152f35b50346103135780600319360112610313576020601f54604051908152f35b50346103135780600319360112610313576006546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601d54604051908152f35b50346103135780600319360112610313576009546040516001600160a01b039091168152602090f35b5034610313576040366003190112610313576040602091610506611dd3565b61050e611dee565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610313578060031936011261031357600b546040516001600160a01b039091168152602090f35b50346103135761056a36611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a2080549196929592906000198314610695578261063e9694928d92600161063698960190556040519160208301936000805160206131a7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b519020610605612642565b9060405190602082019261190160f01b8452602283015260428201526042815261062e81612000565b519020612916565b919091612817565b16036106505761064d926129e9565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103135780600319360112610313576008546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576026546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601e54604051908152f35b503461031357806003193601126103135760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346103135780600319360112610313576020601a54604051908152f35b5034610313576040366003190112610313576107d0611dd3565b60243580928115801590610887575b610817575b50506040519182526001600160a01b031690339060008051602061320783398151915290602090a3602060405160018152f35b338152600160205260408120546108308382101561276b565b6001600160a01b038416903382900361084b575b50506107e4565b6040936108629161085d8415156127b0565b612155565b33835260016020528383205581522061087c838254612162565b905581388080610844565b50336001600160a01b038416146107df565b50346103135760403660031901126103135760606108c16108b8611dd3565b602435906122a1565b9060405192835260208301526040820152f35b50346103135780600319360112610313576020602d54604051908152f35b503461031357604036600319011261031357602061091a610911611dd3565b60243590612510565b604051908152f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261095f81611fc9565b51915afa61096b612fab565b9150156109cb5761097e61034991613032565b6109b76023604051809362746d2d60e81b60208301526109a78151809260208686019101611e04565b810103600381018452018261201b565b604051918291602083526020830190611e27565b506103496109d7612fdb565b61097e565b503461031357806003193601126103135760208054604051908152f35b5034610313576040366003190112610313576004356001600160401b038111610bee5736602382011215610bee57806004013582610a3682612058565b92610a44604051948561201b565b82845260208401923660248284010111610bea578060246020930185378401015260243561ffff81168103610be657610100918284805181010312610be257610a8c90612400565b610a98604085016127f5565b91610aa5606086016127f5565b9460808101519460a082015192610abe60c08401612809565b9160e0840151930151938042116106a9578515610bcd576000805160206131a7833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610bb9579161ffff610b769896949261063698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b6781611fe4565b60208151910120610605612642565b6001600160a01b038381169116036106505715610ba35761064d926001600160a01b0390811691166129e9565b61064d926001600160a01b03908116911661299b565b634e487b7160e01b8d52601160045260248dfd5b6000805160206131e783398151915291610ae6565b8480fd5b8380fd5b8280fd5b5080fd5b50346103135780600319360112610313576005546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601b54604051908152f35b503461031357806003193601126103135760145460405190819061034990608081901c906001600160801b03168361203e565b50346103135780600319360112610313576020602f54604051908152f35b503461031357604036600319011261031357610cb1610ca7611dd3565b602435903361299b565b602060405160018152f35b5034610313576020366003190112610313576020906040906001600160a01b03610ce4611dd3565b168152600483522054604051908152f35b5034610313578060031936011261031357600f546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576103496040516109b781610d4281611f13565b038261201b565b50346103135760203660031901126103135760043590600982101561031357602060ff610d7584611eaa565b54166040519015158152f35b5034610313576020366003190112610313576020906040906001600160a01b03610da9611dd3565b168152600183522054604051908152f35b5034610313578060031936011261031357600a546040516001600160a01b039091168152602090f35b5034610313578060031936011261031357610dfc612a40565b506080610e07612ac4565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b50346103135780600319360112610313576020601c54604051908152f35b5034610313578060031936011261031357602e546040805191901c6001600160401b03168152602090f35b5034610313578060031936011261031357602e546040516001600160401b039091168152602090f35b50346103135780600319360112610313576030546040516001600160401b039091168152602090f35b50346103135780600319360112610313576020602154604051908152f35b50346103135780600319360112610313576006546001600160a01b039081811633819003610f5557806005549384166000805160206131c78339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103135780600319360112610313576020602a54604051908152f35b5034610313576020366003190112610313576020906040906001600160a01b03610fdf611dd3565b168152601783522054604051908152f35b50346103135780600319360112610313576020601554604051908152f35b50346103135780600319360112610313576020600e54604051908152f35b50346103135780600319360112610313576020601654604051908152f35b503461031357606036600319011261031357602061091a604435602435600435612188565b50346103135780600319360112610313576020601154604051908152f35b5034610313578060031936011261031357600d546040516001600160a01b039091168152602090f35b50346103135780600319360112610313576020601254604051908152f35b5034610313578060031936011261031357602061091a612642565b50346103135780600319360112610313576020601954604051908152f35b50346103135780600319360112610313576020601354604051908152f35b5034610313578060031936011261031357808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261116881611fc9565b51915afa90611175612fab565b91806111b2575b156111a757602082805181010312610313575061119c6020809201612809565b60ff60405191168152f35b50506020601261119c565b50602082511461117c565b5034610313576060366003190112610313576111d7611dd3565b906111e0611dee565b604435918261121e575b506040519182526001600160a01b0390811692169060008051602061320783398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906112478286101561276b565b86169384840361125c575b50505050506111ea565b8386526002835260408087203388528452862054600181016112c6575b50926001602096936112a4879460409761085d6000805160206132078339815191529c9a15156127b0565b92855252838320558152206112ba858254612162565b90559138808581611252565b9091811061131a57926001602096936112a48a6000805160206132078339815191529a98956112f78260409a612155565b86895260028552898920338a528552898920559497509497995050939650611279565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103135761136936611e5b565b908395949542116106a9576001600160a01b03878116808a52600460205260408a208054919692959290600019831461069557826113f99694928d92600161063698960190556040519160208301936000805160206131e7833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105fa81611fe4565b16036106505761064d9261299b565b5034610313576020366003190112610313576020906040906001600160a01b03611430611dd3565b168152601883522054604051908152f35b5034610313578060031936011261031357602060255460801c604051908152f35b5034610313576040366003190112610313576004356009811015610bee57611488611e4c565b6008549091906001600160a01b0316330361153e5760ff6114a882611eaa565b5416151591151591821461150457808260ff6114c66114f494611eaa565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611eaa565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103135761018036600319011261031357602480356001600160a01b0381811691829003610be6576001600160401b03604435818111611a305736602382011215611a30578060040135918211611a305736858383010111611a305760643593838516809503611a2c576115f584600554163314612073565b600435806119ec575b50806119ae575b508482611854575b50505081611814575b5050608435806117fc575b5060a435806117e4575b5060c435806117cd575b5060e435806117a9575b506101043580611785575b506101243580611754575b5061014435806116e1575b5061016435908161166f578280f35b601e5482106116825750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6116f0620186a08211156120be565b601f54811161170257601e5538611660565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538611655565b611793620186a082106120be565b6117a0601b5482116120be565b601c553861164a565b6117b7620186a082106120be565b6117c4601c5482106120be565b601b553861163f565b6117db620186a082106120be565b601d5538611635565b6117f3620186a08211156120be565b601a553861162b565b61180b620186a08211156120be565b60195538611621565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880611616565b8291611861601054611ed9565b601f811161194f575b508790601f84116001146118cf5788936118c2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461160d565b010135905084388061187f565b60108952601f198416945060008051602061324783398151915292509087908960205b8782106119305750508460019610611914575b50505050811b01601055611896565b60001960f88660031b161c199201013516905538808681611905565b82850190930135855560019490940193899291820191908101906118f2565b601089529092509050600080516020613247833981519152601f840160051c8101602085106119a7575b91849391601f8994920160051c01905b818110611996575061186a565b898155859450889350600101611989565b5080611979565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138611605565b6119fb620186a08211156120be565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386115fe565b8680fd5b8580fd5b503461031357604036600319011261031357610cb1611a51611dd3565b60243590336129e9565b503461031357606036600319011261031357611a75611dd3565b611a7d611e4c565b604435908115158203610be65760018060a01b03928391611aa383600554163314612073565b15611b35571690811590811591611b2d575b5015611af057806005549283166000805160206131c78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ab5565b9150501660018060a01b0319600654161760065580f35b5034610313578060031936011261031357808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b8981611fc9565b51915afa611b95612fab565b915015611bf257611ba861034991613032565b6109b76034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611be28151809260208686019101611e04565b810103601481018452018261201b565b50610349611bfe612fdb565b611ba8565b5034610313578060031936011261031357600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c4760248201611f13565b03925af18015611d805782918391611d40575b508115611ce1578015611ca557807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611cf360135460125490612162565b4211611d0457604090601154611c93565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d78575b81611d5c6040938361201b565b81010312610bee576020611d6f82612400565b91015138611c5a565b3d9150611d4f565b6040513d84823e3d90fd5b905034610bee576040366003190112610bee576040602092611dab611dd3565b611db3611dee565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611de957565b600080fd5b602435906001600160a01b0382168203611de957565b60005b838110611e175750506000910152565b8181015183820152602001611e07565b90602091611e4081518092818552858086019101611e04565b601f01601f1916010190565b602435908115158203611de957565b60e0906003190112611de9576001600160a01b03906004358281168103611de957916024359081168103611de95790604435906064359060843560ff81168103611de9579060a4359060c43590565b6009811015611ec3576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f09575b6020831014611ef357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ee8565b60105460009291611f2382611ed9565b908181526001928381169081600014611f7d5750600114611f4357505050565b9092935060106000526020928360002092846000945b838610611f695750505050010190565b805485870183015294019385908201611f59565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fb357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fb357604052565b61010081019081106001600160401b03821117611fb357604052565b608081019081106001600160401b03821117611fb357604052565b601f909101601f19168101906001600160401b03821190821017611fb357604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611fb357601f01601f191660200190565b1561207a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120c557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211157565b634e487b7160e01b600052601160045260246000fd5b8115612131570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211157600a0a90565b9190820391821161211157565b9190820180921161211157565b8181039291600013801582851316918412161761211157565b6014549192916121d1916121c2916121b8916121ae906001600160801b038316906120fe565b9060801c90612127565b93601f54906120fe565b6121cb83612147565b90612127565b808310612299576121e56122219184612155565b9161221c61221661220d601e546122076121fe86612147565b60215490612162565b906120fe565b6121cb84612147565b91612147565b61216f565b6509184e72a0009081810291818305149015171561211157670de0b6b3a76400009182810292818405149015171561211157801561213157600160ff1b91808314600019831416612111570590600082121561229257811461211157600003905b80821161228d575090565b905090565b5090612282565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123f357878385516122d481611fc9565b82815201526122e1612ac4565b50505050509190506122f486151561240d565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123e95789916123b6575b50916123966123aa97989994926123718861236c612363601898620186a060225404906120fe565b601e54906120fe565b612127565b815190936001600160801b0391869161238c918416906120fe565b9201511690612127565b8181106123ae57035b978352522054612459565b9091565b50508261239f565b90508381813d83116123e2575b6123cd818361201b565b810103126123de575161239661233b565b8880fd5b503d6123c3565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611de957565b1561241457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246482151561240d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612504576000916124d1575b509061236c6124bd92602254906120fe565b620186a06124cd601e54836120fe565b0491565b906020823d82116124fc575b816124ea6020938361201b565b8101031261031357505161236c6124ab565b3d91506124dd565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253391612459565b91835260176020526040832054801561263c57811561263c5781811061263c57828110156126325760145461257c91839161085d916121ae906001600160801b038316906120fe565b90620186a0928383029280840485149015171561261e576125a192916121cb91612155565b91601b5491601c54936125b4858561216f565b80820291848212600160ff1b82141661261e57818305149015171561260a57058184820194851291129080158216911516176125f6575080821261228d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612742575b1561269d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611fb35760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612674565b1561277257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127b757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611de957565b519060ff82168203611de957565b6005811015611ec357806128285750565b600181036128705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161298f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156129825781516001600160a01b0381161561297c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a4d82611f98565b60006040838281528260208201520152565b60405190612a6c82611fc9565b6014546001600160801b038116835260801c6020830152565b60405190612a9282611fc9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211157565b612acc612a40565b5060006020604051612add81611fc9565b828152015260006020604051612af281611fc9565b8281520152604051612b0381611f98565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190612b35612a5f565b91612b3e612a85565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa801561250457600090612f77575b8851612ba992506001600160801b031690612162565b9485612f425760005b60208501518190612bcc906001600160401b031642612155565b958615612f17575050426001600160401b031660208b8101919091528901516001600160801b031615612ecd575087518951602091612c8091670de0b6b3a764000091612c36918991612c31916001600160401b0316906001600160801b03166120fe565b6120fe565b8b5191900498906001600160801b0390612c5590828c16908316612aab565b168b5261236c620186a0612c6b601a548c6120fe565b858e01516001600160801b03169190046120fe565b60408b0180519197916001600160801b03808a169291612ca39084908316612aab565b169052898301805190916001600160801b0391612cc291908316612aab565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250457600090612e99575b8851612d1f92506001600160801b031690612162565b80612e6357506000925b602b548481811015612dc357612d3f9082612155565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211157612da591612d6d91612127565b9161236c612d92612d8c602f5493612c3160018060401b0397806120fe565b83612162565b8c519092906001600160401b03166120fe565b16808952602e546001600160401b0316908111612dbf5750565b8852565b9050602c54808211612dd457505050565b612ddd91612155565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121115761236c612e26612d8c612e18612e3695602d5490612127565b93612c31602f5495806120fe565b8b516001600160401b03166120fe565b602e5460401c6001600160401b0316808211612e5b575b506001600160401b03168852565b905038612e4d565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211157612e9391612127565b92612d29565b506020813d602011612ec5575b81612eb36020938361201b565b81010312611de957612d1f9051612d09565b3d9150612ea6565b8951603054999a91999498509296509450506001600160401b03918216925016819003612f0b575b509392612f00612a85565b926000926000929190565b81526001925038612ef5565b98509950505095505050505091612f2c612a5f565b91612f35612a85565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156121115786612f7291612127565b612bb2565b506020813d602011612fa3575b81612f916020938361201b565b81010312611de957612ba99051612b93565b3d9150612f84565b3d15612fd6573d90612fbc82612058565b91612fca604051938461201b565b82523d6000602084013e565b606090565b60405190612fe882611fc9565b60038252623f3f3f60e81b6020830152565b90815181101561300b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121115760010190565b8051604081106130ad57508051810190602081818401930312611de9576020810151906001600160401b038211611de9570181603f82011215611de957602081015161307d81612058565b9261308b604051948561201b565b81845260408284010111611de9576130aa916040602085019101611e04565b90565b60209290830361319b576000805b60ff8116858110908161317c575b50156130dd576130d890613021565b6130bb565b9260ff809416926130ed84612058565b936130fb604051958661201b565b80855261310a601f1991612058565b013687860137825b8581168781108061315f575b156131545761314f91906131496001600160f81b031961313e8388612ffa565b5116871a9188612ffa565b53613021565b613112565b505094505050905090565b506001600160f81b03196131738286612ffa565b5116151561311e565b6001600160f81b031991506131919086612ffa565b51161515386130c9565b9150506130aa612fdb56fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220131e53f94d060c0a601ba129a2c2041dbbd6b9477d94d8be17a3da6784126e4c64736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206d6a528da3a7043ae001a8842cb314676d1eae64537dc29365a43036887b57a364736f6c63430008120033"; type SGLLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts index 398c78bd..dde1488d 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts @@ -1226,19 +1226,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -2196,7 +2183,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556153f59283620002078439608051836138ad015260a05183613977015260c05183613877015260e051836138fc01525182613922015251816138d90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612dcf5750806302ce728f14612da657806306fdde0314612cef578063078dfbe714612c02578063095ea7b314612bdb5780630996efb71461273c5780630c4e84f01461262457806318160ddd146126035780631c9e379b146125ca5780631da8bf10146125275780631ee9c8f2146120e257806323b872dd14611f3f5780632a9399d914611b3d578063313ce56714611b09578063331960ff14611aeb57806334d441d014611acd5780633644e51514611ab257806337b6b7b914611a9457806338d52e0f14611a6b5780633ba0b9a914611a4d5780633f741adb14611a2857806340626d8b14611a0a57806344de240a146119ec578063473e3ce7146119ce57806348e4163e146119955780634d7f2a34146119775780634e71e0c8146118db578063529898f2146118bd57806352f353eb14611894578063551402321461186b57806355c2ab9414611840578063579354621461182257806358db9afe146114015780635dfe04e8146113a05780636c3d8b8f1461137757806370a082311461133e578063727785471461130657806374645ff3146112db5780637dc0d1d0146112b25780637ecebe00146112795780637fa0b84e14611247578063821226e8146112295780638285ef40146111f65780638c5d0ed3146111d85780638da5cb5b146111af578063910dd7c814610f7e578063959916dc14610f6157806395d89b4114610ea757806399a9702814610e775780639c5d719214610e595780639e15e89f14610e1e578063a9059cbb14610d3b578063b0e21e8a14610d1d578063b27c0e7414610ce3578063bb4cfe3b14610cc5578063c23ea21f14610c9c578063ce8849ed14610c73578063d49dffa714610627578063d505accf146104d7578063d8dfeb45146104ae578063dd62ed3e1461045f578063de40657714610436578063e0996cb614610418578063e30c3978146103ef578063ea64dd56146103d1578063eec0f42e146103b3578063f42760b714610395578063f8ba4cff14610379578063f9557ccb146103425763ffe04c661461032257600080fd5b3461033f578060031936011261033f576020602b54604051908152f35b80fd5b503461033f578060031936011261033f5760255460405190819061037590608081901c906001600160801b0316836130f6565b0390f35b503461033f578060031936011261033f5761039261426d565b80f35b503461033f578060031936011261033f576020602c54604051908152f35b503461033f578060031936011261033f576020600c54604051908152f35b503461033f578060031936011261033f576020601f54604051908152f35b503461033f578060031936011261033f576006546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601d54604051908152f35b503461033f578060031936011261033f576009546040516001600160a01b039091168152602090f35b503461033f57604036600319011261033f57610479612e17565b6040610483612e2d565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461033f578060031936011261033f57600b546040516001600160a01b039091168152602090f35b503461033f576104e636612f00565b908395949542116105f4576105b2916105aa9160018060a01b0394858a169687600052600460205260406000209081549161052083613bc0565b90556040519060208201926000805160206152c08339815191528452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b519020610579613874565b9060405190602082019261190160f01b845260228301526042820152604281526105a28161309c565b519020613b48565b919091613a49565b16036105c15761039292613c1d565b60405162461bcd60e51b815260206004820152601e60248201526000805160206152a08339815191526044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201526000805160206152808339815191526044820152606490fd5b5061014036600319011261033f5761063d612e17565b606435151560643503610a35576001600160401b036084358110610c6f57606060843536036003190112610c6f5760a43511610a265760e060a43536036003190112610a265760803660c3190112610a2657600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106c89060ff1615614350565b6106d061341d565b50506106da61426d565b6106ef6001600160a01b0382163014156143cd565b6106fd604460a43501614418565b60c4356001600160a01b0381169003610a35576107206107259160c43590614792565b614427565b60243580610ad3575b506107b06107826107aa6107a4610788620186a06107506020546044356131c5565b0461076060115491604435613229565b600d5460ff90610778906001600160a01b0316614532565b16958692896135d1565b90614698565b6001600160a01b038616875260186020526040872054906131c5565b9161320e565b906131ee565b336001600160a01b03831603610a7f575b6107cb90826146db565b61080c60406107dd60443584806148c2565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614480565b03925af1908115610a74578391610a44575b50600d546001600160a01b03169060643515610a3e57475b823b15610a3a5760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff610884602460a4350161312b565b1661012483015261ffff61089c604460a4350161312b565b166101448301526001600160a01b036108b960a435606401612e59565b166101648301526109856109176108f06108dd608460a4350160a4356004016144af565b60e06101848801526101e48701916144e1565b61090360a480350160a4356004016144af565b86830361010319016101a4880152906144e1565b6001600160a01b0361092d60a43560c401612e59565b166101c485015283810360031901606485015260606109756004608435016001600160a01b0361095c82612e59565b16845260843560248101356020860152604401906144af565b91909281604082015201916144e1565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a355760a4840152610104356001600160a01b03811690819003610a355760c4840152610124356001600160a01b0381169190829003610a355783879593818795819560e483015203925af18015610a2a57610a12575b50610392610a0d83601154906145a0565b61438d565b610a1b9061303d565b610a265781386109fc565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610836565b610a66915060403d604011610a6d575b610a5e81836130d3565b81019061446a565b503861081e565b503d610a54565b6040513d85823e3d90fd5b806107c15760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a74578391610c3d575b50610b2381836146db565b8015610bb1575b60018060a01b03821660005260186020526040600020610b4b828254613229565b9055610b5981601554613229565b60155560018060a01b038216600052602760205260406000206029546000526020526040600020610b8b828254613229565b90556001600160a01b03821680600080516020615300833981519152600080a43861072e565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c3157600091610bff575b50610b2a565b906020823d602011610c29575b81610c19602093836130d3565b8101031261033f57505138610bf9565b3d9150610c0c565b6040513d6000823e3d90fd5b90506020813d602011610c67575b81610c58602093836130d3565b81010312610a35575138610b18565b3d9150610c4b565b8280fd5b503461033f578060031936011261033f576008546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576026546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601e54604051908152f35b503461033f578060031936011261033f5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b503461033f578060031936011261033f576020601a54604051908152f35b503461033f57604036600319011261033f57610d55612e17565b60243580928115801590610e0c575b610d9c575b50506040519182526001600160a01b031690339060008051602061536083398151915290602090a3602060405160018152f35b33815260016020526040812054610db58382101561399d565b6001600160a01b0384169033829003610dd0575b5050610d69565b604093610de791610de28415156139e2565b61321c565b338352600160205283832055815220610e01838254613229565b905581388080610dc9565b50336001600160a01b03841614610d64565b503461033f57604036600319011261033f576060610e46610e3d612e17565b6024359061335c565b9060405192835260208301526040820152f35b503461033f578060031936011261033f576020602d54604051908152f35b503461033f57604036600319011261033f576020610e9f610e96612e17565b60243590613742565b604051908152f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee481613081565b51915afa610ef0614502565b915015610f5057610f036103759161510e565b610f3c6023604051809362746d2d60e81b6020830152610f2c8151809260208686019101612e6d565b81010360038101845201826130d3565b604051918291602083526020830190612e90565b50610375610f5c6150b7565b610f03565b503461033f578060031936011261033f5760208054604051908152f35b503461033f57604036600319011261033f576004356001600160401b038111610a265736602382011215610a2657806004013590610fbb82613110565b90610fc960405192836130d3565b82825283602091828401943660248284010111610c6f578060248593018737840101526024359061ffff8216809203610a35576101009384848051810103126111ab5761101590613410565b9061102260408501613a27565b61102e60608601613a27565b9560808601519560a08101519161104760c08301613a3b565b9060e08301519201519260018060a01b03808096169a169781421161117857926105aa9289888d989794611113978e8d600014611163576000805160206152c0833981519152945b8c600052600485526040600020928354936110a985613bc0565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110e0816130b7565b5190206110eb613874565b90604051908a82019261190160f01b845260228301526042820152604281526105a28161309c565b16036111315750156111285761039292613c1d565b61039292613bcf565b6064906040519062461bcd60e51b82526004820152601e60248201526000805160206152a08339815191526044820152fd5b6000805160206153408339815191529461108f565b60405162461bcd60e51b815260048101889052601d60248201526000805160206152808339815191526044820152606490fd5b8580fd5b503461033f578060031936011261033f576005546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601b54604051908152f35b503461033f578060031936011261033f5760145460405190819061037590608081901c906001600160801b0316836130f6565b503461033f578060031936011261033f576020602f54604051908152f35b503461033f57604036600319011261033f5761126e611264612e17565b6024359033613bcf565b602060405160018152f35b503461033f57602036600319011261033f576020906040906001600160a01b036112a1612e17565b168152600483522054604051908152f35b503461033f578060031936011261033f57600f546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f57610375604051610f3c816112ff81612fb8565b03826130d3565b503461033f57602036600319011261033f5760043590600982101561033f57602060ff61133284612f4f565b54166040519015158152f35b503461033f57602036600319011261033f576020906040906001600160a01b03611366612e17565b168152600183522054604051908152f35b503461033f578060031936011261033f57600a546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576113b9613c74565b5060806113c4613cf8565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b503461033f5760a036600319011261033f5761141b612e17565b60243590611427612e43565b906084356001600160401b038111610a3a57611447903690600401612ed3565b93909460066000526020956007875261146860ff6040600020541615614350565b61147061341d565b505061147a61426d565b6001600160a01b03848116959093600491611497308914156143cd565b8986600a54166040519485809263433e762d60e01b82525afa9283156118175790869186946117de575b506114d29161072091168094614792565b6114dc81876146db565b600087815260188a52604081206114f483825461321c565b90556115028260155461321c565b6015558560095416600c54813b15610c6f578361153a92849283604051809681958294630208d92960e11b84528c306004860161487f565b03925af18015610a2a576117cf575b508183896000805160206152e08339815191528480a487815260278a5260408120602954908183528b52604082205483116000146117a9575087815260278a526040812060295482528a5260408120555b610140600c54600e54906115c26040519485938493633d9545e960e11b855260048501614cd6565b0381855afa90811561179e578460409493928892829161176d575b5061160186519b8c968795869463efa84c6d60e01b86526044359060048701614d00565b03925af19384156117605781958295611739575b50611624604435871015614d92565b815260178652604081205491866116428461163d613c93565b614dd0565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561172d57916116f8575b50610e9f93610a0d939291116116a55761169a908280614e2e565b505b601154906145a0565b506116ae613c93565b80516001600160801b039081166116d35750506116cd845b8280614e2e565b5061169c565b81816116ea6116f3938a6116cd96015116896131c5565b915116906131ee565b6116c6565b929190508583813d8311611726575b61171181836130d3565b81010312610a35579151909190610e9f61167f565b503d611707565b604051903d90823e3d90fd5b90945061175691955060403d604011610a6d57610a5e81836130d3565b9490949338611615565b50604051903d90823e3d90fd5b61179191506101403d61014011611797575b61178981836130d3565b810190614bfb565b386115dd565b503d61177f565b6040513d86823e3d90fd5b9060409189825260278c528282209082528b52206117c882825461321c565b905561159a565b6117d89061303d565b38611549565b610720919450916118076114d2938d803d10611810575b6117ff81836130d3565b810190614be1565b949150916114c1565b503d6117f5565b6040513d87823e3d90fd5b503461033f578060031936011261033f576020601c54604051908152f35b503461033f578060031936011261033f57602e546040805191901c6001600160401b03168152602090f35b503461033f578060031936011261033f57602e546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576030546040516001600160401b039091168152602090f35b503461033f578060031936011261033f576020602154604051908152f35b503461033f578060031936011261033f576006546001600160a01b03908181163381900361193357806005549384166000805160206153208339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461033f578060031936011261033f576020602a54604051908152f35b503461033f57602036600319011261033f576020906040906001600160a01b036119bd612e17565b168152601783522054604051908152f35b503461033f578060031936011261033f576020601554604051908152f35b503461033f578060031936011261033f576020600e54604051908152f35b503461033f578060031936011261033f576020601654604051908152f35b503461033f57606036600319011261033f576020610e9f60443560243560043561324f565b503461033f578060031936011261033f576020601154604051908152f35b503461033f578060031936011261033f57600d546040516001600160a01b039091168152602090f35b503461033f578060031936011261033f576020601254604051908152f35b503461033f578060031936011261033f576020610e9f613874565b503461033f578060031936011261033f576020601954604051908152f35b503461033f578060031936011261033f576020601354604051908152f35b503461033f578060031936011261033f57600d54602090611b32906001600160a01b0316614532565b60ff60405191168152f35b5060031961012036820112610a2657611b54612e17565b90611b5d612ec4565b60643591906001600160401b03908184116111ab5760608385360301126111ab576084359182116111ab5760e08383360301126111ab5760803660a31901126111ab57600660005260209060078252611bbe60ff6040600020541615614350565b611bc661341d565b5050611bd061426d565b6001600160a01b0386811693909290611beb308614156143cd565b6044810191611bf983614418565b9760a435868116998a8203610a3557611c159161072091614792565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa988915611ed9578b908d9a611f0c575b5089611c69611d119b6040936146db565b896000526018855281600020611c8082825461321c565b9055611c8e8160155461321c565b60155580308b6000805160206152e0833981519152600080a48960005260278552816000206029549081600052865282600020548211600014611ee4575089600052602785528160002060295460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614480565b03925af1988915611ed9578c99611eb7575b50600b5487169515611eb05747975b863b15611eac5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611d7c9061312b565b16906101240152611d8c9061312b565b166101448c015281611da060648801612e59565b166101648c0152611db460848701826144af565b6101848d0160e090526101e48d0190611dcc926144e1565b9060a48701611dda916144af565b8c830361010319016101a48e0152611df292916144e1565b9460c401611dff90612e59565b166101c48a0152888403016064890152806004019186611e1e84612e59565b168452602482013590840152604401611e36916144af565b606060408401819052611e4a9301916144e1565b95608486015260c435838116809103610a355760a486015260e435838116809103610a355760c486015235918216809203610a355783879593818795819560e483015203925af18015610a2a57610a125750610392610a0d83601154906145a0565b8c80fd5b3497611d32565b611ed191995060403d604011610a6d57610a5e81836130d3565b509738611d23565b6040513d8e823e3d90fd5b8a600052602786528260002090600052855281600020611f0582825461321c565b9055611ce7565b809a50848092503d8311611f38575b611f2581836130d3565b81010312610a35579751978a6040611c58565b503d611f1b565b503461033f57606036600319011261033f57611f59612e17565b90611f62612e2d565b6044359182611fa0575b506040519182526001600160a01b0390811692169060008051602061536083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611fc98286101561399d565b861693848403611fde575b5050505050611f6c565b8386526002835260408620336000528352604060002054600019810361204c575b509260016020969361202a8794604097610de26000805160206153608339815191529c9a15156139e2565b9285525283832055815220612040858254613229565b90559138808581611fd4565b909181106120a2579260016020969361202a8a6000805160206153608339815191529a989561207d8260409a61321c565b8689526002855289892033600052855289600020559497509497995050939650611fff565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033f5760c036600319011261033f576120fc612e17565b60643591906001600160a01b0360843581811692908390036125235760a4356001600160401b038111610a3a57612137903690600401612ed3565b9093600586526020966007885261215560ff60408920541615614350565b61215d61341d565b505061216761426d565b84841691612177308414156143cd565b60048987600a54166040519283809263433e762d60e01b82525afa90811561251857826121af92610720928c916124fb575b50614792565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa938415611ed9578c946124cc575b5083612472575b505061223f61220d602435858a6148c2565b905061221f600e5491600c5495613229565b60405180938192633d9545e960e11b835261014097889560048501614cd6565b0381875afa9283156124675788936040959387938e938493612442575b505061227e9087519d8e978896879563efa84c6d60e01b875260048701614d00565b03925af195861561243757879661240e575b5061229d90871015614d92565b6122a785846146db565b84916000951561239e575b5080855260188752604085206122c9838254613229565b90556122d782601554613229565b601555600c54948460095416803b15610a3557836000916123119883604051809b81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c3157610e9f96610a0d9661237c575b506000805160206153008339815191529083835260278a526040832060295484528a526040832061235b868254613229565b905582156123765780600954165b169180a4601154906145a0565b85612369565b61238791925061303d565b600090600080516020615300833981519152612329565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa9081156118175785916123e1575b5090386122b2565b90508681813d8311612407575b6123f881836130d3565b81010312610a3a5751386123d9565b503d6123ee565b61229d975061242d91965060403d604011610a6d57610a5e81836130d3565b9690969590612290565b6040513d89823e3d90fd5b61227e929350908161245f92903d106117975761178981836130d3565b91903861225c565b6040513d8d823e3d90fd5b803b156124c85783918c9186838c6124a060405197889687958694630208d92960e11b86526004860161487f565b03925af18015612467576124b5575b806121fb565b6124c1909a919a61303d565b98386124af565b8b80fd5b9093508c81813d83116124f4575b6124e481836130d3565b810103126124c8575192386121f4565b503d6124da565b61251291508d803d10611810576117ff81836130d3565b386121a9565b6040513d8b823e3d90fd5b8380fd5b503461033f5761253636612f00565b908395949542116105f4576125bb916105aa9160018060a01b03948a868b16978882526004602052604082209081549161256f83613bc0565b9055604051916020830193600080516020615340833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056e816130b7565b16036105c15761039292613bcf565b503461033f57602036600319011261033f576020906040906001600160a01b036125f2612e17565b168152601883522054604051908152f35b503461033f578060031936011261033f57602060255460801c604051908152f35b503461033f57604036600319011261033f576004356009811015610a265761264a612eb5565b6008549091906001600160a01b031633036127005760ff61266a82612f4f565b541615159115159182146126c657808260ff6126886126b694612f4f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612f4f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033f5761018036600319011261033f576024356001600160a01b038181169291839003610a26576001600160401b039260443584811161252357612787903690600401612ed3565b9094612791612e43565b926127a18560055416331461313a565b60043580612b9b575b5080612b5d575b5081612a01575b5050819293501690816129c1575b5050608435806129a9575b5060a43580612991575b5060c4358061297a575b5060e43580612956575b506101043580612932575b506101243580612901575b50610144358061288d575b50610164358061281e575080f35b601e54811061282d57601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61289c620186a0821115613185565b601f5481116128ae57601e5538612810565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538612805565b612940620186a08210613185565b61294d601b548211613185565b601c55386127fa565b612964620186a08210613185565b612971601c548210613185565b601b55386127ef565b612988620186a08210613185565b601d55386127e5565b6129a0620186a0821115613185565b601a55386127db565b6129b8620186a0821115613185565b601955386127d1565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b0319161760085538806127c6565b8111612b4957612a12601054612f7e565b601f8111612afa575b5083601f8211600114612a815781908596859692612a76575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a18392386127b8565b013590503880612a34565b601085526000805160206153a0833981519152908560205b601f1985168210612ae2575050908495968392600194601f19811610612ac8575b505050811b01601055612a4a565b0135600019600384901b60f8161c19169055388080612aba565b80600184958294958c01358155019401920190612a99565b601085526000805160206153a0833981519152601f830160051c810160208410612b42575b601f90920160051c01905b818110612b375750612a1b565b858155600101612b2a565b5080612b1f565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a1386127b1565b612baa620186a0821115613185565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8980a3602055386127aa565b503461033f57604036600319011261033f5761126e612bf8612e17565b6024359033613c1d565b503461033f57606036600319011261033f57612c1c612e17565b612c24612eb5565b612c2c612ec4565b9060018060a01b03928391612c468360055416331461313a565b15612cd8571690811590811591612cd0575b5015612c9357806005549283166000805160206153208339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612c58565b9150501660018060a01b0319600654161760065580f35b503461033f578060031936011261033f57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612d2c81613081565b51915afa612d38614502565b915015612d9557612d4b6103759161510e565b610f3c6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612d858151809260208686019101612e6d565b81010360148101845201826130d3565b50610375612da16150b7565b612d4b565b503461033f578060031936011261033f576040612dc161341d565b825191151582526020820152f35b905034610a26576040366003190112610a26576040602092612def612e17565b612df7612e2d565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a3557565b602435906001600160a01b0382168203610a3557565b606435906001600160a01b0382168203610a3557565b35906001600160a01b0382168203610a3557565b60005b838110612e805750506000910152565b8181015183820152602001612e70565b90602091612ea981518092818552858086019101612e6d565b601f01601f1916010190565b602435908115158203610a3557565b604435908115158203610a3557565b9181601f84011215610a35578235916001600160401b038311610a355760208381860195010111610a3557565b60e0906003190112610a35576001600160a01b03906004358281168103610a3557916024359081168103610a355790604435906064359060843560ff81168103610a35579060a4359060c43590565b6009811015612f68576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612fae575b6020831014612f9857565b634e487b7160e01b600052602260045260246000fd5b91607f1691612f8d565b60105460009291612fc882612f7e565b9081815260019283811690816000146130225750600114612fe857505050565b9092935060106000526020928360002092846000945b83861061300e5750505050010190565b805485870183015294019385908201612ffe565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161305057604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761305057604052565b604081019081106001600160401b0382111761305057604052565b608081019081106001600160401b0382111761305057604052565b61010081019081106001600160401b0382111761305057604052565b601f909101601f19168101906001600160401b0382119082101761305057604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b03811161305057601f01601f191660200190565b359061ffff82168203610a3557565b1561314157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561318c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156131d857565b634e487b7160e01b600052601160045260246000fd5b81156131f8570490565b634e487b7160e01b600052601260045260246000fd5b604d81116131d857600a0a90565b919082039182116131d857565b919082018092116131d857565b818103929160001380158285131691841216176131d857565b601454919291613292916132899161327f91613275906001600160801b038316906131c5565b9060801c906131ee565b93601f54906131c5565b6107aa8361320e565b808310613354576132a66132dc918461321c565b916132d76107a46132ce601e546132c86132bf8661320e565b60215490613229565b906131c5565b6107aa8461320e565b613236565b6509184e72a000908181029181830514901517156131d857670de0b6b3a7640000918281029281840514901517156131d85780156131f857600160ff1b918083146000198314166131d8570590600082121561334d5781146131d857600003905b808211613348575090565b905090565b509061333d565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561340457916040916133e06133f89594836020865161339c81613081565b82815201526133ba866133ad613cf8565b50505050509390506135d1565b815190936001600160801b03916020916133d6918416906131c5565b92015116906131ee565b8181106133fc57035b95815260186020522054613697565b9091565b5050806133e9565b50509192505080918190565b51908115158203610a3557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061345060248201612fb8565b0381600080955af18015613579578194829161353d575b509284156134e05783156134a657507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506134f360135460125490613229565b42116135035750601154906134a0565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613572575b61355681836130d3565b8101031261033f57602061356985613410565b94015138613467565b503d61354c565b508251903d90823e3d90fd5b1561358c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6135dc821515613585565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561172d57809261365f575b50509061365761364e61365c93620186a060225404906131c5565b601e54906131c5565b6131ee565b90565b9091506020823d821161368f575b8161367a602093836130d3565b8101031261033f57505161365761364e613633565b3d915061366d565b6136a2821515613585565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c315760009161370f575b50906136576136fb92602254906131c5565b620186a061370b601e54836131c5565b0491565b906020823d821161373a575b81613728602093836130d3565b8101031261033f5750516136576136e9565b3d915061371b565b6001600160a01b0316600081815260186020526040812054909261376591613697565b91835260176020526040832054801561386e57811561386e5781811061386e5782811015613864576014546137ae918391610de291613275906001600160801b038316906131c5565b90620186a09283830292808404851490151715613850576137d392916107aa9161321c565b91601b5491601c54936137e68585613236565b80820291848212600160ff1b82141661385057818305149015171561383c57058184820194851291129080158216911516176138285750808212613348575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613974575b156138cf577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176130505760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138a6565b156139a457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156139e957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a3557565b519060ff82168203610a3557565b6005811015612f685780613a5a5750565b60018103613aa25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613aef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613af857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613bb45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117605781516001600160a01b03811615613bae579190565b50600190565b50505050600090600390565b60001981146131d85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613c8182613066565b60006040838281528260208201520152565b60405190613ca082613081565b6014546001600160801b038116835260801c6020830152565b60405190613cc682613081565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116131d857565b613d00613c74565b5060006020604051613d1181613081565b828152015260006020604051613d2681613081565b8281520152604051613d3781613066565b6024546001600160401b038082168352604082811c909116602084015260809190911c90820152908190613d69613c93565b91613d72613cb9565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015610c31576000906141ab575b8851613ddd92506001600160801b031690613229565b94856141765760005b60208501518190613e00906001600160401b03164261321c565b95861561414b575050426001600160401b031660208b8101919091528901516001600160801b031615614101575087518951602091613eb491670de0b6b3a764000091613e6a918991613e65916001600160401b0316906001600160801b03166131c5565b6131c5565b8b5191900498906001600160801b0390613e8990828c16908316613cdf565b168b52613657620186a0613e9f601a548c6131c5565b858e01516001600160801b03169190046131c5565b60408b0180519197916001600160801b03808a169291613ed79084908316613cdf565b169052898301805190916001600160801b0391613ef691908316613cdf565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c31576000906140cd575b8851613f5392506001600160801b031690613229565b8061409757506000925b602b548481811015613ff757613f73908261321c565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156131d857613fd991613fa1916131ee565b91613657613fc6613fc0602f5493613e6560018060401b0397806131c5565b83613229565b8c519092906001600160401b03166131c5565b16808952602e546001600160401b0316908111613ff35750565b8852565b9050602c5480821161400857505050565b6140119161321c565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156131d85761365761405a613fc061404c61406a95602d54906131ee565b93613e65602f5495806131c5565b8b516001600160401b03166131c5565b602e5460401c6001600160401b031680821161408f575b506001600160401b03168852565b905038614081565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156131d8576140c7916131ee565b92613f5d565b506020813d6020116140f9575b816140e7602093836130d3565b81010312610a3557613f539051613f3d565b3d91506140da565b8951603054999a91999498509296509450506001600160401b0391821692501681900361413f575b509392614134613cb9565b926000926000929190565b81526001925038614129565b98509950505095505050505091614160613c93565b91614169613cb9565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156131d857866141a6916131ee565b613de6565b506020813d6020116141d7575b816141c5602093836130d3565b81010312610a3557613ddd9051613dc7565b3d91506141b8565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b602580546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b602580546001600160801b0319166001600160801b0392909216919091179055565b61432460208061431061427e613cf8565b93969593909290156143265750505060018060401b036030541660008060008051602061538083398151915288604051838152a45b805185820151604092830151921b600160401b600160801b03166001600160401b03919091161760809190911b6001600160801b0319161760245580516001600160801b039586929091614308908416614229565b0151166141df565b61431c8382511661424b565b015116614204565b565b83516040519384526001600160401b031692600080516020615380833981519152908990a46142b3565b1561435757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561439457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143d457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a355790565b1561442e57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a35576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a35570160208101919035906001600160401b038211610a35578136038313610a3557565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561452d573d9061451382613110565b9161452160405193846130d3565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261455581613081565b51916001600160a01b03165afa61456a614502565b9080614595575b1561458f57602081805181010312610a3557602061365c9101613a3b565b50601290565b506020815114614571565b919060018060a01b0380600094168452602060178152604085205490811561468e57601881526040862054801561468757816145da613c93565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561172d578097614651575b50506133d661463661364e61464c969798620186a060225404906131c5565b95613e6560018060801b039485875116906131c5565b111590565b9096508187813d8311614680575b61466981836130d3565b8101031261033f57509451946133d6614636614617565b503d61465f565b5050505050565b5060019450505050565b91821580156146d3575b61335457600181018091116131d8576146c1926132c86136579261320e565b600581018091116131d857600a900490565b5081156146a2565b6001600160a01b03163381036146ef575050565b60008181526020906003825260409182822033835281528483832054106147585783825260038152828220338352815282822054600101614731575050505050565b61474c9382526003815282822090338352522091825461321c565b90553880808080614687565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c31578493600091614841575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c315760009161480d575b50905090565b82813d831161483a575b61482181836130d3565b8101031261033f575061483390613410565b8038614807565b503d614817565b9091929381813d8311614878575b61485981836130d3565b81010312610a26575190828216820361033f57508392919060446147cd565b503d61484f565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b0391821690821603919082116131d857565b929060208093620186a06148d78354836131c5565b04926148e1613c93565b966148ec8584613229565b60409586516148fa81613081565b6000808252960186905289516001600160801b0392908316614b8157826149288c8280855b16915116613cdf565b168b526149578a8c018461494181851682845116613cdf565b1680915261495285849e5116614229565b6141df565b6016548015908115614b72575b5015614b3457859060018060a01b0380951680895260178c5289892061498b838254613229565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b13575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b09578594614ada575b508397614a0d613cb9565b818101916103e88484511610614aa6575090614a40839283614a37614a47968a16828451166148a9565b1680915261424b565b5116614204565b6009541690600e5490823b15610a3a579184939184879694614a7f985198899586948593630208d92960e11b8552306004860161487f565b03925af1918215614a9c575050614a935750565b6143249061303d565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b02575b614af281836130d3565b81010312610a3a57519238614a02565b503d614ae8565b86513d87823e3d90fd5b82600a5416865260018952614b2c878720918254613229565b9055386149c4565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614964565b828b8b81019280614bb4614ba5614b9b86885116846131c5565b86865116906131ee565b95856116ea81875116896131c5565b10614bc6575b9082806149289361491f565b92908280614bd661492894613bc0565b959293505050614bba565b90816020910312610a35575161ffff81168103610a355790565b809103906101408212610a35576040805192614c1684613066565b60808112610a35578151614c298161309c565b614c3284613a27565b815260208401516020820152614c49838501613a27565b838201526060840151606082015284526080607f19820112610a355781908151614c728161309c565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a3557614ccb610120825193614cb685613081565b614cc36101008201613410565b855201613410565b602083015282015290565b60a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b919261365c959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144e1565b15614d9957565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614df1575090925050565b90816116ea81614e14614e0a614e1d96865116886131c5565b828a5116906131ee565b975116876131c5565b10614e2457565b9061365c90613bc0565b92919060009160018060a01b0394858316845260206017815260408520548084116150af575b50821561507357614e63613c93565b968582604051614e7281613081565b8281520152614e818489614dd0565b9560018060801b039384614e9a818a16828d51166148a9565b168a52614ec4848b0186614eb3818a16828451166148a9565b16809152614952878b9d5116614229565b82871682526017845260408220614edc87825461321c565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611817578592615044575b5080602554169492803b15610a355782600091614f549a83604051809d81958294630208d92960e11b8452308d6004860161487f565b03925af1948515610c31577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661502e575b50614f969082841690613cdf565b1660018060801b031960255416176025558383169081835260278752604083206028549081855288526040842054821160001461500757505081526027855260408120602854825285528060408120555b1561500157508060095416955b60405195865216941692a4565b95614ff4565b90918352602787526040832090835286526150276040832091825461321c565b9055614fe7565b61503991945061303d565b600092614f96614f88565b9091508681813d831161506c575b61505c81836130d3565b81010312610a3a57519038614f1e565b503d615052565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e54565b604051906150c482613081565b60038252623f3f3f60e81b6020830152565b9081518110156150e7570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146131d85760010190565b80516040811061518657508051810190602081818401930312610a35576020810151906001600160401b038211610a35570181603f82011215610a3557602081015161515981613110565b9261516760405194856130d3565b81845260408284010111610a355761365c916040602085019101612e6d565b602092908303615274576000805b60ff81168581109081615255575b50156151b6576151b1906150fd565b615194565b9260ff809416926151c684613110565b936151d460405195866130d3565b8085526151e3601f1991613110565b013687860137825b85811687811080615238575b1561522d5761522891906152226001600160f81b031961521783886150d6565b5116871a91886150d6565b536150fd565b6151eb565b505094505050905090565b506001600160f81b031961524c82866150d6565b511615156151f7565b6001600160f81b0319915061526a90866150d6565b51161515386151a2565b91505061365c6150b756fe45524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e617475726500009cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212207856c00f36871d3751eaea70a034e9d1cefb0b7e0c2d026f3891495b2315554464736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556154339283620002078439608051836139fe015260a05183613ac9015260c051836139c8015260e05183613a4d01525182613a7301525181613a2a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201e7baeb51d167f3c84cae7731ceaa035d017da0afd2b45d9d315b493b5f2515064736f6c63430008120033"; type SGLLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts index cbfd3a42..aa8ac48a 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts @@ -1156,19 +1156,14 @@ const _abi = [ type: "uint256[]", }, { - internalType: "bytes[]", - name: "collateralToAssetSwapDatas", - type: "bytes[]", - }, - { - internalType: "bytes", - name: "usdoToBorrowedSwapData", - type: "bytes", + internalType: "contract IMarketLiquidatorReceiver[]", + name: "liquidatorReceivers", + type: "address[]", }, { - internalType: "contract ISwapper", - name: "swapper", - type: "address", + internalType: "bytes[]", + name: "liquidatorReceiverDatas", + type: "bytes[]", }, ], name: "liquidate", @@ -1189,13 +1184,13 @@ const _abi = [ type: "address", }, { - internalType: "contract ISwapper", - name: "swapper", + internalType: "contract IMarketLiquidatorReceiver", + name: "liquidatorReceiver", type: "address", }, { internalType: "bytes", - name: "collateralToAssetSwapData", + name: "liquidatorReceiverData", type: "bytes", }, ], @@ -1243,19 +1238,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1941,7 +1923,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556155bc928362000207843960805183612c32015260a05183612cfc015260c05183612bfc015260e05183612c8101525182612ca701525181612c5e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe60c060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121995750826302ce728f1461203157826306fdde0314611f79578263078dfbe714611e82578263095ea7b314611e575782630996efb7146119b65782630c4e84f01461189f57826318160ddd1461187c5782631c9e379b146118435782631da8bf101461179b57826323b872dd146115fd57848363313ce5671461156257508263331960ff1461154257826334d441d0146115225782633644e5151461150457826337b6b7b9146114e457826338d52e0f146114ba5782633ba0b9a91461149a5782633f741adb1461147157826340626d8b1461145157826344de240a14611431578263473e3ce71461141157826348e4163e146113d85782634d7f2a34146113b85782634e71e0c814611315578263529898f2146112f557826352f353eb146112cb57826355140232146112a157826355c2ab941461127757826357935462146112575782635dfe04e8146111f75782636c3d8b8f146111cd57826370a0823114611194578263727785471461115c57826374645ff31461112f5782637dc0d1d0146111055782637ecebe00146110ce5782637fa0b84e1461109c578263821226e81461107c5782638285ef40146110485782638c5d0ed3146110285782638da5cb5b14610ffe578263910dd7c814610df7578263959916dc14610dd857826395d89b4114610d1f57826399a9702814610cee5782639c5d719214610cce5782639e15e89f14610c95578263a28e6b82146108bb578263a9059cbb146107df578263b0e21e8a146107bf578263b27c0e7414610784578263bb4cfe3b14610764578263c23ea21f1461073a578263ce8849ed14610710578263cfba1b4614610612578263d505accf146104c25750508063d8dfeb451461049a578063dd62ed3e14610452578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e4578063ea64dd56146103c6578063eec0f42e146103a8578063f42760b71461038a578063f8ba4cff1461036b578063f9557ccb146103355763ffe04c661461031457600080fd5b34610331578160031936011261033157602090602b549051908152f35b5080fd5b5034610331578160031936011261033157602554905190819061036790608081901c906001600160801b03168361248a565b0390f35b82346103875780600319360112610387576103846135b8565b80f35b80fd5b5034610331578160031936011261033157602090602c549051908152f35b5034610331578160031936011261033157602090600c549051908152f35b5034610331578160031936011261033157602090601f549051908152f35b503461033157816003193601126103315760065490516001600160a01b039091168152602090f35b5034610331578160031936011261033157602090601d549051908152f35b503461033157816003193601126103315760095490516001600160a01b039091168152602090f35b50346103315780600319360112610331578060209261046f6121df565b6104776121fa565b6001600160a01b0391821683526002865283832091168252845220549051908152f35b5034610331578160031936011261033157600b5490516001600160a01b039091168152602090f35b8492503461060e576104d336612294565b9397949690928042116105dd5793869361059a938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361051585612f52565b905588519660208801986000805160206154c78339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b519020610563612bf9565b915190602082019261190160f01b8452602283015260428201526042815261058a81612430565b519020612ecd565b919091612dce565b16036105ac5750610384939450612faf565b606490602087519162461bcd60e51b8352820152601e60248201526000805160206154878339815191526044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201526000805160206154678339815191526044820152606490fd5b8280fd5b838583346103315760a0366003190112610331576001600160401b03813581811161070c57610644903690840161250c565b916024358181116107085761065c903690860161250c565b60449291923582811161070457610676903690880161250c565b939092606435908111610700576106909036908901612267565b6084359890979196906001600160a01b038a168a036106fc57808b52600760205260ff8c8c2054166106c85750610384999a506138a6565b60649060208d519162461bcd60e51b8352820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152fd5b8a80fd5b8880fd5b8780fd5b8580fd5b8380fd5b5050503461033157816003193601126103315760085490516001600160a01b039091168152602090f35b5050503461033157816003193601126103315760265490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601e549051908152f35b505050346103315781600319360112610331576060906024549080519160018060401b03808216845281831c16602084015260801c90820152f35b50505034610331578160031936011261033157602090601a549051908152f35b505050346103315780600319360112610331576020916107fd6121df565b826024359283158015906108a9575b61083c575b50519182526001600160a01b0316903390600080516020615527833981519152908590a35160018152f35b338152600186528181205461085385821015612d22565b6001600160a01b038416908533839003610870575b505050610811565b6108849161087f841515612d67565b61261e565b338352600188528383205581522061089d83825461262b565b90558238808085610868565b50336001600160a01b0384161461080c565b83858334610331576080366003190112610331576108d76121df565b906108e06121fa565b6001600160a01b0392604435848116939190849003610708576064356001600160401b038111610c91576109179036908401612267565b9190926109298760055416331461253c565b86600f541691895163d6d7d52560e01b81528a816020958686830152818d816109546024820161234c565b03925af1908115610c41578a908b92610c61575b508181610c57575b5015610c4b5780610986916011555b1515613683565b61098e6135b8565b818389600a54168c519283809263433e762d60e01b82525afa908115610c41576109c6898b94936109cb938e91610c14575b50613750565b6136f4565b169687895260178352826109f38b8b2054620186a06109ec602154836125c7565b049061262b565b9160095416916064610a17610a0e600c5493601154906125c7565b602254906125f0565b918d519485938492638eb22cdd60e01b84528884015260248301528d60448301525afa908115610c0a578991610bdd575b50878952601883528989205411610b9d575090868098610b4a9493886103849a52601881528183205498610aef610a7d613025565b82865260178452610aea610adf868820549288878951610a9c81612402565b82815201528681019360018060801b03928382818094868a8381511615600014610b5057505081610ad2915b1682885116613737565b1685521682875116613737565b168094525116613596565b613571565b8084526017825283838120556027825282842060285485528252838381205580845260188252610b248385205460155461261e565b6015558352601881528282812055602781528183209060295484525281205536916124bf565b92614b82565b610ad292610b89610b7f86610b76610b6c8280985116866125c7565b82875116906125f0565b945116846125c7565b848c5116906125f0565b1015610ac857610b9890612f52565b610ac8565b816064928a519262461bcd60e51b845283015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508281813d8311610c03575b610bf48183612467565b8101031261070057518a610a48565b503d610bea565b8a513d8b823e3d90fd5b610c349150883d8a11610c3a575b610c2c8183612467565b8101906136da565b8f6109c0565b503d610c22565b8b513d8c823e3d90fd5b5061098660115461097f565b905015158c610970565b9050610c8391508b3d8d11610c8a575b610c7b8183612467565b8101906129cf565b908c610968565b503d610c71565b8680fd5b5050503461033157806003193601126103315761036790610cc0610cb76121df565b60243590612867565b9093919251938493846124f6565b50505034610331578160031936011261033157602090602d549051908152f35b50505034610331578060031936011261033157602090610d18610d0f6121df565b60243590612aef565b9051908152f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916395d89b4160e01b83528152610d6181612402565b51915afa610d6d615264565b915015610dc957610d7d906152d5565b905b610db760238251809462746d2d60e81b6020830152610da78151809260208686019101612210565b8101036003810185520183612467565b51918291602083526020830190612233565b50610dd2615294565b90610d7f565b5050503461033157816003193601126103315760209081549051908152f35b9291503461070c578160031936011261070c5780356001600160401b038111610ffa5736602382011215610ffa57610e3890369060248185013591016124bf565b926024359161ffff831680930361070857610100938486805181010312610c9157602090610e678288016129c2565b93610e73828901612dac565b90610e8060608a01612dac565b9860808101519860a082015192610e9960c08401612dc0565b91818401519301519360018060a01b03808097169d169a814211610fc957928d8f819897948f948f8f968f918f959a8f8c8195610f639f9c6105929f50600014610fb4576000805160206154c78339815191529a5b825289522093845494610f0086612f52565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f318161244b565b519020610f3c612bf9565b908951908b82019261190160f01b8452602283015260428201526042815261058a81612430565b1603610f8557505050600014610f7c5761038492612faf565b61038492612f61565b5162461bcd60e51b815291820152601e6024820152600080516020615487833981519152604482015260649150fd5b6000805160206155078339815191529a610eee565b875162461bcd60e51b8152808b018a9052601d60248201526000805160206154678339815191526044820152606490fd5b8480fd5b5050503461033157816003193601126103315760055490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157602090601b549051908152f35b50505034610331578160031936011261033157601454905190819061036790608081901c906001600160801b03168361248a565b50505034610331578160031936011261033157602090602f549051908152f35b505050346103315780600319360112610331576020906110c76110bd6121df565b6024359033612f61565b5160018152f35b5090503461060e57602036600319011261060e5760209282916001600160a01b036110f76121df565b168252845220549051908152f35b50505034610331578160031936011261033157600f5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157805161036791610db7826111558161234c565b0383612467565b5090503461060e57602036600319011261060e5735916009831015610387575060ff6111896020936122e3565b541690519015158152f35b505050346103315760203660031901126103315760209181906001600160a01b036111bd6121df565b1681526001845220549051908152f35b50505034610331578160031936011261033157600a5490516001600160a01b039091168152602090f35b50505034610331578160031936011261033157608090611215613006565b5061121e61308a565b509495935050505080519260018060401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610331578160031936011261033157602090601c549051908152f35b50505034610331578160031936011261033157602e548151911c6001600160401b03168152602090f35b50505034610331578160031936011261033157602e5490516001600160401b039091168152602090f35b5050503461033157816003193601126103315760305490516001600160401b039091168152602090f35b505050346103315781600319360112610331576020906021549051908152f35b8482853461060e578260031936011261060e576006546001600160a01b03929091838316919033839003611375575050806005549384166000805160206154e78339815191528680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50505034610331578160031936011261033157602090602a549051908152f35b505050346103315760203660031901126103315760209181906001600160a01b036114016121df565b1681526017845220549051908152f35b505050346103315781600319360112610331576020906015549051908152f35b50505034610331578160031936011261033157602090600e549051908152f35b505050346103315781600319360112610331576020906016549051908152f35b508284346103875760603660031901126103875750610d186020926044359060243590356127a0565b505050346103315781600319360112610331576020906011549051908152f35b50505034610331578160031936011261033157600d5490516001600160a01b039091168152602090f35b505050346103315781600319360112610331576020906012549051908152f35b50505034610331578160031936011261033157602090610d18612bf9565b505050346103315781600319360112610331576020906019549051908152f35b505050346103315781600319360112610331576020906013549051908152f35b92505034610331578160031936011261033157600d54835163313ce56760e01b6020820190815292815283926001600160a01b0390921691906115a481612402565b51915afa916115b1615264565b92806115f2575b156115e357602083805181010312610387575060ff6115da6020809401612dc0565b915b5191168152f35b506020915060ff6012916115dc565b5060208351146115b8565b50828434610387576060366003190112610387576116196121df565b906116226121fa565b604435918261165e575b508351918252602094506001600160a01b03908116921690600080516020615527833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061168987831015612d22565b851692838a0361169d575b5050505061162c565b898552600283528885203386528352888520549060018201611707575b5050928260209960018a946116e68a8e9961087f6000805160206155278339815191529c9a1515612d67565b92855252838320558152206116fc85825461262b565b905591878080611694565b87821061175d57509260209960018a946116e68a8e9996611738826000805160206155278339815191529d9b61261e565b86895260028552898920338a52855289892055969950505094505099819496506116ba565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461060e576117ac36612294565b9397949690928042116105dd57938693611831938c8c89610592968e9a8e60018060a01b03809c169c8d948587526020528c878720928354936117ee85612f52565b905588519660208801986000805160206155078339815191528a528a890152606088015216608086015260a085015260c08401528183015281526105588161244b565b16036105ac5750610384939450612f61565b505050346103315760203660031901126103315760209181906001600160a01b0361186c6121df565b1681526018845220549051908152f35b5050503461033157816003193601126103315760209060255460801c9051908152f35b5090503461060e578160031936011261060e57803590600982101561070c576118c6612258565b6008549093906001600160a01b0316330361197c5760ff6118e6846122e3565b54161515931515938414611944575050808260ff611906611934946122e3565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122e3565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461060e5761018036600319011261060e576024356001600160a01b0381811691829003610ffa576001600160401b03604435818111610c9157611a009036908601612267565b916064359484861680960361070057611a1e8560055416331461253c565b863580611e17575b5080611dd9575b5082611c7b575b50505081611c3b575b505060843580611c23575b5060a43580611c0b575b5060c43580611bf4575b5060e43580611bd0575b506101043580611bac575b506101243580611b7b575b506101443580611b09575b50610164359182611a96578380f35b601e548310611aab575050601f553880808380f35b906020608492519162461bcd60e51b8352820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611b18620186a0821115612587565b601f548111611b2a57601e5538611a87565b506020608492519162461bcd60e51b8352820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a360165538611a7c565b611bba620186a08210612587565b611bc7601b548211612587565b601c5538611a71565b611bde620186a08210612587565b611beb601c548210612587565b601b5538611a66565b611c02620186a08210612587565b601d5538611a5c565b611c1a620186a0821115612587565b601a5538611a52565b611c32620186a0821115612587565b60195538611a48565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880611a3d565b8211611dc6578190611c8e601054612312565b601f8111611d6f575b508790601f8311600114611cf9578892611cee575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158580a1388080611a34565b013590503880611cac565b60108952600080516020615567833981519152925090601f1984168960205b828210611d57575050908460019594939210611d3d575b505050811b01601055611cc2565b0135600019600384901b60f8161c19169055388080611d2f565b80600185978294968801358155019601930190611d18565b60108952909150600080516020615567833981519152601f840160051c810160208510611dbf575b90601f8594930160051c01905b818110611db15750611c97565b898155849350600101611da4565b5080611d97565b634e487b7160e01b875260418552602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611a2d565b611e26620186a0821115612587565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a360205538611a26565b505050346103315780600319360112610331576020906110c7611e786121df565b6024359033612faf565b8482853461060e57606036600319011261060e57611e9e6121df565b91611ea7612258565b916044359283151584036107085760018060a01b03948591611ece8360055416331461253c565b15611f60571692831590811591611f58575b5015611f1d575050806005549283166000805160206154e78339815191528580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ee0565b93505050501660018060a01b0319600654161760065580f35b5090503461060e578260031936011261060e579180806103679460018060a01b03600b541690855160208101916306fdde0360e01b83528152611fbb81612402565b51915afa611fc7615264565b91501561202257611fd7906152d5565b905b610db760348251809473546170696f63612053696e67756c61726974792d60601b60208301526120128151809260208686019101612210565b8101036014810185520183612467565b5061202b615294565b90611fd9565b83858334610331578160031936011261033157600f54835163d6d7d52560e01b81526020838201529290849084906001600160a01b03168184816120776024820161234c565b03925af1801561218d578193829161216a575b5091831561210f5782156120d557507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c882918260115580a25b42601355825191151582526020820152f35b606490602086519162461bcd60e51b835282015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9150506121216013546012549061262b565b421161213057506011546120c3565b606490602084519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9050612184919350843d8611610c8a57610c7b8183612467565b9290928561208a565b508351903d90823e3d90fd5b8590853461060e578060031936011261060e576020926121b76121df565b6121bf6121fa565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036121f557565b600080fd5b602435906001600160a01b03821682036121f557565b60005b8381106122235750506000910152565b8181015183820152602001612213565b9060209161224c81518092818552858086019101612210565b601f01601f1916010190565b6024359081151582036121f557565b9181601f840112156121f5578235916001600160401b0383116121f557602083818601950101116121f557565b60e09060031901126121f5576001600160a01b039060043582811681036121f5579160243590811681036121f55790604435906064359060843560ff811681036121f5579060a4359060c43590565b60098110156122fc576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612342575b602083101461232c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612321565b6010546000929161235c82612312565b9081815260019283811690816000146123b6575060011461237c57505050565b9092935060106000526020928360002092846000945b8386106123a25750505050010190565b805485870183015294019385908201612392565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176123ec57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123ec57604052565b6001600160401b0381116123ec57604052565b608081019081106001600160401b038211176123ec57604052565b61010081019081106001600160401b038211176123ec57604052565b601f909101601f19168101906001600160401b038211908210176123ec57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b0381116123ec57601f01601f191660200190565b9291926124cb826124a4565b916124d96040519384612467565b8294818452818301116121f5578281602093846000960137010152565b6040919493926060820195825260208201520152565b9181601f840112156121f5578235916001600160401b0383116121f5576020808501948460051b0101116121f557565b1561254357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561258e57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156125da57565b634e487b7160e01b600052601160045260246000fd5b81156125fa570490565b634e487b7160e01b600052601260045260246000fd5b604d81116125da57600a0a90565b919082039182116125da57565b919082018092116125da57565b818103929160001380158285131691841216176125da57565b906509184e72a000918281029281840514901517156125da57565b90670de0b6b3a7640000918281029281840514901517156125da57565b81156125fa57600160ff1b81146000198314166125da570590565b6014546126df916126ce91906126c4906001600160801b038316906125c7565b9060801c906125f0565b91620186a0918291601f54906125c7565b04808310612798576126f1908361261e565b601e546021548301908184116125da57839161270c916125c7565b0491828103906000809412818312811691831390151617612784579061273d61273761274293612651565b9161266c565b612689565b908082121561277d57600160ff1b82146127695703905b808211612764575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090612759565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916127df916127d0916127c6916126c4906001600160801b038316906125c7565b93601f54906125c7565b6127d983612610565b906125f0565b908183106127985761273d6127376128396127fd61283e958761261e565b9361283461282e612825601e5461281f61281686612610565b6021549061262b565b906125c7565b6127d984612610565b91612610565b612638565b612651565b600081121561286157600160ff1b81146125da5760000390808211612764575090565b90612759565b9160018060a01b0380931691600093838552602060178152604091828720549081156129b5578783855161289a81612402565b82815201526128a761308a565b50505050509190506128ba8615156129ec565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156129ab57899161297c575b509161295c612970979899949261293788612932612929601898620186a060225404906125c7565b601e54906125c7565b6125f0565b815190936001600160801b03918691612952918416906125c7565b92015116906125f0565b81811061297457035b978352522054612a38565b9091565b505082612965565b90508381813d83116129a4575b6129938183612467565b81010312610700575161295c612901565b503d612989565b85513d8b823e3d90fd5b5086955085949350505050565b519081151582036121f557565b91908260409103126121f55760206129e6836129c2565b92015190565b156129f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612a438215156129ec565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612ae357600091612ab0575b5090612932612a9c92602254906125c7565b620186a0612aac601e54836125c7565b0491565b906020823d8211612adb575b81612ac960209383612467565b81010312610387575051612932612a8a565b3d9150612abc565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612b1291612a38565b918352601760205260408320548015612bf3578115612bf357818110612bf35782811015612be957601454612b5b91839161087f916126c4906001600160801b038316906125c7565b90620186a09283830292808404851490151715612bd557612b8092916127d99161261e565b91601b5491601c5493612b938585612638565b80820291848212600160ff1b821416612bd557818305149015171561278457058184820194851291129080158216911516176127695750808212612764575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cf9575b15612c54577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b038211176123ec5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2b565b15612d2957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d6e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036121f557565b519060ff821682036121f557565b60058110156122fc5780612ddf5750565b60018103612e275760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e745760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e7d57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f395781516001600160a01b03811615612f33579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146125da5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613013826123d1565b60006040838281528260208201520152565b6040519061303282612402565b6014546001600160801b038116835260801c6020830152565b6040519061305882612402565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116125da57565b613092613006565b50600060206040516130a381612402565b8281520152600060206040516130b881612402565b82815201526040516130c9816123d1565b6024546001600160401b038082168352604082811c909116602084015260809190911c908201529081906130fb613025565b9161310461304b565b9160009160018060a01b036009541692600e549260018060801b038651166040519063442c159960e01b8252856004830152602482015260006044820152602081606481895afa8015612ae35760009061353d575b885161316f92506001600160801b03169061262b565b94856135085760005b60208501518190613192906001600160401b03164261261e565b9586156134dd575050426001600160401b031660208b8101919091528901516001600160801b03161561349357508751895160209161324691670de0b6b3a7640000916131fc9189916131f7916001600160401b0316906001600160801b03166125c7565b6125c7565b8b5191900498906001600160801b039061321b90828c16908316613071565b168b52612932620186a0613231601a548c6125c7565b858e01516001600160801b03169190046125c7565b60408b0180519197916001600160801b03808a1692916132699084908316613071565b169052898301805190916001600160801b039161328891908316613071565b169052885160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612ae35760009061345f575b88516132e592506001600160801b03169061262b565b8061342957506000925b602b54848181101561338957613305908261261e565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156125da5761336b91613333916125f0565b91612932613358613352602f54936131f760018060401b0397806125c7565b8361262b565b8c519092906001600160401b03166125c7565b16808952602e546001600160401b03169081116133855750565b8852565b9050602c5480821161339a57505050565b6133a39161261e565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156125da576129326133ec6133526133de6133fc95602d54906125f0565b936131f7602f5495806125c7565b8b516001600160401b03166125c7565b602e5460401c6001600160401b0316808211613421575b506001600160401b03168852565b905038613413565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156125da57613459916125f0565b926132ef565b506020813d60201161348b575b8161347960209383612467565b810103126121f5576132e590516132cf565b3d915061346c565b8951603054999a91999498509296509450506001600160401b039182169250168190036134d1575b5093926134c661304b565b926000926000929190565b815260019250386134bb565b985099505050955050505050916134f2613025565b916134fb61304b565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810291808304909114901517156125da5786613538916125f0565b613178565b506020813d602011613569575b8161355760209383612467565b810103126121f55761316f9051613159565b3d915061354a565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b601480546001600160801b0319166001600160801b0392909216919091179055565b61364e60406020806135c861308a565b939995939092901561365e57505050600180871b0360305416600080600080516020615547833981519152878a51838152a45b600180871b03815116848201519160018060801b0319978891015160801b1691600160401b600160801b039060401b16171760245560018060801b0392816136468580945116613596565b015116613571565b83511692015160801b1617602555565b600080516020615547833981519152876001808c1b03865116948b51908152a46135fb565b1561368a57565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b908160209103126121f5575161ffff811681036121f55790565b156136fb57565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b6001600160801b0391821690821603919082116125da57565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612ae35784936000916137ff575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612ae3576000916137cb575b50905090565b82813d83116137f8575b6137df8183612467565b8101031261038757506137f1906129c2565b80386137c5565b503d6137d5565b9091929381813d8311613836575b6138178183612467565b810103126103315751908282168203610387575083929190604461378b565b503d61380d565b1561384457565b60405162461bcd60e51b81526020600482015260146024820152730a68e987440d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606490fd5b91908110156138905760051b0190565b634e487b7160e01b600052603260045260246000fd5b9695949397909760805260a0526138be82881461383d565b6000938715614ae657600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168189816138fb6024820161234c565b03925af19687156147865786908798614ac2575b508781614ab8575b5015614aae57866011555b61392d871515613683565b6139356135b8565b6026546001600160a01b031680614333575b50505061395582881461383d565b61396083881461383d565b8396845b8181106139b55750505050505050501561397a57565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6139c86139c382848b613880565b614fa6565b6139d28882614ff5565b156139e7575b506139e290612f52565b613964565b986139f190612f52565b986139fd828686613880565b35908683101561431f5760805191601e19833603018460051b8401351215610700576001600160401b03600585901b8401358401351161070057600584901b83013583018035360360209091011361070057613a598a83612aef565b90613a658b1515615102565b600954600c546001600160a01b038581168d52601860209081526040808f2054905163442c159960e01b815260048101949094526024840152604483018e9052919283916064918391165afa908115614314578c908c926142de575b50612932613ad292602254906125c7565b6001600160a01b0384168b52601760205260408b2054613af39082906126a4565b601d54806142c6575b5080911115614291578a91818111156142895750925b6001600160a01b038116825260176020526040822054808511614281575b84613b3a9161261e565b6001600160a01b038216835260176020526040832055613b58613025565b60208101516001600160801b031661424c5750835b60208d6064613b8c620186a0613b856021548b6125c7565b048961262b565b613ba7610a0e60018060a01b036009541694600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa9283156141cc578c93614218575b506001600160a01b0382168c52601860205260408c205483116141d7576001600160a01b0382168c52601860205260408c208054613c1890859061261e565b9055613c25851515614fba565b601454908c6001600160801b03613c40888216828616613737565b16916001600160801b031990613c66906001600160801b0316858316851760801c613737565b60801b169216171760145560018060a01b0360095416946020600e54606460405180998193638eb22cdd60e01b83526004830152896024830152600160448301525afa9586156141cc578c96614198575b50600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa90811561418d5791613d0f6109c68f93613dfd95613dea959161416e575b5060a0516001600160a01b031690613750565b8d60159086825481811160001461416657613d2a925061261e565b905b558d60018060a01b03851690528d60279081602052604081206029908154908184526020526040832054891160001461413557506001600160a01b0387168252602083815260408084209254845291905281208190555b6001600160a01b0386168152602082815260408083206028805480865291909352908320549193918c1115614106575060018060a01b038716825260205260408120915490526020528d60408120555b8860051b01356080510136906020813591016124bf565b60a0516001600160a01b03163085614b82565b60018060a01b036009541692600e5495604051627eeac760e11b815260208180613e2b8b3060048401614b51565b0381895afa90811561403f57908e9182916140ce575b50620186a091613e5f613e7b9260018060801b03602554169061261e565b93808511156140c757613e7391508461261e565b935b846125c7565b04968791613e89838561261e565b96879283614050575b505082613fc1575b90613ee99361087f92613eb88561087f8560018060801b039461261e565b602554916001600160801b0391613ed29116828416613071565b6001600160801b031990921691161760255561261e565b6040518c81523090600080516020615447833981519152602060018060a01b0360a0511692a460405190613f1c82612402565b6001825260203681840137815115613fad576001600160a01b03166020820190815260405191518291908d905b808210613f8b5750505091816000805160206154a7833981519152926139e2989796959403902093613f826040519283923396846124f6565b0390a4906139d8565b82516001600160a01b0316845260209384019390920191600190910190613f49565b634e487b7160e01b8c52603260045260248cfd5b600954600e549193506001600160a01b03169150813b1561404c57888f91926140039383604051809681958294630208d92960e11b8452333060048601614b27565b03925af1801561403f57918e87928a9461401f575b5050613e9a565b90925061402d91935061241d565b61403b578487918e38614018565b8c80fd5b8e604051903d90823e3d90fd5b8e80fd5b600a54929450909250906001600160a01b0316823b156140c3578f919261409293838a9360405196879586948593630208d92960e11b85523060048601614b27565b03925af1801561403f57918e87928a9415613e92579092506140b591935061241d565b61403b578487918e38613e92565b8f80fd5b5093613e75565b9150506020813d6020116140fe575b816140ea60209383612467565b810103126121f557518d90620186a0613e41565b3d91506140dd565b906040935060018060a01b03881683526020528282209082526020522061412e89825461261e565b9055613dd3565b905060018060a01b038716825282602052604082209082526020526040812061415f88825461261e565b9055613d83565b505090613d2c565b614187915060203d602011610c3a57610c2c8183612467565b38613cfc565b6040513d8f823e3d90fd5b9095506020813d6020116141c4575b816141b460209383612467565b810103126121f557519438613cb7565b3d91506141a7565b6040513d8e823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9092506020813d602011614244575b8161423460209383612467565b810103126121f557519138613bd9565b3d9150614227565b805161427b9190614266906001600160801b0316876125c7565b6020909101516001600160801b0316906125f0565b93613b6d565b935083613b30565b905092613b12565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90620186a06109ec6142d893836125c7565b38613afc565b9150506020813d60201161430c575b816142fa60209383612467565b810103126121f557518b612932613ac1565b3d91506142ed565b6040513d8d823e3d90fd5b634e487b7160e01b88526032600452602488fd5b606060049160405192838092637c8be05b60e01b82525afa9081156147da5787908892614a6b575b5015613947578690875b868110614a46575010156143795780613947565b95979496949561438e945036935091506124bf565b9383908490859061439d613025565b90875b87811061481957505090610aea61440c926143bc851515614fba565b80516001600160801b03906143d690878316908316613737565b16815260208101805190936001600160801b03916143f8918316908316613737565b1692839052516001600160801b0316613596565b6144188260155461261e565b601555600954600e54604051638eb22cdd60e01b81526004810191909152602481018390526001604482015296906001600160a01b0316602088606481845afa9788156147da5787986147e5575b50602654600c54906001600160a01b0316823b15610700576144a592899283889360405196879586948593630208d92960e11b85523060048601614b27565b03925af180156147da576147c7575b5060018060a01b03602654169060018060a01b03600954166020600c5460646040518094819363442c159960e01b83526004830152896024830152600160448301525afa90811561474d578891614791575b509061453792604092898451809681958294633965907b60e01b845260048401528760248401526044830190612233565b03925af1801561478657614758575b5060018060a01b036009541692600e5492604051627eeac760e11b815260208180614575883060048401614b51565b0381895afa90811561474d578891614719575b506025549196939291620186a0916145c1916145b8916145b1916001600160801b03169061261e565b9a8b61261e565b601954906125c7565b049586936145cf858b61261e565b92604051918291908b905b8082106146e15750505090806000805160206154a783398151915293920390209361460c6040519283923396846124f6565b0390a4813b1561070c578261463c92859283604051809681958294630208d92960e11b8452333060048601614b27565b03925af180156146d6579083916146c2575b506146a59190506001600160801b03614667828661261e565b602554916001600160801b03916146819116828416613071565b6001600160801b03199092169116176025556026546001600160a01b03169361261e565b9160405191825260008051602061544783398151915260203093a4565b6146cb9061241d565b61033157813861464e565b6040513d85823e3d90fd5b9180949596979850929092359060018060a01b0382168092036121f55760208160019382935201940192018a979695949392916145da565b90506020813d602011614745575b8161473460209383612467565b810103126121f557516145c1614588565b3d9150614727565b6040513d8a823e3d90fd5b6147799060403d60401161477f575b6147718183612467565b810190614b6c565b50614546565b503d614767565b6040513d88823e3d90fd5b9190506020823d6020116147bf575b816147ad60209383612467565b810103126121f5579051614537614506565b3d91506147a0565b6147d39096919661241d565b94386144b4565b6040513d89823e3d90fd5b9097506020813d602011614811575b8161480160209383612467565b81010312610c9157519638614466565b3d91506147f4565b6148276139c3828a8a613880565b6148318382614ff5565b15614846575b5061484190612f52565b6143a0565b9093949589614855848461514c565b918215614a36576001600160a01b03841682526017602052604082205486519094906001600160801b03908116614a0e575061489284809661261e565b60018060a01b03821684526017602052604084205560206148c3620186a06148bc602154886125c7565b048661262b565b606460018060a01b0360095416916148e1610a0e8b600c54936125c7565b926040519788948593638eb22cdd60e01b85526004850152602484015260448301525afa92831561418d57908d9182946149d5575b5061484195936149c893866149ce97946149c29460018060a01b038116825260186020526040822061494986825461261e565b9055602654604051926001600160a01b03918216927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9260209289918691908416907f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4029080a48b85526001600160a01b031693a461262b565b9961262b565b9661262b565b9390614837565b915092506020813d602011614a06575b816149f260209383612467565b8101031261403b5751918c906149c2614916565b3d91506149e5565b614a2f81614a256148929360208c015116886125c7565b908a5116906125f0565b809661261e565b9796959150506148419150612f52565b91614a60614a6691614a59858a8a613880565b359061262b565b92612f52565b614365565b9150506060813d8211614aa6575b81614a8660609383612467565b81010312610c91576040614a9c602083016129c2565b910151903861435b565b3d9150614a79565b6011549650613922565b9050151538613917565b9050614ade91975060403d604011610c8a57610c7b8183612467565b96903861390f565b60405162461bcd60e51b815260206004820152601960248201527853474c3a206e6f7468696e6720746f206c697175696461746560381b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160a01b039091168152602081019190915260400190565b91908260409103126121f5576020825192015190565b600954600c549392600092916001600160a01b03908181163b15610ffa578484614bc99260409983868b8d5197889687958693630208d92960e11b85523060048601614b27565b0393165af18015614e0b57614f93575b5060209687818051810103126121f5578701518015614f5657816009541693600e54918851978a89627eeac760e11b988982528180614c1c898c60048401614b51565b03915afa988915614f1d578899614f27575b50841691600c54938a5194633d9545e960e11b865260048601526024850152876044850152606484015260016084840152600160a4840152610140808460c481865afa938415614f1d57928b949289928c958495614e15575b5050918493916101c4938551978896879563efa84c6d60e01b8752606081518d81511660048a01528481015160248a01528d848201511660448a015201516064880152606083820151805160848a01528481015160a48a01528381015160c48a0152015160e4880152015180511515610104870152015115156101248501526101448401528789166101648401526101a0610184840152816101a48401525af18015614e0b5791889391614d5b97969593614def575b506009541690600e5492885197889485938493845260048401614b51565b03915afa908115614de45790614db5575b614d76925061261e565b15614d7f575050565b60649250519062461bcd60e51b82526004820152601060248201526f14d1d30e8814ddd85c0819985a5b195960821b6044820152fd5b508382813d8311614ddd575b614dcb8183612467565b810103126121f557614d769151614d6c565b503d614dc1565b8451903d90823e3d90fd5b614e0590893d8b1161477f576147718183612467565b50614d3d565b87513d87823e3d90fd5b935093509450925080823d8411614f16575b614e318183612467565b81010391821261070457895191614e47836123d1565b60808112610700578a51614e5a81612430565b614e6383612dac565b81528c8301518d820152614e788c8401612dac565b8c8201526060830151606082015283526080607f19820112610700578a908151614ea181612430565b6080840151815260a08401518e82015260c08401518382015260e08401516060820152848e015260ff190112610704578a93888b9485946101c494614f03610120885192614eee84612402565b614efb61010082016129c2565b8452016129c2565b8982015286820152948193929450614c87565b503d614e27565b8a513d8a823e3d90fd5b9098508a81813d8311614f4f575b614f3f8183612467565b810103126121f557519784614c2e565b503d614f35565b865162461bcd60e51b81526004810189905260166024820152750a68e987440e6d8d2e0e0c2ceca40e8dede40d0d2ced60531b6044820152606490fd5b614f9f9094919461241d565b9238614bd9565b356001600160a01b03811681036121f55790565b15614fc157565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b919060018060a01b038060009416845260206017815260408520549081156150f85760188152604086205480156150f1578161502f613025565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156150e55780976150af575b505061295261509461508b6150aa969798620186a060225404906125c7565b601f54906125c7565b956131f760018060801b039485875116906125c7565b111590565b9096508187813d83116150de575b6150c78183612467565b81010312610387575094519461295261509461506c565b503d6150bd565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b1561510957565b60405162461bcd60e51b815260206004820152601b60248201527a14d1d30e88195e18da185b99d954985d19481b9bdd081d985b1a59602a1b6044820152606490fd5b6001600160a01b0390811660008181526017602090815260408220549194909392821561525c5761517e821515615102565b84615187613025565b946009541691600c549088526018825260646151bb6151b260408b2054620186a060225404906125c7565b602a54906125c7565b91604051948593849263442c159960e01b8452600484015260248301528a60448301525afa90811561478657869161522d575b506152149392916151fe916125f0565b9361295260018060801b039283855116906125c7565b81811061522857615225925061261e565b90565b505090565b90508481813d8311615255575b6152448183612467565b8101031261070857516152146151ee565b503d61523a565b505050505090565b3d1561528f573d90615275826124a4565b916152836040519384612467565b82523d6000602084013e565b606090565b604051906152a182612402565b60038252623f3f3f60e81b6020830152565b908151811015613890570160200190565b60ff1660ff81146125da5760010190565b80516040811061534d575080518101906020818184019303126121f5576020810151906001600160401b0382116121f5570181603f820112156121f5576020810151615320816124a4565b9261532e6040519485612467565b818452604082840101116121f557615225916040602085019101612210565b60209290830361543b576000805b60ff8116858110908161541c575b501561537d57615378906152c4565b61535b565b9260ff8094169261538d846124a4565b9361539b6040519586612467565b8085526153aa601f19916124a4565b013687860137825b858116878110806153ff575b156153f4576153ef91906153e96001600160f81b03196153de83886152b3565b5116871a91886152b3565b536152c4565b6153b2565b505094505050905090565b506001600160f81b031961541382866152b3565b511615156153be565b6001600160f81b0319915061543190866152b3565b5116151538615369565b91505061522561529456fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3845524332305065726d69743a206578706972656420646561646c696e6500000045524332305065726d69743a20696e76616c6964207369676e6174757265000085b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c351929cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220599c5d46813a70a0ebe159e92e7c2671cead45823378445d55ce750d342dae9064736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955614b569283620002078439608051836139df015260a05183613aaa015260c051836139a9015260e05183613a2e01525182613a5401525181613a0b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220415c8c5831b97cf000e381d8631c5aae922806096bf5cff7e048b3923fa2ff5364736f6c63430008120033"; type SGLLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts index f2a34eef..bb6406b1 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts @@ -1145,19 +1145,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -1843,7 +1830,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a55612bc192836200020784396080518361252b015260a051836125f5015260c051836124f5015260e0518361257a015251826125a0015251816125570152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c445750806302ce728f14611abc57806306fdde0314611a05578063078dfbe714611914578063095ea7b3146118ed5780630996efb7146114335780630c4e84f01461131b57806318160ddd146112fa5780631c9e379b146112c15780631da8bf101461121357806323b872dd14611076578063313ce56714610fe4578063331960ff14610fc657806334d441d014610fa85780633644e51514610f8d57806337b6b7b914610f6f57806338d52e0f14610f465780633ba0b9a914610f285780633f741adb14610f0357806340626d8b14610ee557806344de240a14610ec7578063473e3ce714610ea957806348e4163e14610e705780634d7f2a3414610e525780634e71e0c814610db6578063529898f214610d9857806352f353eb14610d6f5780635514023214610d4657806355c2ab9414610d1b5780635793546214610cfd5780636c3d8b8f14610cd457806370a0823114610c9b5780637277854714610c6357806374645ff314610c385780637dc0d1d014610c0f5780637ecebe0014610bd65780637fa0b84e14610ba4578063821226e814610b865780638285ef4014610b535780638c5d0ed314610b355780638da5cb5b14610b0c578063910dd7c814610913578063959916dc146108f657806395d89b411461083c57806399a970281461080c5780639c5d7192146107ee5780639e15e89f146107b3578063a9059cbb146106d0578063b0e21e8a146106b2578063b27c0e7414610678578063bb4cfe3b1461065a578063c23ea21f14610631578063ce8849ed14610608578063d505accf14610475578063d8dfeb451461044c578063dd62ed3e14610401578063de406577146103d8578063e0996cb6146103ba578063e30c397814610391578063ea64dd5614610373578063eec0f42e14610355578063f42760b714610337578063f9557ccb146103005763ffe04c66146102e057600080fd5b346102fd57806003193601126102fd576020602b54604051908152f35b80fd5b50346102fd57806003193601126102fd5760255460405190819061033390608081901c906001600160801b031683611edc565b0390f35b50346102fd57806003193601126102fd576020602c54604051908152f35b50346102fd57806003193601126102fd576020600c54604051908152f35b50346102fd57806003193601126102fd576020601f54604051908152f35b50346102fd57806003193601126102fd576006546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601d54604051908152f35b50346102fd57806003193601126102fd576009546040516001600160a01b039091168152602090f35b50346102fd5760403660031901126102fd576040602091610420611c8c565b610428611ca7565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102fd57806003193601126102fd57600b546040516001600160a01b039091168152602090f35b50346102fd5761048436611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826105589694928d9260016105509896019055604051916020830193600080516020612aec833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b51902061051f6124f2565b9060405190602082019261190160f01b8452602283015260428201526042815261054881611e9e565b5190206127c6565b9190916126c7565b160361056a5761056792612899565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102fd57806003193601126102fd576008546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576026546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601e54604051908152f35b50346102fd57806003193601126102fd5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b50346102fd57806003193601126102fd576020601a54604051908152f35b50346102fd5760403660031901126102fd576106ea611c8c565b602435809281158015906107a1575b610731575b50506040519182526001600160a01b0316903390600080516020612b4c83398151915290602090a3602060405160018152f35b3381526001602052604081205461074a8382101561261b565b6001600160a01b0384169033829003610765575b50506106fe565b60409361077c91610777841515612660565b611ff3565b338352600160205283832055815220610796838254612000565b90558138808061075e565b50336001600160a01b038416146106f9565b50346102fd5760403660031901126102fd5760606107db6107d2611c8c565b6024359061213f565b9060405192835260208301526040820152f35b50346102fd57806003193601126102fd576020602d54604051908152f35b50346102fd5760403660031901126102fd57602061083461082b611c8c565b602435906123c0565b604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261087981611e51565b51915afa6108856128f0565b9150156108e55761089861033391612977565b6108d16023604051809362746d2d60e81b60208301526108c18151809260208686019101611cbd565b8101036003810184520182611eb9565b604051918291602083526020830190611ce0565b506103336108f1612920565b610898565b50346102fd57806003193601126102fd5760208054604051908152f35b50346102fd5760403660031901126102fd576004356001600160401b038111610b085736602382011215610b085780600401358261095082611ef6565b9261095e6040519485611eb9565b82845260208401923660248284010111610b04578060246020930185378401015260243561ffff81168103610b0057610100918284805181010312610afc576109a6906122b0565b6109b2604085016126a5565b916109bf606086016126a5565b9460808101519460a0820151926109d860c084016126b9565b9160e0840151930151938042116105c3578515610ae757600080516020612aec833981519152915b6001600160a01b0388168b52600460205260408b20805491906000198314610ad3579161ffff610a909896949261055098969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a8181611e82565b6020815191012061051f6124f2565b6001600160a01b0383811691160361056a5715610abd57610567926001600160a01b039081169116612899565b610567926001600160a01b03908116911661284b565b634e487b7160e01b8d52601160045260248dfd5b600080516020612b2c83398151915291610a00565b8480fd5b8380fd5b8280fd5b5080fd5b50346102fd57806003193601126102fd576005546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601b54604051908152f35b50346102fd57806003193601126102fd5760145460405190819061033390608081901c906001600160801b031683611edc565b50346102fd57806003193601126102fd576020602f54604051908152f35b50346102fd5760403660031901126102fd57610bcb610bc1611c8c565b602435903361284b565b602060405160018152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610bfe611c8c565b168152600483522054604051908152f35b50346102fd57806003193601126102fd57600f546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576103336040516108d181610c5c81611dcc565b0382611eb9565b50346102fd5760203660031901126102fd576004359060098210156102fd57602060ff610c8f84611d63565b54166040519015158152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610cc3611c8c565b168152600183522054604051908152f35b50346102fd57806003193601126102fd57600a546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601c54604051908152f35b50346102fd57806003193601126102fd57602e546040805191901c6001600160401b03168152602090f35b50346102fd57806003193601126102fd57602e546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576030546040516001600160401b039091168152602090f35b50346102fd57806003193601126102fd576020602154604051908152f35b50346102fd57806003193601126102fd576006546001600160a01b039081811633819003610e0e5780600554938416600080516020612b0c8339815191528680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102fd57806003193601126102fd576020602a54604051908152f35b50346102fd5760203660031901126102fd576020906040906001600160a01b03610e98611c8c565b168152601783522054604051908152f35b50346102fd57806003193601126102fd576020601554604051908152f35b50346102fd57806003193601126102fd576020600e54604051908152f35b50346102fd57806003193601126102fd576020601654604051908152f35b50346102fd5760603660031901126102fd576020610834604435602435600435612026565b50346102fd57806003193601126102fd576020601154604051908152f35b50346102fd57806003193601126102fd57600d546040516001600160a01b039091168152602090f35b50346102fd57806003193601126102fd576020601254604051908152f35b50346102fd57806003193601126102fd5760206108346124f2565b50346102fd57806003193601126102fd576020601954604051908152f35b50346102fd57806003193601126102fd576020601354604051908152f35b50346102fd57806003193601126102fd57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102181611e51565b51915afa9061102e6128f0565b918061106b575b15611060576020828051810103126102fd575061105560208092016126b9565b60ff60405191168152f35b505060206012611055565b506020825114611035565b50346102fd5760603660031901126102fd57611090611c8c565b90611099611ca7565b60443591826110d7575b506040519182526001600160a01b03908116921690600080516020612b4c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906111008286101561261b565b861693848403611115575b50505050506110a3565b83865260028352604080872033885284528620546001810161117f575b509260016020969361115d8794604097610777600080516020612b4c8339815191529c9a1515612660565b9285525283832055815220611173858254612000565b9055913880858161110b565b909181106111d3579260016020969361115d8a600080516020612b4c8339815191529a98956111b08260409a611ff3565b86895260028552898920338a528552898920559497509497995050939650611132565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102fd5761122236611d14565b908395949542116105c3576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105af57826112b29694928d9260016105509896019055604051916020830193600080516020612b2c833981519152855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051481611e82565b160361056a576105679261284b565b50346102fd5760203660031901126102fd576020906040906001600160a01b036112e9611c8c565b168152601883522054604051908152f35b50346102fd57806003193601126102fd57602060255460801c604051908152f35b50346102fd5760403660031901126102fd576004356009811015610b0857611341611d05565b6008549091906001600160a01b031633036113f75760ff61136182611d63565b541615159115159182146113bd57808260ff61137f6113ad94611d63565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d63565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102fd576101803660031901126102fd57602480356001600160a01b0381811691829003610b00576001600160401b036044358181116118e957366023820112156118e95780600401359182116118e957368583830101116118e957606435938385168095036118e5576114ae84600554163314611f11565b600435806118a5575b5080611867575b50848261170d575b505050816116cd575b5050608435806116b5575b5060a4358061169d575b5060c43580611686575b5060e43580611662575b50610104358061163e575b50610124358061160d575b50610144358061159a575b50610164359081611528578280f35b601e54821061153b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6115a9620186a0821115611f5c565b601f5481116115bb57601e5538611519565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a36016553861150e565b61164c620186a08210611f5c565b611659601b548211611f5c565b601c5538611503565b611670620186a08210611f5c565b61167d601c548210611f5c565b601b55386114f8565b611694620186a08210611f5c565b601d55386114ee565b6116ac620186a0821115611f5c565b601a55386114e4565b6116c4620186a0821115611f5c565b601955386114da565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806114cf565b829161171a601054611d92565b601f8111611808575b508790601f841160011461178857889361177b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846114c6565b0101359050843880611738565b60108952601f1984169450600080516020612b6c83398151915292509087908960205b8782106117e957505084600196106117cd575b50505050811b0160105561174f565b60001960f88660031b161c1992010135169055388086816117be565b82850190930135855560019490940193899291820191908101906117ab565b601089529092509050600080516020612b6c833981519152601f840160051c810160208510611860575b91849391601f8994920160051c01905b81811061184f5750611723565b898155859450889350600101611842565b5080611832565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386114be565b6118b4620186a0821115611f5c565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a80a3602055386114b7565b8680fd5b8580fd5b50346102fd5760403660031901126102fd57610bcb61190a611c8c565b6024359033612899565b50346102fd5760603660031901126102fd5761192e611c8c565b611936611d05565b604435908115158203610b005760018060a01b0392839161195c83600554163314611f11565b156119ee5716908115908115916119e6575b50156119a95780600554928316600080516020612b0c8339815191528580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861196e565b9150501660018060a01b0319600654161760065580f35b50346102fd57806003193601126102fd57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4281611e51565b51915afa611a4e6128f0565b915015611aab57611a6161033391612977565b6108d16034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a9b8151809260208686019101611cbd565b8101036014810184520182611eb9565b50610333611ab7612920565b611a61565b50346102fd57806003193601126102fd57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0060248201611dcc565b03925af18015611c395782918391611bf9575b508115611b9a578015611b5e57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bac60135460125490612000565b4211611bbd57604090601154611b4c565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c31575b81611c1560409383611eb9565b81010312610b08576020611c28826122b0565b91015138611b13565b3d9150611c08565b6040513d84823e3d90fd5b905034610b08576040366003190112610b08576040602092611c64611c8c565b611c6c611ca7565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ca257565b600080fd5b602435906001600160a01b0382168203611ca257565b60005b838110611cd05750506000910152565b8181015183820152602001611cc0565b90602091611cf981518092818552858086019101611cbd565b601f01601f1916010190565b602435908115158203611ca257565b60e0906003190112611ca2576001600160a01b03906004358281168103611ca257916024359081168103611ca25790604435906064359060843560ff81168103611ca2579060a4359060c43590565b6009811015611d7c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dc2575b6020831014611dac57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611da1565b60105460009291611ddc82611d92565b908181526001928381169081600014611e365750600114611dfc57505050565b9092935060106000526020928360002092846000945b838610611e225750505050010190565b805485870183015294019385908201611e12565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6c57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6c57604052565b608081019081106001600160401b03821117611e6c57604052565b601f909101601f19168101906001600160401b03821190821017611e6c57604052565b6001600160801b0391821681529116602082015260400190565b6001600160401b038111611e6c57601f01601f191660200190565b15611f1857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f6357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611faf57565b634e487b7160e01b600052601160045260246000fd5b8115611fcf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611faf57600a0a90565b91908203918211611faf57565b91908201809211611faf57565b81810392916000138015828513169184121617611faf57565b60145491929161206f91612060916120569161204c906001600160801b03831690611f9c565b9060801c90611fc5565b93601f5490611f9c565b61206983611fe5565b90611fc5565b808310612137576120836120bf9184611ff3565b916120ba6120b46120ab601e546120a561209c86611fe5565b60215490612000565b90611f9c565b61206984611fe5565b91611fe5565b61200d565b6509184e72a00090818102918183051490151715611faf57670de0b6b3a764000091828102928184051490151715611faf578015611fcf57600160ff1b91808314600019831416611faf5705906000821215612130578114611faf57600003905b80821161212b575090565b905090565b5090612120565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122a35783518085016001600160401b0381118282101761228f5785528881528884808301938285526121958915156122bd565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612285578a91612252575b506122469798999492601894926122296122148a61220f61220661223297620186a06022540490611f9c565b601e5490611f9c565b611fc5565b915191946001600160801b0392831690611f9c565b91511690611fc5565b81811061224a57035b978352522054612309565b9091565b50508261223b565b90508481813d831161227e575b6122698183611eb9565b8101031261227a57516122466121da565b8980fd5b503d61225f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611ca257565b156122c457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123148215156122bd565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123b457600091612381575b509061220f61236d9260225490611f9c565b620186a061237d601e5483611f9c565b0491565b906020823d82116123ac575b8161239a60209383611eb9565b810103126102fd57505161220f61235b565b3d915061238d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123e391612309565b9183526017602052604083205480156124ec5781156124ec578181106124ec57828110156124e25760145461242c9183916107779161204c906001600160801b03831690611f9c565b90620186a092838302928084048514901517156124ce57612451929161206991611ff3565b91601b5491601c5493612464858561200d565b80820291848212600160ff1b8214166124ce5781830514901517156124ba57058184820194851291129080158216911516176124a6575080821261212b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125f2575b1561254d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811060018060401b03821117611e6c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612524565b1561262257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561266757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ca257565b519060ff82168203611ca257565b6005811015611d7c57806126d85750565b600181036127205760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361276d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461277657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161283f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128325781516001600160a01b0381161561282c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561291b573d9061290182611ef6565b9161290f6040519384611eb9565b82523d6000602084013e565b606090565b6040519061292d82611e51565b60038252623f3f3f60e81b6020830152565b908151811015612950570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611faf5760010190565b8051604081106129f257508051810190602081818401930312611ca2576020810151906001600160401b038211611ca2570181603f82011215611ca25760208101516129c281611ef6565b926129d06040519485611eb9565b81845260408284010111611ca2576129ef916040602085019101611cbd565b90565b602092908303612ae0576000805b60ff81168581109081612ac1575b5015612a2257612a1d90612966565b612a00565b9260ff80941692612a3284611ef6565b93612a406040519586611eb9565b808552612a4f601f1991611ef6565b013687860137825b85811687811080612aa4575b15612a9957612a949190612a8e6001600160f81b0319612a83838861293f565b5116871a918861293f565b53612966565b612a57565b505094505050905090565b506001600160f81b0319612ab8828661293f565b51161515612a63565b6001600160f81b03199150612ad6908661293f565b5116151538612a0e565b9150506129ef61292056fe9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220e77aed4cc92dc98e9b17af4953c9c1fefc631164d8d3fd7c22b9105d1942f12964736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955612b2392836200020784396080518361250c015260a051836125d7015260c051836124d6015260e0518361255b01525182612581015251816125380152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e3c0bb398262238deaea674a33e1d2248bb4e664613cee955c5738abd18fc8aa64736f6c63430008120033"; type SGLStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts index e79e5572..687046d5 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts @@ -1406,19 +1406,14 @@ const _abi = [ type: "uint256[]", }, { - internalType: "bytes[]", - name: "collateralToAssetSwapDatas", - type: "bytes[]", - }, - { - internalType: "bytes", - name: "usdoToBorrowedSwapData", - type: "bytes", + internalType: "contract IMarketLiquidatorReceiver[]", + name: "liquidatorReceivers", + type: "address[]", }, { - internalType: "contract ISwapper", - name: "swapper", - type: "address", + internalType: "bytes[]", + name: "liquidatorReceiverDatas", + type: "bytes[]", }, ], name: "liquidate", @@ -1439,13 +1434,13 @@ const _abi = [ type: "address", }, { - internalType: "contract ISwapper", - name: "swapper", + internalType: "contract IMarketLiquidatorReceiver", + name: "liquidatorReceiver", type: "address", }, { internalType: "bytes", - name: "collateralToAssetSwapData", + name: "liquidatorReceiverData", type: "bytes", }, ], @@ -1506,19 +1501,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "liquidationQueue", - outputs: [ - { - internalType: "contract ILiquidationQueue", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lqCollateralizationRate", @@ -2258,29 +2240,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [ - { - internalType: "contract ILiquidationQueue", - name: "_liquidationQueue", - type: "address", - }, - { - internalType: "address", - name: "_bidExecutionSwapper", - type: "address", - }, - { - internalType: "address", - name: "_usdoSwapper", - type: "address", - }, - ], - name: "setLiquidationQueueConfig", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -2687,7 +2646,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6028557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306029556161a8602a556001603155615f6592836200020c843960805183613d33015260a05183613dee015260c05183613cfd015260e05183613d8201525182613da801525181613d5f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630996efb7146105a15780630c4e84f01461059c57806318160ddd146105975780631c9e379b146105925780631da8bf101461058d5780631ee9c8f21461058857806323b872dd1461058357806325384fd81461057e5780632a9399d914610579578063313ce56714610574578063331960ff1461056f57806334d441d01461056a5780633644e5151461056557806337b6b7b91461056057806338d52e0f1461055b5780633ba0b9a9146105565780633f741adb1461055157806340626d8b1461054c57806344de240a14610547578063473e3ce71461054257806348e4163e1461053d5780634d7f2a34146105385780634ddf47d4146105335780634e71e0c81461052e5780635224372c14610529578063529898f21461052457806352f353eb1461051f578063551402321461051a57806355c2ab9414610515578063579354621461051057806358db9afe1461050b5780635d5f73ef146105065780635dfe04e8146105015780636587adb8146104fc5780636c3d8b8f146104f757806370a08231146104f257806372778547146104ed57806374645ff3146104e85780637dc0d1d0146104e35780637ecebe00146104de5780637fa0b84e146104d9578063821226e8146104d45780638285ef40146104cf5780638c5d0ed3146104ca5780638da5cb5b146104c5578063910dd7c8146104c0578063959916dc146104bb57806395d89b41146104b657806399a97028146104b15780639c5d7192146104ac5780639e15e89f146104a7578063a28e6b82146104a2578063a9059cbb1461049d578063aa7d966514610498578063accfde4a14610493578063ae70702e1461048e578063af405b4c14610489578063b0e21e8a14610484578063b25ea8fb1461047f578063b27c0e741461047a578063bb4cfe3b14610475578063bf0b895814610470578063c23ea21f1461046b578063c861a52614610466578063cce19f8114610461578063cd0211eb1461045c578063ce8849ed14610457578063cfba1b4614610452578063d49dffa71461044d578063d505accf14610448578063d8dfeb4514610443578063dd62ed3e1461043e578063de40657714610439578063e0996cb614610434578063e30c39781461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063f42760b71461041b578063f496696714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e57612fac565b612f79565b612f60565b612f37565b612eed565b612ce1565b612cc3565b612ca5565b612c87565b612c03565b612bda565b612bbc565b612b93565b612b63565b612b3a565b612a9e565b6129bb565b612926565b6128fd565b612896565b61285b565b612832565b612809565b612757565b612739565b6126ff565b612672565b612654565b612560565b612481565b6121c9565b61202c565b611e87565b611ddd565b611d9f565b611d81565b611d56565b611cc1565b611ca4565b611c29565b611bc5565b611ba7565b611b74565b611b3c565b611b12565b611ad5565b611aac565b6119dd565b6118a7565b61182c565b611803565b6117ba565b611720565b6116eb565b611648565b61162a565b6115ff565b6115d6565b6115ad565b611583565b611523565b61147c565b61124a565b61122c565b6111ef565b6111d1565b6111b3565b611195565b611171565b611153565b61112a565b61110c565b6110e9565b6110cb565b6110ad565b61100c565b610f34565b610ede565b610dcc565b610cd1565b610bc8565b610b3b565b610b1a565b610a23565b610999565b610937565b61082e565b61075b565b6106d9565b610695565b6001600160a01b031690565b6001600160a01b038116036105dc57565b600080fd5b35906105ec826105cb565b565b60409060031901126105dc57600435610606816105cb565b90602435610613816105cb565b90565b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260276020526040902090565b6001600160a01b0316600090815260186020526040902090565b9060018060a01b0316600052602052604060002090565b346105dc5760206106c56106a8366105ee565b6001600160a01b039091166000908152600384526040902061067e565b54604051908152f35b60009103126105dc57565b346105dc5760003660031901126105dc5760406106f4613a2d565b825191151582526020820152f35b60005b8381106107155750506000910152565b8181015183820152602001610705565b9060209161073e81518092818552858086019101610702565b601f01601f1916010190565b906020610613928181520190610725565b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261079981611969565b51915afa6107a5614a27565b91501561080a576107ec6107fa6107be61080693614b43565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614a10565b03601f1981018352826119ba565b6040519182918261074a565b0390f35b506108066107ec6107fa61081c614a57565b6107be565b80fd5b801515036105dc57565b346105dc5760603660031901126105dc5760043561084b816105cb565b6024359061085882610824565b6044359161086583610824565b6005546001600160a01b03919061087f9083163314612fca565b1561091e57811691821590811591610916575b50156108d9576108c7916108af6108aa6005546105bf565b6105bf565b600080516020615e90833981519152600080a3613015565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610892565b60068054919092166001600160a01b0319909116179055005b346105dc5760403660031901126105dc57610961600435610957816105cb565b60243590336142d9565b602060405160018152f35b9181601f840112156105dc578235916001600160401b0383116105dc57602083818601950101116105dc57565b346105dc576101803660031901126105dc576024356109b7816105cb565b604435906001600160401b0382116105dc576109da61001992369060040161096c565b90606435926109e8846105cb565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435613037565b6004359060098210156105dc57565b346105dc5760403660031901126105dc57610a3c610a14565b602435610a4881610824565b6008546001600160a01b03163303610ade57610acd82610a7c610a77610a706100199661188e565b5460ff1690565b151590565b610a8b8415159182141561351d565b610a97610a708361188e565b610aa08361187f565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461188e565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105dc5760003660031901126105dc57602060255460801c604051908152f35b346105dc5760203660031901126105dc57600435610b58816105cb565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105dc57565b60e09060031901126105dc57600435610b9b816105cb565b90602435610ba8816105cb565b906044359060643590608435610bbd81610b78565b9060a4359060c43590565b346105dc57610bd636610b83565b9592809594959291924211610c8c5761001996610c8793610c7493610c67878a610c5f8b6107ec610c6c99610c0a86614264565b60405195869460208601988991959493909260c09360e0840197600080516020615eb083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061420f565b614197565b91909161407c565b6001600160a01b03838116911614614017565b61428c565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105dc5760c03660031901126105dc57600435610cee816105cb565b608435610cfa816105cb565b60a435906001600160401b0382116105dc5761080692610d7c610d81926107ec610d2b610d9096369060040161096c565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615951565b615d18565b60208082518301019101613b62565b6040519081529081906020820190565b60609060031901126105dc57600435610db8816105cb565b90602435610dc5816105cb565b9060443590565b346105dc57610e14600080516020615ed0833981519152610dec36610da0565b9291939083610e23575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610e2c85610616565b54610e3985821015613e14565b6001600160a01b038281169186918816839003610e59575b505050610df6565b610e87610e8c93610e73610e6c8b610630565b339061067e565b548460018201610eb4575b50501515613e59565b61360a565b610e9586610616565b55610e9f81610616565b610eaa858254613617565b9055388481610e51565b81610e8782610ec4941015613e9e565b610ed633610ed18d610630565b61067e565b553884610e7e565b346105dc5760003660031901126105dc576033546040516001600160a01b039091168152602090f35b908160609103126105dc5790565b908160e09103126105dc5790565b60809060a31901126105dc5760a490565b610120806003193601126105dc57600435610f4e816105cb565b60443590610f5b82610824565b6001600160401b03906064358281116105dc57610f7c903690600401610f07565b936084359283116105dc576107ec61100161001996610fef610fa5610d7c973690600401610f15565b91610faf36610f23565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159a4565b8581036023190160a4870152906159e8565b9160c4840190615add565b346105dc5760008060031936011261082157808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261104a81611969565b51915afa90611057614a27565b91806110a2575b15611096576020828051810103126108215750602061080691015161108281610b78565b60405160ff90911681529081906020820190565b50506108066012611082565b50602082511461105e565b346105dc5760003660031901126105dc576020601354604051908152f35b346105dc5760003660031901126105dc576020601954604051908152f35b346105dc5760003660031901126105dc576020611104613cfa565b604051908152f35b346105dc5760003660031901126105dc576020601254604051908152f35b346105dc5760003660031901126105dc57600d546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601154604051908152f35b346105dc5760603660031901126105dc5760206111046044356024356004356136c4565b346105dc5760003660031901126105dc576020601654604051908152f35b346105dc5760003660031901126105dc576020600e54604051908152f35b346105dc5760003660031901126105dc576020601554604051908152f35b346105dc5760203660031901126105dc5760043561120c816105cb565b60018060a01b031660005260176020526020604060002054604051908152f35b346105dc5760003660031901126105dc576020602a54604051908152f35b346105dc5760203660031901126105dc576004356001600160401b0381116105dc5761127a90369060040161096c565b9060ff602354166114415761129191810190614c41565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561143c57806113e29f8180916113576113dd9f8f90848f61132a826113a09f94819560009161140e575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b61134061133b6108aa600a546105bf565b613015565b1615159182611402575b826113f4575b5050614cf1565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d91565b610019600160ff196023541617602355565b9091501615158f8490611350565b8d82161515925061134a565b61142f915060203d8111611435575b61142781836119ba565b810190614cdc565b38611307565b503d61141d565b61399b565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105dc57600080600319360112610821576006546001600160a01b0316338190036114df57806114cc916114b56108aa6005546105bf565b600080516020615e908339815191528580a3613015565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105dc5761155e6107ec61155961153a36610da0565b6040516314890dcb60e21b60208201529485939092906024850161592f565b615db1565b6040818051810103126105dc5780604060208193015191015182519182526020820152f35b346105dc5760003660031901126105dc576020602154604051908152f35b6001600160401b031690565b346105dc5760003660031901126105dc576030546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040516001600160401b039091168152602090f35b346105dc5760003660031901126105dc57602e546040805191901c6001600160401b03168152602090f35b346105dc5760003660031901126105dc576020601c54604051908152f35b346105dc5760a03660031901126105dc57600435611665816105cb565b606435611671816105cb565b608435906001600160401b0382116105dc5761080692610d7c610d81926107ec6116a2610d9096369060040161096c565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615951565b346105dc5760003660031901126105dc576032546040516001600160a01b039091168152602090f35b6001600160801b031690565b346105dc5760003660031901126105dc5761173961432b565b506080611744614455565b506040805187516001600160401b0390811682526020808a0151909116908201529681015160001960018a1b011690870152606086015250505050f35b60809060031901126105dc57600435611799816105cb565b906024356117a6816105cb565b906044356117b381610824565b9060643590565b346105dc5760206111046117cd36611781565b926007600093929352600786526117ec60ff6040600020541615615095565b6117f684826150d2565b6117fe614917565b615178565b346105dc5760003660031901126105dc57600a546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611849816105cb565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561188957565b611869565b6009811015611889576000526007602052604060002090565b346105dc5760203660031901126105dc576118c0610a14565b6009811015611889576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611916575b602083101461190057565b634e487b7160e01b600052602260045260246000fd5b91607f16916118f5565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161194957604052565b611920565b606081019081106001600160401b0382111761194957604052565b604081019081106001600160401b0382111761194957604052565b60c081019081106001600160401b0382111761194957604052565b60e081019081106001600160401b0382111761194957604052565b601f909101601f19168101906001600160401b0382119082101761194957604052565b346105dc5760008060031936011261082157604051816010546119ff816118e6565b80845290600190818116908115611a845750600114611a3d575b61080684611a29818803826119ba565b604051918291602083526020830190610725565b6010835260209450600080516020615f108339815191525b828410611a71575050508161080693611a299282010193611a19565b8054858501870152928501928101611a55565b6108069650611a299450602092508593915060ff191682840152151560051b82010193611a19565b346105dc5760003660031901126105dc57600f546040516001600160a01b039091168152602090f35b346105dc5760203660031901126105dc57600435611af2816105cb565b60018060a01b031660005260046020526020604060002054604051908152f35b346105dc5760403660031901126105dc57610961600435611b32816105cb565b602435903361428c565b346105dc5760003660031901126105dc576020602f54604051908152f35b6001600160801b0391821681529116602082015260400190565b346105dc5760003660031901126105dc5760145460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020601b54604051908152f35b346105dc5760003660031901126105dc576005546040516001600160a01b039091168152602090f35b6001600160401b03811161194957601f01601f191660200190565b6024359061ffff821682036105dc57565b359061ffff821682036105dc57565b346105dc5760403660031901126105dc576004356001600160401b0381116105dc57366023820112156105dc578060040135611c6481611bee565b90611c7260405192836119ba565b80825236602482850101116105dc57602081600092602461001996018386013783010152611c9e611c09565b90613ee5565b346105dc5760003660031901126105dc5760208054604051908152f35b346105dc5760008060031936011261082157808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611cff81611969565b51915afa611d0b614a27565b915015611d3f576107ec6107fa611d2461080693614b43565b60405162746d2d60e81b6020820152928391602383016107e6565b506108066107ec6107fa611d51614a57565b611d24565b346105dc5760403660031901126105dc576020611104600435611d78816105cb565b60243590613c39565b346105dc5760003660031901126105dc576020602d54604051908152f35b346105dc5760403660031901126105dc576060611dca600435611dc1816105cb565b602435906137a8565b9060405192835260208301526040820152f35b346105dc5760803660031901126105dc57600435611dfa816105cb565b602435611e06816105cb565b60443590611e13826105cb565b606435926001600160401b0384116105dc576107ec611e8292611e3d61001996369060040161096c565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615951565b615ddb565b346105dc5760403660031901126105dc57600435611ea4816105cb565b6024358015801590611f4e575b611ee4575b6040519081526001600160a01b03909116903390600080516020615ed0833981519152908060208101610e14565b611eed33610616565b54611efa82821015613e14565b6001600160a01b03831690829033839003611f18575b505050611eb6565b610e87611f26931515613e59565b611f2f33610616565b55611f3982610616565b611f44828254613617565b9055388181611f10565b50336001600160a01b03831614611eb1565b9181601f840112156105dc578235916001600160401b0383116105dc576020808501948460051b0101116105dc57565b906040820191604081528151809352606081019260208093019060005b81811061201657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611fe85750505050505090565b9091929394958480612006600193601f198682030187528a51610725565b9801930193019194939290611fd8565b8251151586529484019491840191600101611fad565b346105dc576040806003193601126105dc57600480356001600160401b0381116105dc5761205d9036908301611f60565b929060243561206b81610824565b60026031541461215a57600260315561208385614f30565b9361208d86614f58565b95600090815b8181106120b4578888610806896120aa6001603155565b5192839283611f90565b82806120c183858a614fa2565b906120d08b5180938193614fe3565b0390305af46120dd614a27565b90801580612153575b61212c57829161210761210c92612100612127968e614ff1565b9015159052565b615005565b612116828c614ff1565b52612121818b614ff1565b50614255565b612093565b888661214f61213a85615005565b925162461bcd60e51b8152928392830161074a565b0390fd5b50866120e6565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105dc57565b60a435906001600160401b03821682036105dc57565b346105dc5760e03660031901126105dc576024356004356044356064356121ee61219d565b906121f76121b3565b9060c4359361221160018060a01b03600554163314612fca565b80612449575b50806123eb575b506001600160401b03918083169081612384575b505081811680612314575b505050806122dc575b5080612295575b508061225557005b80612267620186a06100199310615c81565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122a8620186a06122d6931115615c81565b80602a547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602a55565b3861224d565b8061230e91602f547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602f55565b38612246565b61237c92602e546123288282168411615c81565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602e8054600160401b600160801b03191660409290921b600160401b600160801b0316919091179055565b38808061223d565b6123e49184602e5461239c828260401c168410615c81565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a3602e80546001600160401b0319166001600160401b0392909216919091179055565b3880612232565b80612402670de0b6b3a76400006124309310615c81565b80602c547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602c55565b61244361243e602c546135f4565b602d55565b3861221e565b8061247b91602b547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602b55565b38612217565b346105dc5760403660031901126105dc5760043561249e816105cb565b6124e160243591600e548314600014612555576020602854935b6124c66108aa6009546105bf565b6040518080968194627eeac760e11b83528760048401614efe565b03915afa801561143c5761080693610d909360009261251f575b50612509612518929361064a565b90600052602052604060002090565b5490613617565b61251892506125476125099160203d811161254e575b61253f81836119ba565b810190613b62565b92506124fb565b503d612535565b6020602954936124b8565b346105dc5760008060031936011261082157610d906108069160018060a01b0361258f81600554163314612fca565b61259c81600a54166105bf565b60245490929060801c6125be575b50506125b581610616565b54903390615533565b6125c6614917565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e76125fb6125f660245460801c90565b611714565b9261260585610616565b612610858254613617565b90558416918281600080516020615ed08339815191526040518061263989829190602083019252565b0390a3602480546001600160801b0316905580a338806125aa565b346105dc5760003660031901126105dc576020601a54604051908152f35b346105dc5760403660031901126105dc5760243561268f816105cb565b6126a460018060a01b03600554163314612fca565b60008080808094600435905af16126b9614a27565b50156126c25780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105dc5760003660031901126105dc5760606024546040519060018060401b0380821683528160401c16602083015260801c6040820152f35b346105dc5760003660031901126105dc576020601e54604051908152f35b346105dc5760403660031901126105dc576025546127a8602061277e6108aa6009546105bf565b612789601454611714565b906040518080958194638eb22cdd60e01b8352602435600484016143fc565b03915afa91821561143c576127e16127d961080694610d90946000916127eb575b506001600160801b038416613617565b6004356135ae565b9060801c906135d7565b612803915060203d811161254e5761253f81836119ba565b386127c9565b346105dc5760003660031901126105dc576026546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576034546040516001600160a01b039091168152602090f35b346105dc576100196107ec61289161287236610da0565b60405163cce19f8160e01b60208201529485939092906024850161592f565b615e05565b346105dc5760206111046128ef6128ac36611781565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261155981611984565b828082518301019101613b62565b346105dc5760003660031901126105dc576008546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc576001600160401b036004358181116105dc57612957903690600401611f60565b6024358381116105dc5761296f903690600401611f60565b6044929192358581116105dc5761298a903690600401611f60565b916064359687116105dc576129a661001997369060040161096c565b959094608435976129b6896105cb565b615bb6565b610140806003193601126105dc57600435906129d6826105cb565b606435906129e382610824565b6001600160401b03926084358481116105dc57612a04903690600401610f07565b9360a4359081116105dc57612a1d903690600401610f15565b9360803660c31901126105dc5761001994612a80612a9292610d7c9560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159a4565b8381036023190160c4850152906159e8565b6107ec60e48301615a88565b346105dc57612aac36610b83565b9592809594959291924211610c8c5761001996612b3593610c7493610c67878a610c5f8b6107ec610c6c99612ae086614264565b60405195869460208601988991959493909260c09360e0840197600080516020615e5083398151915285526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6142d9565b346105dc5760003660031901126105dc57600b546040516001600160a01b039091168152602090f35b346105dc5760206106c5612b76366105ee565b6001600160a01b039091166000908152600284526040902061067e565b346105dc5760003660031901126105dc576009546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc576020601d54604051908152f35b346105dc5760003660031901126105dc576006546040516001600160a01b039091168152602090f35b346105dc5760a03660031901126105dc57610019600435612c23816105cb565b60243590612c30826105cb565b60443590612c3d82610824565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128918161199f565b346105dc5760003660031901126105dc576020601f54604051908152f35b346105dc5760003660031901126105dc576020600c54604051908152f35b346105dc5760003660031901126105dc576020602c54604051908152f35b346105dc5760603660031901126105dc57600435612cfe816105cb565b60243590612d0b826105cb565b60443591612d18836105cb565b6005546001600160a01b039290612d329084163314612fca565b8281169081612e61575b505081811680612dd9575b5050811680612d5257005b604051916000917f3b9b7263cc05ae90b456a560e6740524a87c96696165f24f3aecbe42b9176f778380a2612d8b6108aa6026546105bf565b90813b15612dd55763036252c960e41b84526001600160a01b031660048401528290602490829084905af1801561143c57612dc257005b80612dcf61001992611936565b806106ce565b8280fd5b604051916000917f1602f9f47bbf51628a9becdcc4582b22b157c0cbbe8ba4473f24b151fd335fc28380a2612e126108aa6026546105bf565b90813b15612dd55763575939f960e01b84526001600160a01b031660048401528290602490829084905af1801561143c57612e4e575b80612d47565b80612dcf612e5b92611936565b38612e48565b6020600492604051938480926307be4daf60e01b82525afa91821561143c57612eb892612e9691600091612ebf575b50615cd3565b602680546001600160a01b0319166001600160a01b0392909216919091179055565b3880612d3c565b612ee0915060203d8111612ee6575b612ed881836119ba565b810190615cbe565b38612e90565b503d612ece565b346105dc576020612f30611104612f0336610da0565b90600860009593955260078652612f2260ff6040600020541615615095565b612f2a614917565b846156fa565b80926150d2565b346105dc5760003660031901126105dc576035546040516001600160a01b039091168152602090f35b346105dc5760003660031901126105dc57610019614917565b346105dc5760003660031901126105dc5760255460405190819061080690608081901c906001600160801b031683611b5a565b346105dc5760003660031901126105dc576020602b54604051908152f35b15612fd157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03949291906130539086163314612fca565b806132b6575b5083811661326c575b5080613237575b5050811690816131d7575b5050806131b9575b508061319b575b508061317e575b5080613154575b508061312a575b50806130f2575b50806130c6575b50806130af5750565b6105ec906130c1601e548210156134b6565b601f55565b806130d9620186a06130ec9311156132fd565b6130e7601f5482111561345c565b601e55565b386130a6565b80613124916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861309f565b8061313c620186a061314e93106132fd565b613149601b5482116132fd565b601c55565b38613098565b80613166620186a061317893106132fd565b613173601c5482106132fd565b601b55565b38613091565b80613190620186a061319593106132fd565b601d55565b3861308a565b806131ae620186a06131b39311156132fd565b601a55565b38613083565b806131cc620186a06131d19311156132fd565b601955565b3861307c565b613230916131e96108aa6008546105bf565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880613074565b61324091613391565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880613069565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138613062565b806132c9620186a06132f79311156132fd565b806020547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3602055565b38613059565b1561330457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f8111613349575050565b6000906010825260208220906020601f850160051c83019410613387575b601f0160051c01915b82811061337c57505050565b818155600101613370565b9092508290613367565b91906001600160401b038111611949576133b5816133b06010546118e6565b61333d565b6000601f82116001146133ef578192936000926133e4575b50508160011b916000199060031b1c191617601055565b0135905038806133cd565b6010600052601f19821693600080516020615f1083398151915291805b868110613444575083600195961061342a575b505050811b01601055565b0135600019600384901b60f8161c1916905538808061341f565b9092602060018192868601358155019401910161340c565b1561346357565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156134bd57565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561352457565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561358c57565b61355e565b90670de0b6b3a76400009182810292818404149015171561358c57565b8181029291811591840414171561358c57565b634e487b7160e01b600052601260045260246000fd5b81156135e1570490565b6135c1565b604d811161358c57600a0a90565b90670de0b6b3a764000091820391821161358c57565b9190820391821161358c57565b9190820180921161358c57565b8181039291600013801582851316918412161761358c57565b906509184e72a0009182810292818405149015171561358c57565b90670de0b6b3a76400009182810292818405149015171561358c57565b818102929160008212600160ff1b82141661358c57818405149015171561358c57565b81156135e157600160ff1b811460001983141661358c570590565b600160ff1b811461358c5760000390565b601454919291906136df906001600160801b038316906135ae565b9060801c9081156135e15761370c916136fd910493601f54906135ae565b613706836135e6565b906135d7565b908183106137a05761377161376b61376661372a613776958761360a565b9361376161375b613752601e5461374c613743866135e6565b60215490613617565b906135ae565b613706846135e6565b916135e6565b613624565b61363d565b91613658565b613698565b600081121561379a57613788906136b3565b905b808211613795575090565b905090565b9061378a565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156138d657613830906137d861434a565b506137e1614455565b50505050509490506137f4841515613b16565b60206138046108aa6009546105bf565b600c54906138118a610664565b5460405163442c159960e01b8152968793849283929160048401613b71565b03915afa92831561143c576138ad956137066125f6602061388e6138808a61387b6138726138a79c6138969a8c916138b9575b50602254620186a0900461374c565b601e54906135ae565b6135d7565b9761374c6125f68751611714565b930151611714565b908282106138b15750035b94610664565b54613b89565b9091565b9150506138a1565b6138d09150873d811161254e5761253f81836119ba565b38613863565b505080919250918190565b91908260409103126105dc57602082516138fa81610824565b92015190565b602080825260009160105491613915836118e6565b9283828401526001908181169081600014613978575060011461393a575b5050505090565b929350601060005280600020926000935b8585106139645750505060409250010138808080613933565b80548585016040015293820193810161394b565b925050506040935060ff929192191683830152151560051b010138808080613933565b6040513d6000823e3d90fd5b156139ae57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156139f157565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b613a3b6108aa600f546105bf565b6040805163d6d7d52560e01b81529291839081600081613a5d60048201613900565b03925af1801561143c576000928391613ae2575b50908215613abd57613a848215156139ea565b613a8d82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105ec42601355565b9050613ad9613ad160135460125490613617565b4211156139a7565b60115490613ab4565b9050613b0691925060403d8111613b0f575b613afe81836119ba565b8101906138e1565b91909138613a71565b503d613af4565b15613b1d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105dc575190565b60409060009294936060820195825260208201520152565b613bc56020831592613b9b8415613b16565b60018060a01b0360095416600c5460405180958194829363442c159960e01b845260048401613b71565b03915afa801561143c57613be591600091613bff575b50602254906135ae565b906135e15704620186a0613bfb601e54836135ae565b0491565b613c17915060203d811161254e5761253f81836119ba565b38613bdb565b9190916000838201938412911290801582169115161761358c57565b90613c4a613c68916138a784610664565b6001600160a01b039093166000908152601760205260409020909291565b5480156137a05782156137a0578281106137a05781811015613cf15782613cb1613cac613cb795610e87613706956127e16014549160018060801b038316906135ae565b613574565b9261360a565b613ce5601b5491613ce0613cd7601c5492613cd28487613624565b613675565b620186a0900590565b613c1d565b90808212613795575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613deb575b15613d55577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613de581611984565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613d2c565b15613e1b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613e6057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613ea557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105dc576020810151613f0381610824565b604082015192613f12846105cb565b606083015194613f21866105cb565b60808401519460a085015160c086015193613f3b85610b78565b60e08701519601516001600160a01b0392831698831696428310610c8c57613feb95613fdf8a8c610c5f81996107ec613fe4998f8f60001461400257600080516020615e50833981519152965b613f9187614264565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614063565b1614614017565b15613ff9576105ec926142d9565b6105ec9261428c565b600080516020615eb083398151915296613f88565b1561401e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106139391610c6c93614197565b6005111561188957565b61408581614072565b8061408d5750565b61409681614072565b600181036140de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6140e781614072565b600281036141345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614140600392614072565b1461414757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116142035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561143c5781516001600160a01b038116156141fd579190565b50600190565b50505050600090600390565b614217613cfa565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b038211176119495760405251902090565b600019811461358c5760010190565b6001600160a01b0316600090815260046020526040902080549061428782614255565b905590565b60018060a01b0380911691826000526003602052836142af82604060002061067e565b5516907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc3600080a4565b60207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b038091169384600052600283528561431f82604060002061067e565b556040519586521693a3565b604051906143388261194e565b60006040838281528260208201520152565b6040519061435782611969565b60006020838281520152565b6001600160401b039091169052565b6001600160801b039091169052565b6040519061438e8261194e565b816040602454600180831b03808216845281831c16602084015260801c910152565b604051906143bd82611969565b6014546001600160801b038116835260801c6020830152565b604051906143e382611969565b6025546001600160801b038116835260801c6020830152565b9081526001600160801b0390911660208201526001604082015260600190565b9081526001600160801b0390911660208201526000604082015260600190565b6001600160801b03918216908216019190821161358c57565b61445d61432b565b5061446661434a565b5061446f61434a565b50614478614381565b906144816143b0565b9061448a6143d6565b90600061449b6108aa6009546105bf565b90600e54906144ca60206144af8751611714565b6040518093819263442c159960e01b8352876004840161441c565b0381875afa801561143c576144f5916000916148af575b506144ef6125f68951611714565b90613617565b9384614895576000925b839461451f61451961451460208d01516115a1565b6115a1565b4261360a565b94851561486b57506001600160401b039061453f42831660208d01614363565b60208a01516001600160801b039790889061455990611714565b16156148135750858a5161456c90611714565b61457590611714565b8c51614580906115a1565b614589906115a1565b614592916135ae565b9061459c916135ae565b670de0b6b3a76400009004978789168b516145b690611714565b906145c09161443c565b6145ca908c614372565b601a546145d7908a6135ae565b620186a0900460208c01516145eb90611714565b6145f490611714565b6145fd916135ae565b90614607916135d7565b96871660408c0181815161461a90611714565b906146249161443c565b61462d91614372565b60208a0190815161463d90611714565b906146479161443c565b61465091614372565b885161465b90611714565b60405163442c159960e01b8152938491829161467b91906004840161441c565b03815a93602094fa91821561143c578a926146a6916000916147f4575b506144ef6125f68c51611714565b806147da57506000945b602b548681811015614741579361387b61470d936146fb6145146147066147006146ed8861387b6146e86147139d9e6145149c61360a565b613591565b946146fb602f5496806135ae565b6135ae565b84613617565b94516115a1565b8a614363565b61471d89516115a1565b614728602e546115a1565b91808316911610614737575b50565b6105ec9089614363565b919050602c54808311614756575b5050505050565b6147c8946146fb61451461479961479361478561477c6146e861387b986147a09b61360a565b602d54906135d7565b966146fb602f5498806135ae565b86613617565b92516115a1565b602e546147b89060401c6001600160401b03166115a1565b8082116147d2575b501689614363565b873880808061474f565b9050386147c0565b6147ee9061387b6146e86125f68d51611714565b946146b0565b61480d915060203d60201161254e5761253f81836119ba565b38614698565b999a9650509350509350935061482982516115a1565b6148346030546115a1565b91808316911603614856575b50939261484b6143d6565b926000926000929190565b81614862929450614363565b60019138614840565b99975050509550505050509161487f6143b0565b916148886143d6565b9160009160009190600090565b6148a98561387b6146e86125f68b51611714565b926144ff565b6148c8915060203d60201161254e5761253f81836119ba565b386144e1565b602480546001600160401b0319166001600160401b0392909216919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105ec6149b96149e0614928614455565b9397949593909290156149e55750505060018060401b0360305416600080600080516020615ef08339815191526020604051838152a45b8051614973906001600160401b03166148ce565b6020810151602480546040938401516001600160401b039091169290931b600160401b600160801b03169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6148f0565b83516040519384526001600160401b031692600080516020615ef083398151915290602090a461495f565b90614a2360209282815194859201610702565b0190565b3d15614a52573d90614a3882611bee565b91614a4660405193846119ba565b82523d6000602084013e565b606090565b60405190614a6482611969565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a9d570160200190565b614a76565b60ff1660ff811461358c5760010190565b90614abd82611bee565b614aca60405191826119ba565b8281528092614adb601f1991611bee565b0190602036910137565b6020818303126105dc578051906001600160401b0382116105dc570181601f820112156105dc578051614b1781611bee565b92614b2560405194856119ba565b818452602082840101116105dc576106139160208085019101610702565b805160408110614b6157508060208061061393518301019101614ae5565b602092908303614c36576000805b60ff81168581109081614c14575b5015614b9157614b8c90614aa2565b614b6f565b92614b9f60ff809516614ab3565b92825b85811687811080614bf5575b15614bea579081614bdf614bd6614bc8614be59588614a8c565b516001600160f81b03191690565b871a9188614a8c565b53614aa2565b614ba2565b505094505050905090565b506001600160f81b0319614c0c614bc88387614a8c565b161515614bae565b6001600160f81b03199150614c2d90614bc89087614a8c565b16151538614b7d565b915050610613614a57565b90816101a09103126105dc578035614c58816105cb565b916020820135614c67816105cb565b916040810135614c76816105cb565b91614c83606083016105e1565b91614c90608082016105e1565b91614c9d60a083016105e1565b9160c081013591614cb060e083016105e1565b9161010081013591614cc561012083016105e1565b916101408101359161018061016083013592013590565b908160209103126105dc5751610613816105cb565b15614cf857565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d3457565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b602e80546001600160801b0319166c49d482460000000000097343e017908190556b0a9456c7acbaf3a129576cd1602b1b602f55614df490614dd2906115a1565b603080546001600160401b0319166001600160401b0392909216919091179055565b614e07614e026030546115a1565b6148ce565b614e0f613a2d565b5050614e1c6103e8601955565b614e266000601a55565b614e306032602055565b614e3b612ee0602155565b8015614ef157601e555b8015614ee457601f555b614e5e601f54601e5410614d2d565b614e696161a8602a55565b8015614ed2576022555b614e7f62013880601b55565b614e8b62015f90601c55565b614e96612710601d55565b614ea7670429d069189e0000602b55565b614eb86706f05b59d3b20000602c55565b614ec661243e602c546135f4565b6105ec62015180601255565b50614e73670de0b6b3a7640000602255565b50614e4f620138806130c1565b50614e45620124f86130e7565b6001600160a01b039091168152602081019190915260400190565b6001600160401b0381116119495760051b60200190565b90614f3a82614f19565b614f4760405191826119ba565b8281528092614adb601f1991614f19565b90614f6282614f19565b614f6f60405191826119ba565b8281528092614f80601f1991614f19565b019060005b828110614f9157505050565b806060602080938501015201614f85565b9190811015614a9d5760051b81013590601e19813603018212156105dc5701803591906001600160401b0383116105dc5760200182360381136105dc579190565b908092918237016000815290565b8051821015614a9d5760209160051b010190565b6103e881511161506157604481511061502e578060248060046106139401518301019101614ae5565b5060405161503b81611969565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161506e81611969565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561509c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150e857505050565b6000526002602052816150ff33604060002061067e565b541061513c5760001961511533610ed184610630565b540361511f575050565b61513061513891610ed13391610630565b91825461360a565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151856143d6565b9160018060801b0395866151998551611714565b16936151db60206151ae6108aa6009546105bf565b600e54906151bd601454611714565b604051638eb22cdd60e01b81529485938492839291600484016143fc565b03915afa801561143c576151f89160009161533a575b5086613617565b8061531457506103e886985b61521e8a826152166020870151611714565b91169061443c565b1610615308576152a061528e9594939261523f6149e08b8a6152b196615358565b61524881610616565b6152538b8254613617565b90556040518a81526001600160a01b0382811698909761529b9287928b91600091600080516020615ed0833981519152919081906020820190565b0390a38a600e54896153fe565b61064a565b602854600052602052604060002090565b6152bc868254613617565b9055156152f25750600080516020615e308339815191526152e16108aa6009546105bf565b915b604051878152921691602090a4565b600080516020615e3083398151915290916152e3565b50600096505050505050565b6153346103e89161387b61532e6125f66020870151611714565b8a6135ae565b98615204565b615352915060203d811161254e5761253f81836119ba565b386151f1565b919061537c9061536661434a565b5060018060801b0391828092168286511661443c565b168352615392816020850193168284511661443c565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b156153c957565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461547f575060206154399161541e6108aa6009546105bf565b6040518080958194627eeac760e11b83523060048401614efe565b03915afa92831561143c576105ec9361545a92600091615461575b5061360a565b10156153c2565b615479915060203d811161254e5761253f81836119ba565b38615454565b919092506154916108aa6009546105bf565b803b156105dc576154bf936000809460405196879586948593630208d92960e11b8552309060048601615398565b03925af1801561143c576154d05750565b80612dcf6105ec92611936565b6001600160801b03918216908216039190821161358c57565b156154fd57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156f1576155526143d6565b9461555d8651611714565b61557060206151ae6108aa6009546105bf565b03915afa91821561143c5785916000936156d1575b50169061559191613617565b61559b90836135ae565b90602087019182516155ac90611714565b6155b590611714565b6155be916135d7565b9687946155ca83610616565b858154906155d79161360a565b90556040518581526001600160a01b0393841694906000908690600080516020615ed083398151915290602090a3818716835161561390611714565b9061561d916154dd565b6156279084614372565b818616815161563590611714565b9061563f916154dd565b6156499082614372565b5161565390611714565b166103e81115615662906154f6565b61566b906148f0565b604051928352841691600080516020615e7083398151915290602090a4600954615694906105bf565b61569d906105bf565b90600e5490823b156105dc576154bf9260009283879360405196879586948593630208d92960e11b85523060048601615398565b6156ea91935060203d811161254e5761253f81836119ba565b9138615585565b50600093505050565b6025546001600160801b0394939192919060801c156156f15761571b6143d6565b906157268251611714565b61573960206151ae6108aa6009546105bf565b03915afa91821561143c57889160009361590f575b50169061575a91613617565b61576490826135ae565b6020830190815161577490611714565b61577d90611714565b615786916135d7565b96879361579287610616565b8481549061579f9161360a565b90556040518481526001600160a01b03888116949093916000908690600080516020615ed083398151915290602090a381871683516157dd90611714565b906157e7916154dd565b6157f19084614372565b81861681516157ff90611714565b90615809916154dd565b6158139082614372565b5161581d90611714565b166103e8111561582c906154f6565b615835906148f0565b604051928352841691600080516020615e7083398151915290602090a460095461585e906105bf565b615867906105bf565b90600e5490823b156105dc5761589b9260009283889360405196879586948593630208d92960e11b85523060048601615398565b03925af1801561143c576158fc575b506158b48161064a565b6158cb602854809290600052602052604060002090565b548411156158e557506158e26152a060009261064a565b55565b6125096158f19261064a565b61513883825461360a565b80612dcf61590992611936565b386158aa565b61592891935060203d811161254e5761253f81836119ba565b913861574e565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105dc570160208101919035906001600160401b0382116105dc5781360383136105dc57565b9060606159d86106139380356159b9816105cb565b6001600160a01b03168452602081810135908501526040810190615972565b9190928160408201520191615951565b908135815261ffff806159fd60208501611c1a565b166020830152615a0f60408401611c1a565b16604082015260c06060830135615a25816105cb565b6001600160a01b03908116606084015281615a75615a5a615a496080880188615972565b60e0608089015260e0880191615951565b615a6760a0880188615972565b9087830360a0890152615951565b940135615a81816105cb565b1691015290565b606060c435615a96816105cb565b6001600160a01b0390811683528060e435615ab0816105cb565b1660208401528061010435615ac4816105cb565b16604084015261012435615ad7816105cb565b16910152565b60609081813591615aed836105cb565b6001600160a01b039283168552826020820135615b09816105cb565b166020860152826040820135615b1e816105cb565b1660408601520135615ad7816105cb565b81835290916001600160fb1b0383116105dc5760209260051b809284830137010190565b9082818152602080910193818360051b82010194846000925b858410615b7d575050505050505090565b909192939495968580615ba5600193601f19868203018852615b9f8c88615972565b90615951565b990194019401929594939190615b6c565b98979592969391949096604051976020906367dd0da360e11b828b01528060c48b0160a060248d01525260e48a019b9160005b828110615c555750505050936107ec93615c34615c43948a9894615c246147349d9e611e829c9a602319988d60448b82860301910152615b2f565b91868b84030160648c0152615b53565b92878403016084880152615951565b6001600160a01b0390921660a4840152565b9091929c82808f9260019335615c6a816105cb565b848060a01b03168152019e01910192919092615be9565b15615c8857565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b908160209103126105dc575161061381610824565b15615cda57565b60405162461bcd60e51b815260206004820152601660248201527514d1d30e881314481b9bdd081a5b9a5d185b1a5e995960521b6044820152606490fd5b6035546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b9115615d4a57565b61214f615d5683615005565b60405162461bcd60e51b8152602060048201529182916024830190610725565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6032546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a27565b6034546001600160a01b03168015615d7657816000929160208493519201905af490615d42614a2756fe30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2666e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a641142288be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212201d475f623f9f2dd29517348e035a8b767eff1e759b069657a51ee85a1b63ae7864736f6c63430008120033"; + "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556001603055615e7792836200020c843960805183613c1d015260a05183613cd8015260c05183613be7015260e05183613c6c01525182613c9201525181613c490152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122036134da85b19eec4fc6e752a4452a9413fb537a5645d67f1b136ba7d90aa7af864736f6c63430008120033"; type SingularityConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/BaseUSDOStorage__factory.ts b/src/typechain/tapioca-bar/factories/usd0/BaseUSDOStorage__factory.ts index 0b6a088a..e0890582 100644 --- a/src/typechain/tapioca-bar/factories/usd0/BaseUSDOStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/BaseUSDOStorage__factory.ts @@ -87,63 +87,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -918,19 +861,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1091,19 +1021,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1718,7 +1635,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61010060409080825234620004e05760608162003f708038038091620000268285620004e5565b833981010312620004e05780516001600160a01b039182821691829003620004e057602080820151918483168303620004e05785015193808516809503620004e057620000726200051f565b906200007d6200051f565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e757600b54916001968784811c94168015620004d5575b89851014620004c1578190601f948581116200046d575b50899085831160011462000407578892620003fb575b5050600019600383901b1c191690871b17600b555b8051928311620003e757600c548681811c91168015620003dc575b88821014620003c857908183899594931162000370575b508391831160011462000305576004949291869183620002f9575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ef57908291899391620002a4575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d5551613a1f90816200055182396080518181816104970152818161075601528181610872015281816109ed01528181610ba0015281816118a901528181611a1a015281816121530152818161297a0152612dee015260a05181611342015260c051818181612bb401528181612ff80152818161326501526132fd015260e05181611ca10152f35b80929350858092503d8311620002e7575b620002c18183620004e5565b81010312620002e3575161ffff81168103620002e35787919061ffff620001c5565b5080fd5b503d620002b5565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200035757509683600498106200033d575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200032e565b8289015184558b978b9690940193928301920162000319565b9091929350600c86528786208380860160051c8201928a8710620003be575b9189918b97969594930160051c01915b828110620003af57505062000162565b8881558a96508991016200039f565b925081926200038f565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200045657505084116200043c575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200042d565b8385015186558d979095019493840193016200041a565b909150600b88528988208580850160051c8201928c8610620004b7575b918b91869594930160051c01915b828110620004a857505062000105565b8a81558594508b910162000498565b925081926200048a565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050957604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005095760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063940a1dc014610339578063950c8a741461033457806395d89b411461032f5780639bdb98121461032a5780639d3f4d1a146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e576121bd565b6120f1565b61203c565b612019565b611fe1565b611eb8565b611e33565b611dd1565b611db5565b611cd0565b611c8b565b611c41565b611c18565b611adb565b611ab2565b6119ce565b6119b1565b611941565b611909565b611893565b611869565b611707565b611678565b6115cc565b61152d565b61150f565b6114c4565b611420565b6113f7565b6113d9565b6108d3565b6113b0565b611366565b611328565b61110f565b6110bc565b610f86565b610f49565b610e6a565b610dd6565b610db3565b610d5f565b610c07565b610b86565b610b51565b610af5565b610a6b565b61096b565b610931565b6108f1565b61084d565b610812565b6107dd565b610731565b610651565b610594565b610480565b6004359061ffff821682036103d657565b600080fd5b6024359061ffff821682036103d657565b9181601f840112156103d6578235916001600160401b0383116103d657602083818601950101116103d657565b9060806003198301126103d65760043561ffff811681036103d657916001600160401b03906024358281116103d65781610455916004016103ec565b9390939260443581811681036103d657926064359182116103d65761047c916004016103ec565b9091565b346103d65761048e36610419565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054f5761051461051c926100199761050d6104f36104ee8a61ffff166000526001602052604060002090565b61109f565b8051908184149182610545575b5081610522575b5061259a565b3691610c8f565b923691610c8f565b9261270d565b905061052f368486610c8f565b6020815191012090602081519101201438610507565b1515915038610500565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d65760203660031901126103d65760043563ffffffff60e01b81168091036103d657602090631f7ecdf760e01b81149081156105d9575b506040519015158152f35b6301ffc9a760e01b149050386105ce565b60009103126103d657565b60005b8381106106085750506000910152565b81810151838201526020016105f8565b90602091610631815180928185528580860191016105f5565b601f01601f1916010190565b90602061064e928181520190610618565b90565b346103d65760008060031936011261072e5760405181600b5461067381610fcf565b8084529060019081811690811561070657506001146106ad575b6106a98461069d81880382610c51565b6040519182918261063d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f357505050816106a99361069d928201019361068d565b80548585018701529285019281016106d7565b6106a9965061069d9450602092508593915060ff191682840152151560051b8201019361068d565b80fd5b346103d6576000602036600319011261072e5761074c6103c5565b6107546121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c3576107b7575080f35b6107c090610c39565b80f35b612653565b5080fd5b6001600160a01b038116036103d657565b346103d65760403660031901126103d6576108076004356107fd816107cc565b60243590336123f1565b602060405160018152f35b346103d65760403660031901126103d65761ffff61082e6103c5565b6108366121d8565b166000526003602052602435604060002055600080f35b346103d6576000602036600319011261072e576108686103c5565b6108706121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c3576107b7575080f35b346103d65760003660031901126103d6576020600a54604051908152f35b346103d65760603660031901126103d657610807600435610911816107cc565b60243561091d816107cc565b6044359161092c83338361250a565b612322565b346103d65760003660031901126103d657602060405160128152f35b6064359081151582036103d657565b60a4359081151582036103d657565b346103d65760a03660031901126103d6576109846103c5565b61098c61094d565b90608435906001600160401b0382116103d6576109b261050d60409336906004016103ec565b906109e96109cc6109c4604435613263565b602435613332565b928451958694859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c3576000908192610a3a575b50604080519182526020820192909252f35b9050610a5d915060403d8111610a64575b610a558183610c51565b810190612afb565b9038610a28565b503d610a4b565b346103d65760403660031901126103d657600435610a88816107cc565b336000526009602052610a9f8160406000206118f2565b546024358101809111610ab65761080791336123f1565b612230565b9060406003198301126103d65760043561ffff811681036103d65791602435906001600160401b0382116103d65761047c916004016103ec565b346103d657602061ffff610b42610b0b36610abb565b9390911660005260018452610b2d610b34604060002060405192838092611009565b0382610c51565b848151910120923691610c8f565b82815191012014604051908152f35b346103d65760203660031901126103d65761ffff610b6d6103c5565b1660005260036020526020604060002054604051908152f35b346103d657610b9436610abb565b9190610b9e6121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d657604051928380926342d65a8d60e01b825281610bf56000988997889460048501612680565b03925af180156107c3576107b7575080f35b346103d65760003660031901126103d657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c4c57604052565b610c23565b601f909101601f19168101906001600160401b03821190821017610c4c57604052565b6001600160401b038111610c4c57601f01601f191660200190565b929192610c9b82610c74565b91610ca96040519384610c51565b8294818452818301116103d6578281602093846000960137010152565b60606003198201126103d65760043561ffff811681036103d657916001600160401b0391602435908382116103d657806023830112156103d657816024610d1293600401359101610c8f565b9160443590811681036103d65790565b602090610d3c9282604051948386809551938492016105f5565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346103d6576020610daa61ffff610d9c83610d7936610cc6565b9490911660005260058252604060002082604051948386809551938492016105f5565b820190815203019020610d48565b54604051908152f35b346103d65760003660031901126103d657602060ff601154166040519015158152f35b346103d657610de436610419565b9192949390303303610e0857610514610e0292610019973691610c8f565b92612b55565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d65790565b60a03660031901126103d657600435610e82816107cc565b610e8a6103db565b604435916084356001600160401b0381116103d657602061ffff610ec160008051602061392a833981519152933690600401610e5c565b93610f348535610ed0816107cc565b610eee61050d8689013598610ee48a6107cc565b60408101906128f8565b610ef8818a613165565b610f0d610f066064356132fb565b5085613503565b97610f19891515612d0a565b610f2b610f258a613263565b8c613332565b9234938b612daa565b6040519485526001600160a01b0316941692a4005b346103d65760203660031901126103d657600435610f66816107cc565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d65760008060031936011261072e57610fa06121d8565b80546001600160a01b03198116825581906001600160a01b031660008051602061398a8339815191528280a380f35b90600182811c92168015610fff575b6020831014610fe957565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fde565b906000929180549161101a83610fcf565b91828252600193848116908160001461107c575060011461103c575b50505050565b90919394506000526020928360002092846000945b838610611068575050505001019038808080611036565b805485870183015294019385908201611051565b9294505050602093945060ff191683830152151560051b01019038808080611036565b906110ba6110b39260405193848092611009565b0383610c51565b565b346103d65760203660031901126103d65761ffff6110d86103c5565b1660005260016020526106a9610b2d6110fb604060002060405192838092611009565b604051918291602083526020830190610618565b60e03660031901126103d657600435611127816107cc565b61112f6103db565b604435916001600160401b03906084358281116103d6576111549036906004016103ec565b91909260a43591818316918284036103d65760c4359081116103d65761117e903690600401610e5c565b926111b584359561118e876107cc565b6111ad6111a3602088013597610ee4896107cc565b9990923691610c8f565b973691610c8f565b9460ff600654166000146112a75760228651106112635785602095610f2b610f34946112318c61121e61ffff9a8b602260008051602061392a8339815191529f0151931660005260028d5261121860406000206001600052602052604060002090565b54612262565b9061122a8215156131ba565b1015613203565b61124661123f6064356132fb565b5088613503565b9a6112528c1515612d0a565b8d61125c8d613263565b90336133c0565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516112d45760008051602061392a8339815191529460209461ffff94610f2b610f3494611231565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d65760003660031901126103d657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d65760403660031901126103d6576020610daa6113846103c5565b61ffff61138f6103db565b91166000526002835260406000209061ffff16600052602052604060002090565b346103d65760003660031901126103d6576000546040516001600160a01b039091168152602090f35b346103d65760003660031901126103d6576020601254604051908152f35b346103d65760003660031901126103d6576004546040516001600160a01b039091168152602090f35b346103d65760008060031936011261072e5760405181600c5461144281610fcf565b80845290600190818116908115610706575060011461146b576106a98461069d81880382610c51565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114b157505050816106a99361069d928201019361068d565b8054858501870152928501928101611495565b346103d657602060ff61150361ffff610d9c846114e036610cc6565b9490911660005260078252604060002082604051948386809551938492016105f5565b54166040519015158152f35b346103d65760003660031901126103d6576020601354604051908152f35b346103d65760203660031901126103d65761ffff6115496103c5565b166000526001602052610b2d611569604060002060405192838092611009565b8051156115875761069d816115816106a993516126ef565b9061371d565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d65760403660031901126103d6576004356115e9816107cc565b602435903360005260096020526116048160406000206118f2565b549180831061162557611619920390336123f1565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d65760e03660031901126103d6576116916103c5565b6001600160401b03906064358281116103d6576116b29036906004016103ec565b60849291923584811681036103d6576116c961095c565b9160c4359586116103d6576116e56116f59636906004016103ec565b959094604435906024359061292a565b60408051928352602083019190915290f35b346103d65761171536610abb565b9061171e6121d8565b6040519260209280838587013761174a6034868381013060601b88820152036014810188520186610c51565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610c4c57611787836117818654610fcf565b8661269b565b80601f84116001146117e55750918080926117d49695948a9b60008051602061394a8339815191529b946117da575b50501b916000199060031b1c19161790555b60405193849384612680565b0390a180f35b0151925038806117b6565b91939498601f1984166117fd87600052602060002090565b938a905b8282106118525750509160008051602061394a833981519152999a959391856117d498969410611839575b505050811b0190556117c8565b015160001960f88460031b161c1916905538808061182c565b808886978294978701518155019601940190611801565b346103d65760403660031901126103d657610807600435611889816107cc565b6024359033612322565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346103d65760403660031901126103d657602060ff61150360243561192d816107cc565b600435600052600f845260406000206118f2565b346103d65760203660031901126103d6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611981816107cc565b6119896121d8565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d65760003660031901126103d65760206040516127108152f35b346103d65760803660031901126103d6576119e76103c5565b6119ef6103db565b6064356001600160401b0381116103d657611a0e9036906004016103ec565b9092611a186121d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d65760008094611a8f604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161265f565b03925af180156107c357611a9f57005b80611aac61001992610c39565b806105ea565b346103d65760003660031901126103d657600e546040516001600160a01b039091168152602090f35b611ae436610419565b9161ffff86949296166000526005602052611b1881604060002060206040518092878b833787820190815203019020610d48565b54918215611bc757611bb68483611baf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9b84611b968e8a8f611bc29f908f611b7c90611b6f611b909436908d610c8f565b602081519101201461286b565b61ffff166000526005602052604060002090565b91612852565b610d48565b55611ba736878d610c8f565b933691610c8f565b9188612b55565b604051958695866128c1565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d65760003660031901126103d657600d546040516001600160a01b039091168152602090f35b346103d65760403660031901126103d6576020610daa600435611c63816107cc565b60243590611c70826107cc565b6001600160a01b0316600090815260098452604090206118f2565b346103d65760003660031901126103d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d65760603660031901126103d657611ce96103c5565b611cf16103db565b60443591611cfd6121d8565b8215611d7857611bc27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d528560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d65760003660031901126103d657602060405160018152f35b346103d65760203660031901126103d6576004358015158091036103d65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e1b6121d8565b60ff196006541660ff821617600655604051908152a1005b346103d6576101003660031901126103d657611e4d6103c5565b6001600160401b03906024358281116103d657611e6e9036906004016103ec565b91906044359084821682036103d657608435611e89816107cc565b60c4359586116103d657611ea46100199636906004016103ec565b94909360e4359660a4359460643593612a21565b346103d657611ec636610abb565b9190611ed06121d8565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610c4c57611f0c87611f068554610fcf565b8561269b565b8590601f8811600114611f6157509186808798936117d4956000805160206139ca8339815191529993611f56575b501b906000198460031b1c191617905560405193849384612680565b880135925038611f3a565b90601f198816611f7685600052602060002090565b9288905b828210611fca575050918893916000805160206139ca83398151915298996117d4969410611fb0575b505082811b0190556117c8565b870135600019600386901b60f8161c191690553880611fa3565b808685968294968c01358155019501930190611f7a565b346103d65760403660031901126103d657602060ff611503602435612005816107cc565b6004356000526010845260406000206118f2565b346103d65760003660031901126103d657602060ff600654166040519015158152f35b346103d65760203660031901126103d657600435612059816107cc565b6120616121d8565b6001600160a01b03908116801561209d57600080546001600160a01b031981168317825590921660008051602061398a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d65760803660031901126103d65761210a6103c5565b6121126103db565b9061211e6044356107cc565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c3576106a99160009161219c575b506040519182918261063d565b6121b7913d8091833e6121af8183610c51565b8101906125f5565b3861218f565b346103d65760003660031901126103d6576020604051308152f35b6000546001600160a01b031633036121ec57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ab657565b6051019081605111610ab657565b91908201809211610ab657565b1561227657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156122ce57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561239e57612383826000805160206139aa8339815191529461239994169661235c88151561226f565b61237d84612369836118d8565b54612376828210156122c7565b03916118d8565b556118d8565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156124b957821693841561246957806124587f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124536123999560018060a01b03166000526009602052604060002090565b6118f2565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b038216600052600960205261252a8160406000206118f2565b54926001840161253a5750505050565b8084106125555761254c9303916123f1565b38808080611036565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156125a157565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d6578051906001600160401b0382116103d6570181601f820112156103d657805161262781610c74565b926126356040519485610c51565b818452602082840101116103d65761064e91602080850191016105f5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61064e9593168152816020820152019161265f565b90601f81116126a957505050565b600091825260208220906020601f850160051c830194106126e5575b601f0160051c01915b8281106126da57505050565b8181556001016126ce565b90925082906126c5565b601319810191908211610ab657565b605019810191908211610ab657565b92909161277f5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906127798261276b61274a60a483018a610618565b6001600160401b038816606484015282810360231901608484015288610618565b03601f198101845283610c51565b306138cc565b93901561278e575b5050505050565b612797946127a1565b3880808080612787565b919361283f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561284d939561ffff8151602083012096169586600052600560205261280583610d9c60208b604060002082604051948386809551938492016105f5565b55612822604051978897885260a0602089015260a0880190610618565b6001600160401b0390921660408701528582036060870152610618565b908382036080850152610618565b0390a1565b6020919283604051948593843782019081520301902090565b1561287257565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6128e4939897969816845260806020850152608084019161265f565b6001600160401b0390951660408201520152565b903590601e19813603018212156103d657018035906001600160401b0382116103d6576020019181360383136103d657565b94919598979061125c61295360409961294b61295997612976993691610c8f565b943691610c8f565b97613263565b928451968794859463040a7bb160e41b8652309060048701612b11565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c35760009081936129b957509190565b905061047c91925060403d8111610a6457610a558183610c51565b9396949161064e98969361ffff6129f99316865260c0602087015260c086019161265f565b6001600160401b0390961660408401526060830152608082015280840360a09091015261265f565b91969792989594939094303303612ab657612a3d908530613669565b60405181815290946001600160a01b03169390849061ffff85169060008051602061396a83398151915290602090a3833b156103d6576000988995612a99936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016129d4565b0393f180156107c357612aa95750565b80611aac6110ba92610c39565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d6576020825192015190565b919261064e959361ffff612b409316845260018060a01b0316602084015260a0604084015260a0830190610618565b92151560608201526080818403910152610618565b92919060ff612b6384613871565b1680612cb65750505060ff612b7782613871565b161580612cab575b612b8890613379565b612b9a612b9482613821565b916138bc565b90916001600160a01b039182841615612ca1575b612be2907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166132e8565b918316928315612c5c5760008051602061396a83398151915291612c1c61ffff92612c17612c1287600a54612262565b600a55565b6118d8565b8481540190558460006000805160206139aa83398151915260405180612c4789829190602083019252565b0390a360405193845216918060208101612399565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612bae565b508051602914612b7f565b600103612cc6576110ba93612fac565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15612d1157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612d7761064e97959361ffff612d859416865260c0602087015260c0860190610618565b908482036040860152610618565b6001600160a01b0391821660608401529316608082015280830360a090910152610618565b94612dd39193929561ffff81166000526001602052612dda604060002060405194858092611009565b0384610c51565b825115612e5257612dec855182612eb0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d657600096612e4191604051998a988997889662c5803160e81b885260048801612d52565b03925af180156107c357612aa95750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612f15575b11612ed157565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612eca565b9897969293612f4960e0979361ffff612f7e9894168c5260208c61010091829101528c0190610618565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610618565b930152565b612f9b60409295949395606083526060830190610618565b94600180841b031660208201520152565b9091612fb78461342a565b9091612fe8612fe187611b96612fdb8b61ffff166000526007602052604060002090565b8c610d22565b5460ff1690565b916001600160401b039161301f907f00000000000000000000000000000000000000000000000000000000000000009084166132e8565b9288888b831561311b575b505050853b156130d057946130719694612779948a9461276b948d996000146130c95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612f1f565b90156130be5750906130b961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684612f83565b0390a2565b926110ba94926127a1565b1692613052565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061284d915050565b90611b966131509261314a8961313561315d979b30613619565b9961ffff166000526007602052604060002090565b90610d22565b805460ff19166001179055565b88888b61302a565b60065460ff16156131b25760228251106112635761ffff60226110ba930151911660005260026020526131a5604060002060008052602052604060002090565b549061122a8215156131ba565b50516112d457565b156131c157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561320a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156132e3576001600160401b039190048181116132a1571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b61324d565b81810292918115918404141715610ab657565b7f000000000000000000000000000000000000000000000000000000000000000080156132e357810690818103908111610ab65791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610c4c5760405290565b1561338057565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064e94604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b16606983015261341a81518092602086860191016105f5565b8101036051810184520182610c51565b90613442600160ff61343b85613871565b1614613379565b61344b82613821565b90613455836138bc565b9060498451106134c657604984015193605181511061348a5761348760518201519161348181516126fe565b9061379d565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036135b2575b801561356357816135388461352b6000956118d8565b54612376828210156135c2565b5561354683600a5403600a55565b6040518381526000805160206139aa83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6135bd83338461250a565b613515565b156135c957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612c5c57600a5490828201809211610ab65760009261365a6020926000805160206139aa83398151915294600a556118d8565b818154019055604051908152a3565b61064e9183916001600160a01b038116308114159081613695575b50156123225761092c83338361250a565b905033141538613684565b156136a757565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156136e457565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6137318261372a81612246565b10156136a0565b61373e82825110156136dd565b81613756575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061378a5750508252601f01601f191660405290565b9092835181526020809101930190613772565b6137aa8261372a81612246565b6137bf81516137b884612254565b11156136dd565b816137d7575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061380e5750508252601f01601f191660405290565b90928351815260208091019301906137f6565b602181511061383457602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613881576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061348a576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c4c5783926040526096875282602088019560a036883760208451940192f1903d9060968211613920575b6000908286523e9190565b6096915061391556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212201713392485520d0ab14bafefd1c0a1ae75b11ee3fe4c39e5bb6f142aee4d19c564736f6c63430008120033"; + "0x61010060409080825234620004cd5760608162003fe28038038091620000268285620004d2565b833981010312620004cd5780516001600160a01b039182821691829003620004cd57602080820151918483168303620004cd5785015193808516809503620004cd57620000726200050c565b906200007d6200050c565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003d457600b54916001968784811c94168015620004c2575b89851014620004ae578190601f948581116200045a575b508990858311600114620003f4578892620003e8575b5050600019600383901b1c191690871b17600b555b8051928311620003d457600c548681811c91168015620003c9575b88821014620003b55790818389959493116200035d575b5083918311600114620002f2576004949291869183620002e6575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002dc5790829189939162000291575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551613aa490816200053e82396080518181816104770152818161073601528181610852015281816109cd01528181610b8c01528181611898015281816119ea0152818161219e01528181612a170152612ec4015260a0518161133a015260c051818181612c6a015281816130cf0152818161334001526133da015260e05181611ca70152f35b80929350858092503d8311620002d4575b620002ae8183620004d2565b81010312620002d0575161ffff81168103620002d05787919061ffff620001c5565b5080fd5b503d620002a2565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034457509683600498106200032a575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200031b565b8289015184558b978b9690940193928301920162000306565b9091929350600c86528786208380860160051c8201928a8710620003ab575b9189918b97969594930160051c01915b8281106200039c57505062000162565b8881558a96508991016200038c565b925081926200037c565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000443575050841162000429575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200041a565b8385015186558d9790950194938401930162000407565b909150600b88528988208580850160051c8201928c8610620004a4575b918b91869594930160051c01915b8281106200049557505062000105565b8a81558594508b910162000485565b9250819262000477565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004f657604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004f65760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103a057806301ffc9a71461039b57806306fdde031461039657806307e0db1714610391578063095ea7b31461038c5780630df374831461038757806310ddb1371461038257806318160ddd1461031e57806323b872dd1461037d578063313ce56714610378578063365260b414610373578063395093511461036e5780633d8b38f6146103695780633f1f4fa41461036457806342d65a8d1461035f578063447705151461035a5780634c42899a1461035a5780635b8c41e6146103555780635c975abb1461035057806366ad5c8a1461034b578063695ef6bf1461034657806370a0823114610341578063715018a61461033c5780637533d7881461033757806376203b4814610332578063857749b01461032d5780638cfd8f5c146103285780638da5cb5b146103235780639358928b1461031e578063950c8a741461031957806395d89b41146103145780639bdb98121461030f5780639f38369a1461030a578063a457c2d714610305578063a4c51df514610300578063a6c3d165146102fb578063a9059cbb146102f6578063b353aaa7146102f1578063ba03a8d7146102ec578063baf3292d146102e7578063c4461834146102e2578063cbed8b9c146102dd578063ce8849ed146102d8578063d1deba1f146102d3578063dbd01de1146102ce578063dd62ed3e146102c9578063de406577146102c4578063df2a5b3b146102bf578063e6a20ae6146102ba578063eab45d9c146102b5578063eaffd49a146102b0578063eb8d72b7146102ab578063ec6d062b146102a6578063ed629c5c146102a1578063f2fde38b1461029c578063f5ecbdbc146102975763fc0c546a0361000e57612208565b61213c565b612075565b612052565b612008565b611ebe565b611e39565b611dd7565b611dbb565b611cd6565b611c91565b611c37565b611c0e565b611aab565b611a82565b61199e565b611981565b611911565b6118c7565b611882565b611858565b6116d5565b611646565b611588565b6114e9565b61149e565b6113fa565b6113d1565b6108b3565b6113a8565b61135e565b611320565b611106565b6110b3565b610f6b565b610f2e565b610e4f565b610dbb565b610d98565b610d31565b610bf3565b610b72565b610b3d565b610ae1565b610a4b565b61094b565b610911565b6108d1565b61082d565b6107f2565b6107bd565b610711565b610631565b610574565b610460565b6004359061ffff821682036103b657565b600080fd5b6024359061ffff821682036103b657565b9181601f840112156103b6578235916001600160401b0383116103b657602083818601950101116103b657565b9060806003198301126103b65760043561ffff811681036103b657916001600160401b03906024358281116103b65781610435916004016103cc565b9390939260443581811681036103b657926064359182116103b65761045c916004016103cc565b9091565b346103b65761046e366103f9565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361052f576104f46104fc92610019976104ed6104d36104ce8a61ffff166000526001602052604060002090565b611096565b8051908184149182610525575b5081610502575b50612638565b3691610c79565b923691610c79565b926127ab565b905061050f368486610c79565b60208151910120906020815191012014386104e7565b15159150386104e0565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103b65760203660031901126103b65760043563ffffffff60e01b81168091036103b657602090631f7ecdf760e01b81149081156105b9575b506040519015158152f35b6301ffc9a760e01b149050386105ae565b60009103126103b657565b60005b8381106105e85750506000910152565b81810151838201526020016105d8565b90602091610611815180928185528580860191016105d5565b601f01601f1916010190565b90602061062e9281815201906105f8565b90565b346103b65760008060031936011261070e5760405181600b5461065381610fc6565b808452906001908181169081156106e6575060011461068d575b6106898461067d81880382610c3d565b6040519182918261061d565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106d357505050816106899361067d928201019361066d565b80548585018701529285019281016106b7565b610689965061067d9450602092508593915060ff191682840152151560051b8201019361066d565b80fd5b346103b6576000602036600319011261070e5761072c6103a5565b610734612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107a357610797575080f35b6107a090610c25565b80f35b6126f1565b5080fd5b6001600160a01b038116036103b657565b346103b65760403660031901126103b6576107e76004356107dd816107ac565b6024359033612475565b602060405160018152f35b346103b65760403660031901126103b65761ffff61080e6103a5565b610816612223565b166000526003602052602435604060002055600080f35b346103b6576000602036600319011261070e576108486103a5565b610850612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107a857602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107a357610797575080f35b346103b65760003660031901126103b6576020600a54604051908152f35b346103b65760603660031901126103b6576107e76004356108f1816107ac565b6024356108fd816107ac565b6044359161090c8333836125a0565b61236d565b346103b65760003660031901126103b657602060405160128152f35b6064359081151582036103b657565b60a4359081151582036103b657565b346103b65760a03660031901126103b6576109646103a5565b61096c61092d565b90608435906001600160401b0382116103b6576109926104ed60409336906004016103cc565b906109c96109ac6109a460443561333e565b60243561340f565b928451958694859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107a3576000908192610a1a575b50604080519182526020820192909252f35b9050610a3d915060403d8111610a44575b610a358183610c3d565b810190612ba9565b9038610a08565b503d610a2b565b346103b65760403660031901126103b657600435610a68816107ac565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610aa2576107e79133612475565b61227b565b9060406003198301126103b65760043561ffff811681036103b65791602435906001600160401b0382116103b65761045c916004016103cc565b346103b657602061ffff610b2e610af736610aa7565b9390911660005260018452610b19610b20604060002060405192838092611000565b0382610c3d565b848151910120923691610c79565b82815191012014604051908152f35b346103b65760203660031901126103b65761ffff610b596103a5565b1660005260036020526020604060002054604051908152f35b346103b657610b8036610aa7565b9190610b8a612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b657604051928380926342d65a8d60e01b825281610be1600098899788946004850161271e565b03925af180156107a357610797575080f35b346103b65760003660031901126103b657602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c3857604052565b610c0f565b90601f801991011681019081106001600160401b03821117610c3857604052565b6001600160401b038111610c3857601f01601f191660200190565b929192610c8582610c5e565b91610c936040519384610c3d565b8294818452818301116103b6578281602093846000960137010152565b60606003198201126103b65760043561ffff811681036103b657916024356001600160401b03928382116103b657806023830112156103b657816024610cfb93600401359101610c79565b9160443590811681036103b65790565b602090610d259282604051948386809551938492016105d5565b82019081520301902090565b346103b6576020610d8f61ffff610d6e83610d4b36610cb0565b9490911660005260058252604060002082604051948386809551938492016105d5565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103b65760003660031901126103b657602060ff601154166040519015158152f35b346103b657610dc9366103f9565b9192949390303303610ded576104f4610de792610019973691610c79565b92612c03565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103b65790565b60a03660031901126103b657600435610e67816107ac565b610e6f6103bb565b604435916084356001600160401b0381116103b657602061ffff610ea6600080516020613a2f833981519152933690600401610e41565b93610f198535610eb5816107ac565b610ed36104ed8689013598610ec98a6107ac565b6040810190612995565b610edd818a61323b565b610ef2610eeb6064356133d8565b50856135e2565b97610efe891515612de0565b610f10610f0a8a61333e565b8c61340f565b9234938b612e80565b6040519485526001600160a01b0316941692a4005b346103b65760203660031901126103b657600435610f4b816107ac565b60018060a01b031660005260086020526020604060002054604051908152f35b346103b65760008060031936011261070e57610f85612223565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015610ff6575b6020831014610fe057565b634e487b7160e01b600052602260045260246000fd5b91607f1691610fd5565b906000929180549161101183610fc6565b9182825260019384811690816000146110735750600114611033575b50505050565b90919394506000526020928360002092846000945b83861061105f57505050500101903880808061102d565b805485870183015294019385908201611048565b9294505050602093945060ff191683830152151560051b0101903880808061102d565b906110b16110aa9260405193848092611000565b0383610c3d565b565b346103b65760203660031901126103b65761ffff6110cf6103a5565b166000526001602052610689610b196110f2604060002060405192838092611000565b6040519182916020835260208301906105f8565b60e03660031901126103b65760043561111e816107ac565b6111266103bb565b604435916001600160401b03906084358281116103b65761114b9036906004016103cc565b91909260a43591818316918284036103b65760c4359081116103b657611175903690600401610e41565b926111ac843595611185876107ac565b6111a461119a602088013597610ec9896107ac565b9990923691610c79565b973691610c79565b9460ff6006541660001461129f57602286511061125a5785602095610f10610f19946112288c61121561ffff9a8b6022600080516020613a2f8339815191529f0151931660005260028d5261120f60406000206001600052602052604060002090565b546122ad565b90611221821515613290565b10156132dc565b61123d6112366064356133d8565b50886135e2565b9a6112498c1515612de0565b8d6112538d61333e565b903361349c565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516112cc57600080516020613a2f8339815191529460209461ffff94610f10610f1994611228565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103b65760003660031901126103b657602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103b65760403660031901126103b6576020610d8f61137c6103a5565b61ffff6113876103bb565b91166000526002835260406000209061ffff16600052602052604060002090565b346103b65760003660031901126103b6576000546040516001600160a01b039091168152602090f35b346103b65760003660031901126103b6576004546040516001600160a01b039091168152602090f35b346103b65760008060031936011261070e5760405181600c5461141c81610fc6565b808452906001908181169081156106e65750600114611445576106898461067d81880382610c3d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061148b57505050816106899361067d928201019361066d565b805485850187015292850192810161146f565b346103b657602060ff6114dd61ffff610d6e846114ba36610cb0565b9490911660005260078252604060002082604051948386809551938492016105d5565b54166040519015158152f35b346103b65760203660031901126103b65761ffff6115056103a5565b166000526001602052610b19611525604060002060405192838092611000565b8051156115435761067d8161153d610689935161278d565b90613822565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103b65760403660031901126103b6576004356115a5816107ac565b602435903360005260096020526115d28160406000209060018060a01b0316600052602052604060002090565b54918083106115f3576115e792039033612475565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103b65760e03660031901126103b65761165f6103a5565b6001600160401b03906064358281116103b6576116809036906004016103cc565b60849291923584811681036103b65761169761093c565b9160c4359586116103b6576116b36116c39636906004016103cc565b95909460443590602435906129c7565b60408051928352602083019190915290f35b346103b6576116e336610aa7565b906116ec612223565b604051926020928083858701376117186034868381013060601b88820152036014810188520186610c3d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c38576117528361174c8654610fc6565b86612739565b80601f84116001146117c25750918080926117b19695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117b7575b50501b916000199060031b1c19161790555b6040519384938461271e565b0390a180f35b015192503880611793565b91939498601f1984166117da87600052602060002090565b938a905b828210611841575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117b198969410611828575b505050811b0190556117a5565b015160001960f88460031b161c1916905538808061181b565b8088869782949787015181550196019401906117de565b346103b65760403660031901126103b6576107e7600435611878816107ac565b602435903361236d565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760403660031901126103b657602060ff6114dd6024356118eb816107ac565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103b65760203660031901126103b6577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611951816107ac565b611959612223565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103b65760003660031901126103b65760206040516127108152f35b346103b65760803660031901126103b6576119b76103a5565b6119bf6103bb565b6064356001600160401b0381116103b6576119de9036906004016103cc565b90926119e8612223565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103b65760008094611a5f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916126fd565b03925af180156107a357611a6f57005b80611a7c61001992610c25565b806105ca565b346103b65760003660031901126103b657600e546040516001600160a01b039091168152602090f35b611ab4366103f9565b9161ffff86949296166000526005602052611afb81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611bbd57611bac8483611ba57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611b9184611b798e8a8f611bb89f908f611b5f90611b52611b739436908d610c79565b6020815191012014612908565b61ffff166000526005602052604060002090565b916128ef565b906001600160401b0316600052602052604060002090565b55611b9d36878d610c79565b933691610c79565b9188612c03565b6040519586958661295e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103b65760003660031901126103b657600d546040516001600160a01b039091168152602090f35b346103b65760403660031901126103b6576020610d8f600435611c59816107ac565b60243590611c66826107ac565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b65760603660031901126103b657611cef6103a5565b611cf76103bb565b60443591611d03612223565b8215611d7e57611bb87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611d588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103b65760003660031901126103b657602060405160018152f35b346103b65760203660031901126103b6576004358015158091036103b65760207f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a491611e21612223565b60ff196006541660ff821617600655604051908152a1005b346103b6576101003660031901126103b657611e536103a5565b6001600160401b03906024358281116103b657611e749036906004016103cc565b91906044359084821682036103b657608435611e8f816107ac565b60c4359586116103b657611eaa6100199636906004016103cc565b94909360e4359660a4359460643593612abd565b346103b657611ecc36610aa7565b9190611ed6612223565b60009161ffff81168352600160209080825260408520916001600160401b038711610c3857611f0f87611f098554610fc6565b85612739565b8590601f8811600114611f7657509186808798936117b1957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993611f6b575b501b906000198460031b1c19161790556040519384938461271e565b880135925038611f4f565b90601f198816611f8b85600052602060002090565b9288905b828210611ff1575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117b1969410611fd7575b505082811b0190556117a5565b870135600019600386901b60f8161c191690553880611fca565b808685968294968c01358155019501930190611f8f565b346103b65760403660031901126103b657602060ff6114dd60243561202c816107ac565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103b65760003660031901126103b657602060ff600654166040519015158152f35b346103b65760203660031901126103b657600435612092816107ac565b61209a612223565b6001600160a01b0390811680156120e857600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b65760803660031901126103b6576121556103a5565b61215d6103bb565b906121696044356107ac565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107a357610689916000916121e7575b506040519182918261061d565b612202913d8091833e6121fa8183610c3d565b810190612693565b386121da565b346103b65760003660031901126103b6576020604051308152f35b6000546001600160a01b0316330361223757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610aa257565b6051019081605111610aa257565b91908201809211610aa257565b156122c157565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561231957565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124225761240782600080516020613a4f8339815191529461241d9416966123a78815156122ba565b6001600160a01b03811660009081526008602052604090206123ec908590546123d282821015612312565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561254f5782169384156124ff57806124ee7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946124d761241d9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016125d85750505050565b8084106125f3576125ea930391612475565b3880808061102d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561263f57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103b6578051906001600160401b0382116103b6570181601f820112156103b65780516126c581610c5e565b926126d36040519485610c3d565b818452602082840101116103b65761062e91602080850191016105d5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61062e959316815281602082015201916126fd565b90601f811161274757505050565b600091825260208220906020601f850160051c83019410612783575b601f0160051c01915b82811061277857505050565b81815560010161276c565b9092508290612763565b601319810191908211610aa257565b605019810191908211610aa257565b92909161281d5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290612817826128096127e860a483018a6105f8565b6001600160401b0388166064840152828103602319016084840152886105f8565b03601f198101845283610c3d565b306139d1565b93901561282c575b5050505050565b6128359461283f565b3880808080612825565b91936128dc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956128ea939561ffff815160208301209616958660005260056020526128a383610d6e60208b604060002082604051948386809551938492016105d5565b556001600160401b036128c8604051988998895260a060208a015260a08901906105f8565b9216604087015285820360608701526105f8565b9083820360808501526105f8565b0390a1565b6020919283604051948593843782019081520301902090565b1561290f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161298a9060609461ffff6001600160401b0394999897991685526080602086015260808501916126fd565b951660408201520152565b903590601e19813603018212156103b657018035906001600160401b0382116103b6576020019181360383136103b657565b9491959897906112536129f06040996129e86129f697612a13993691610c79565b943691610c79565b9761333e565b928451968794859463040a7bb160e41b8652309060048701612bbf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107a3576000908193612a5657509190565b905061045c91925060403d8111610a4457610a358183610c3d565b93969491612a9f9061062e99979461ffff6001600160401b039416875260c0602088015260c08701916126fd565b961660408401526060830152608082015260a08185039101526126fd565b91969792989594939094303303612b6457612ad990853061376e565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103b6576000988995612b47936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01612a71565b0393f180156107a357612b575750565b80611a7c6110b192610c25565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103b6576020825192015190565b919261062e959361ffff612bee9316845260018060a01b0316602084015260a0604084015260a08301906105f8565b921515606082015260808184039101526105f8565b92919060ff612c1184613976565b1680612d8b5750505060ff612c2582613976565b161580612d80575b612c3690613455565b612c48612c4282613926565b916139c1565b90916001600160a01b039182841615612d76575b612c90906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166133c5565b918316928315612d31577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91612cf161ffff92612cd7612cd287600a546122ad565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020613a4f83398151915260405180612d1c89829190602083019252565b0390a36040519384521691806020810161241d565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350612c5c565b508051602914612c2d565b600103612d9b576110b193613083565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15612de757565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92612e4d61062e97959361ffff612e5b9416865260c0602087015260c08601906105f8565b9084820360408601526105f8565b6001600160a01b0391821660608401529316608082015280830360a0909101526105f8565b94612ea99193929561ffff81166000526001602052612eb0604060002060405194858092611000565b0384610c3d565b825115612f2857612ec2855182612f86565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103b657600096612f1791604051998a988997889662c5803160e81b885260048801612e28565b03925af180156107a357612b575750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115612feb575b11612fa757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150612fa0565b98979692936001600160401b0361302760e0989461ffff6130539995168d5260208d61010091829101528d01906105f8565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526105f8565b930152565b6001600160401b03613078604093969594966060845260608401906105f8565b951660208201520152565b909161308e84613509565b90916130bf6130b887611b796130b28b61ffff166000526007602052604060002090565b8c610d0b565b5460ff1690565b916130f56001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166133c5565b9288888b83156131f1575b505050853b156131a657946131479694612817948a94612809948d9960001461319f5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01612ff5565b901561319457509061318f61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613058565b0390a2565b926110b1949261283f565b1692613128565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506128ea915050565b90611b79613226926132208961320b613233979b3061370b565b9961ffff166000526007602052604060002090565b90610d0b565b805460ff19166001179055565b88888b613100565b60065460ff161561328857602282511061125a5761ffff60226110b19301519116600052600260205261327b604060002060008052602052604060002090565b5490611221821515613290565b50516112cc57565b1561329757565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156132e357565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156133c057046001600160401b039081811161337b571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613328565b81810292918115918404141715610aa257565b7f000000000000000000000000000000000000000000000000000000000000000080156133c057810690818103908111610aa25791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c385760405290565b1561345c57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261062e94604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526134f981518092602086860191016105d5565b8101036051810184520182610c3d565b90613521600160ff61351a85613976565b1614613455565b61352a82613926565b90613534836139c1565b9060498451106135a557604984015193605181511061356957613566605182015191613560815161279c565b906138a2565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036136a4575b8015613655578161362a8461361d60009560018060a01b03166000526008602052604060002090565b546123d2828210156136b4565b5561363883600a5403600a55565b604051838152600080516020613a4f83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6136af8333846125a0565b6135f4565b156136bb57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215612d3157600a5490828201809211610aa25760009261375f602092600080516020613a4f83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b61062e9183916001600160a01b03811630811415908161379a575b501561236d5761090c8333836125a0565b905033141538613789565b156137ac57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156137e957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6138368261382f81612291565b10156137a5565b61384382825110156137e2565b8161385b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061388f5750508252601f01601f191660405290565b9092835181526020809101930190613877565b6138af8261382f81612291565b6138c481516138bd8461229f565b11156137e2565b816138dc575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106139135750508252601f01601f191660405290565b90928351815260208091019301906138fb565b602181511061393957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110613986576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613569576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c385783926040526096875282602088019560a036883760208451940192f1903d9060968211613a25575b6000908286523e9190565b60969150613a1a56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c25d7c691873a765a5c4266b2b4db1f90460b6eca7694711c59c03ff687f8fe964736f6c63430008120033"; type BaseUSDOStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/BaseUSDO__factory.ts b/src/typechain/tapioca-bar/factories/usd0/BaseUSDO__factory.ts index 26ff4e51..dd956873 100644 --- a/src/typechain/tapioca-bar/factories/usd0/BaseUSDO__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/BaseUSDO__factory.ts @@ -31,17 +31,37 @@ const _abi = [ }, { internalType: "address payable", - name: "_leverageModule", + name: "__leverageModule", type: "address", }, { internalType: "address payable", - name: "_marketModule", + name: "__leverageDestinationModule", type: "address", }, { internalType: "address payable", - name: "_optionsModule", + name: "__marketModule", + type: "address", + }, + { + internalType: "address payable", + name: "__marketDestinationModule", + type: "address", + }, + { + internalType: "address payable", + name: "__optionsModule", + type: "address", + }, + { + internalType: "address payable", + name: "__optionsDestinationModule", + type: "address", + }, + { + internalType: "address payable", + name: "__genericModule", type: "address", }, ], @@ -104,63 +124,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -1033,7 +996,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -1131,19 +1094,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1239,6 +1189,197 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "collateralAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + internalType: "uint256", + name: "amountOutMin", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct IUSDOBase.ILeverageSwapData", + name: "swapData", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "srcExtraGasLimit", + type: "uint256", + }, + { + internalType: "uint16", + name: "lzSrcChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "dstAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "bytes", + name: "srcAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageLZData", + name: "lzData", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "swapper", + type: "address", + }, + { + internalType: "address", + name: "magnetar", + type: "address", + }, + { + internalType: "address", + name: "tOft", + type: "address", + }, + { + internalType: "address", + name: "srcMarket", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageExternalContractsData", + name: "externalData", + type: "tuple", + }, + { + internalType: "bytes", + name: "airdropAdapterParams", + type: "bytes", + }, + { + components: [ + { + internalType: "bool", + name: "permitAll", + type: "bool", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", + }, + { + internalType: "uint16", + name: "actionType", + type: "uint16", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "permitBorrow", + type: "bool", + }, + { + 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", + }, + ], + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", + }, + ], + name: "initMultiHopBuy", + outputs: [], + stateMutability: "payable", + type: "function", + }, { inputs: [ { @@ -1263,19 +1404,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "leverageModule", - outputs: [ - { - internalType: "contract USDOLeverageModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lzEndpoint", @@ -1317,32 +1445,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "marketModule", - outputs: [ - { - internalType: "contract USDOMarketModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1427,19 +1529,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "optionsModule", - outputs: [ - { - internalType: "contract USDOOptionsModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "owner", @@ -1750,7 +1839,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2061,7 +2150,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2339,6 +2428,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + name: "setCluster", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -2380,32 +2482,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [ - { - internalType: "uint256", - name: "_val", - type: "uint256", - }, - ], - name: "setFlashMintFee", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_val", - type: "uint256", - }, - ], - name: "setMaxFlashMintable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -2743,7 +2819,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2872,7 +2948,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101c08060405234620008085760e08162005f3c803803809162000024828562000829565b83398101031262000808576200003a816200084d565b6020820151916001600160a01b0383168303620008085760408101516001600160a01b03811690819003620008085762000077606083016200084d565b9362000086608084016200084d565b90620000a360c06200009b60a087016200084d565b95016200084d565b9260405191620000b3836200080d565b60048352635553444f60e01b80602085015260405197620000d4896200080d565b60018952603160f81b60208a015260405190620000f1826200080d565b60048252826020830152604051926200010a846200080d565b6004845260208401526200011e3362000862565b6001600160a01b0316608052600860a0528051906001600160401b0382116200055757600b5490600182811c92168015620007fd575b6020831014620006d35781601f8493116200078b575b50602090601f83116001146200070057600092620006f4575b50508160011b916000199060031b1c191617600b555b8051906001600160401b0382116200055757600c5490600182811c92168015620006e9575b6020831014620006d35781601f84931162000661575b50602090601f8311600114620005d257600092620005c6575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa908115620005ba576000916200056d575b5061ffff1680600052600f6020526040600020336000526020526040600020600160ff1982541617905560005260106020526040600020336000526020526040600020600160ff19825416179055600a60125569152d02c7e14af680000060135560e05260018060a01b0319600d541617600d556020815191012093602081519101208461016052806101805246610120526040519460008051602062005f1c8339815191526020870152604086015260608501524660808501523060a085015260a084528360c081011060018060401b0360c086011117620005575760c084016040908152845160208087019190912061010052306101405260008051602062005f1c8339815191526101a052601780546001600160a01b039485166001600160a01b03199182168117909255601880549786169782168817905560198054968616969091168617905560009081526014909152818120805460ff1990811660019081179092559582528282208054871682179055938152908120805490941690921790925554339116036200050f57506001600160a01b03811615620004bb57620003f09062000862565b6040516156729081620008aa82396080518181816105ac0152818161086f015281816109ab01528181610c7501528181610e28015281816120c5015281816123a201528181612de201528181613e92015281816145fc01526148bb015260a051816117f0015260c051818181614a3501528181614c1001528181614e7d0152614f15015260e051816127d1015261010051816135790152610120518161363401526101405181613543015261016051816135c8015261018051816135ee01526101a051816135a50152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b60c060649162461bcd60e51b82820152602060c4820152602060e48201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657261010482015201fd5b634e487b7160e01b600052604160045260246000fd5b6020813d602011620005b1575b81620005896020938362000829565b81010312620005ad57519061ffff82168203620005aa575061ffff62000243565b80fd5b5080fd5b3d91506200057a565b6040513d6000823e3d90fd5b015190503880620001ed565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f198416851062000645576001945083601f198116106200062b575b505050811b01600c5562000203565b015160001960f88460031b161c191690553880806200061c565b81810151835560209485019460019093019290910190620005ff565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c810160208510620006cb575b90849392915b601f830160051c82018110620006bb575050620001d4565b60008155859450600101620006a3565b50806200069d565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001be565b01519050388062000183565b600b60009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99350601f198516905b81811062000772575090846001959493921062000758575b505050811b01600b5562000199565b015160001960f88460031b161c1916905538808062000749565b9293602060018192878601518155019501930162000731565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c810160208510620007f5575b90849392915b601f830160051c82018110620007e55750506200016a565b60008155859450600101620007cd565b5080620007c7565b91607f169162000154565b600080fd5b604081019081106001600160401b038211176200055757604052565b601f909101601f19168101906001600160401b038211908210176200055757604052565b51906001600160a01b03821682036200080857565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104e057806301ffc9a7146104db57806306fdde03146104d657806307e0db17146104d1578063095ea7b3146104cc5780630df37483146104c757806310ddb137146104c257806316d995a9146104bd57806318160ddd1461043b5780631d2a0e3d146104b857806323b872dd146104b3578063313ce567146104ae5780633644e515146104a9578063365260b4146104a4578063395093511461049f5780633d8b38f61461049a5780633f1f4fa41461049557806342d65a8d14610490578063447705151461048b5780634c42899a1461048b5780635b8c41e6146104865780635c975abb1461048157806366ad5c8a1461047c578063695ef6bf1461047757806370a0823114610472578063715018a61461046d5780637533d7881461046857806376203b4814610463578063796fd43a1461045e5780637ecebe0014610459578063857749b01461045457806389dd56021461044f5780638cfd8f5c1461044a5780638da5cb5b146104455780639169d59e146104405780639358928b1461043b578063940a1dc014610436578063950c8a7414610431578063952168c51461042c57806395d89b41146104275780639bdb9812146104225780639d3f4d1a1461041d5780639f38369a14610418578063a457c2d714610413578063a4c51df51461040e578063a6c3d16514610409578063a9059cbb14610404578063b02f69a2146103ff578063b25ea8fb146103fa578063b353aaa7146103f5578063ba03a8d7146103f0578063baf3292d146103eb578063c056a8de146103e6578063c4461834146103e1578063cbed8b9c146103dc578063ce8849ed146103d7578063cfd8b3d8146103d2578063d1deba1f146103cd578063d505accf146103c8578063dbd01de1146103c3578063dd62ed3e146103be578063de406577146103b9578063df2a5b3b146103b4578063e6a20ae6146103af578063e78eb946146103aa578063eab45d9c146103a5578063eaffd49a146103a0578063eb8d72b71461039b578063ec6d062b14610396578063ed629c5c14610391578063f00c298d1461038c578063f2fde38b14610387578063f5b33dfa14610382578063f5ecbdbc1461037d578063f8974de014610378578063fa74f0b5146103735763fc0c546a0361000e57612f3d565b612ec5565b612e4c565b612d78565b612d4f565b612c9a565b612c28565b612c05565b612bcd565b612aa4565b612a1b565b6129bd565b612918565b6128ed565b612800565b6127bb565b612771565b612748565b6125e7565b61248c565b612463565b61243a565b61234e565b612331565b6121f1565b61215d565b612125565b6120af565b612038565b611f91565b611f47565b611de5565b611d54565b611ca8565b611c05565b611be7565b611b9c565b611af8565b6119d5565b61197b565b61195d565b610a64565b6118c5565b61189c565b61183d565b611814565b6117d6565b611799565b611610565b6113f3565b61139c565b611268565b61122b565b611148565b611092565b61106f565b61101b565b610e8f565b610e0e565b610dd5565b610d79565b610cf1565b610bef565b610b72565b610b56565b610b16565b610a82565b610a0c565b610982565b610943565b61090e565b610846565b610766565b6106a9565b610595565b61ffff8116036104f157565b600080fd5b3590610501826104e5565b565b9181601f840112156104f1578235916001600160401b0383116104f157602083818601950101116104f157565b9060806003198301126104f157600435610549816104e5565b916001600160401b03906024358281116104f1578161056a91600401610503565b9390939260443581811681036104f157926064359182116104f15761059191600401610503565b9091565b346104f1576105a336610530565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106645761062961063192610019976106226106086106038a61ffff166000526001602052604060002090565b611381565b805190818414918261065a575b5081610637575b50613fbc565b3691610f4d565b923691610f4d565b926140da565b9050610644368486610f4d565b602081519101209060208151910120143861061c565b1515915038610615565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104f15760203660031901126104f15760043563ffffffff60e01b81168091036104f157602090631f7ecdf760e01b81149081156106ee575b506040519015158152f35b6301ffc9a760e01b149050386106e3565b60009103126104f157565b60005b83811061071d5750506000910152565b818101518382015260200161070d565b906020916107468151809281855285808601910161070a565b601f01601f1916010190565b90602061076392818152019061072d565b90565b346104f1576000806003193601126108435760405181600b54610788816112b1565b8084529060019081811690811561081b57506001146107c2575b6107be846107b281880382610f0f565b60405191829182610752565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061080857505050816107be936107b292820101936107a2565b80548585018701529285019281016107ec565b6107be96506107b29450602092508593915060ff191682840152151560051b820101936107a2565b80fd5b346104f1576000602036600319011261084357600435610865816104e5565b61086d612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108dc576108d0575080f35b6108d990610ec1565b80f35b6134bc565b5080fd5b6001600160a01b038116036104f157565b60643590610501826108e5565b3590610501826108e5565b346104f15760403660031901126104f15761093860043561092e816108e5565b6024359033613171565b602060405160018152f35b346104f15760403660031901126104f15761ffff600435610963816104e5565b61096b612f58565b166000526003602052602435604060002055600080f35b346104f15760006020366003190112610843576004356109a1816104e5565b6109a9612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108e157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108dc576108d0575080f35b346104f15760203660031901126104f157600435610a28612f58565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610a5c60405192839283610bde565b0390a1601355005b346104f15760003660031901126104f1576020600a54604051908152f35b346104f15760203660031901126104f157600435610a9e612f58565b620f4240811015610ae5577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610add60405192839283610bde565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b346104f15760603660031901126104f157610938600435610b36816108e5565b602435610b42816108e5565b60443591610b5183338361328a565b6130a2565b346104f15760003660031901126104f157602060405160128152f35b346104f15760003660031901126104f1576020610b8d613540565b604051908152f35b6064359081151582036104f157565b6024359081151582036104f157565b60a4359081151582036104f157565b6004359081151582036104f157565b359081151582036104f157565b908152602081019190915260400190565b346104f15760a03660031901126104f157600435610c0c816104e5565b610c14610b95565b90608435906001600160401b0382116104f157610c3a6106226040933690600401610503565b90610c71610c54610c4c604435614e7b565b602435614f4a565b928451958694859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108dc576000908192610cc0575b506107be60405192839283610bde565b9050610ce3915060403d8111610cea575b610cdb8183610f0f565b81019061477d565b9038610cb0565b503d610cd1565b346104f15760403660031901126104f157600435610d0e816108e5565b336000526009602052610d2581604060002061210e565b546024358101809111610d3c576109389133613171565b612fb0565b9060406003198301126104f157600435610d5a816104e5565b91602435906001600160401b0382116104f15761059191600401610503565b346104f157602061ffff610dc6610d8f36610d41565b9390911660005260018452610db1610db86040600020604051928380926112eb565b0382610f0f565b848151910120923691610f4d565b82815191012014604051908152f35b346104f15760203660031901126104f15761ffff600435610df5816104e5565b1660005260036020526020604060002054604051908152f35b346104f157610e1c36610d41565b9190610e26612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104f157604051928380926342d65a8d60e01b825281610e7d600098899788946004850161404d565b03925af180156108dc576108d0575080f35b346104f15760003660031901126104f157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610ed457604052565b610eab565b60c081019081106001600160401b03821117610ed457604052565b604081019081106001600160401b03821117610ed457604052565b601f909101601f19168101906001600160401b03821190821017610ed457604052565b6001600160401b038111610ed457601f01601f191660200190565b929192610f5982610f32565b91610f676040519384610f0f565b8294818452818301116104f1578281602093846000960137010152565b60606003198201126104f157600435610f9c816104e5565b916001600160401b0391602435908382116104f157806023830112156104f157816024610fce93600401359101610f4d565b9160443590811681036104f15790565b602090610ff892826040519483868095519384920161070a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b346104f157602061106661ffff6110588361103536610f84565b94909116600052600582526040600020826040519483868095519384920161070a565b820190815203019020611004565b54604051908152f35b346104f15760003660031901126104f157602060ff601154166040519015158152f35b346104f1576110a036610530565b91929493903033036110c4576106296110be92610019973691610f4d565b92614261565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104f15760c490565b60609060a31901126104f15760a490565b908160609103126104f15790565b60a03660031901126104f157600435611160816108e5565b60243561116c816104e5565b604435916084356001600160401b0381116104f157602061ffff6111a360008051602061557d83398151915293369060040161113a565b9361121685356111b2816108e5565b6111d061062286890135986111c68a6108e5565b604081019061457a565b6111da818a614d7d565b6111ef6111e8606435614f13565b508561511b565b976111fb8915156147d7565b61120d6112078a614e7b565b8c614f4a565b9234938b614877565b6040519485526001600160a01b0316941692a4005b346104f15760203660031901126104f157600435611248816108e5565b60018060a01b031660005260086020526020604060002054604051908152f35b346104f15760008060031936011261084357611282612f58565b80546001600160a01b03198116825581906001600160a01b03166000805160206155dd8339815191528280a380f35b90600182811c921680156112e1575b60208310146112cb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916112c0565b90600092918054916112fc836112b1565b91828252600193848116908160001461135e575060011461131e575b50505050565b90919394506000526020928360002092846000945b83861061134a575050505001019038808080611318565b805485870183015294019385908201611333565b9294505050602093945060ff191683830152151560051b01019038808080611318565b9061050161139592604051938480926112eb565b0383610f0f565b346104f15760203660031901126104f15761ffff6004356113bc816104e5565b1660005260016020526107be610db16113df6040600020604051928380926112eb565b60405191829160208352602083019061072d565b60e03660031901126104f15760043561140b816108e5565b602435611417816104e5565b604435916001600160401b03906084358281116104f15761143c903690600401610503565b91909260a43591818316918284036104f15760c4359081116104f15761146690369060040161113a565b9261149d843595611476876108e5565b61149561148b6020880135976111c6896108e5565b9990923691610f4d565b973691610f4d565b9460ff6006541660001461158f57602286511061154b578560209561120d611216946115198c61150661ffff9a8b602260008051602061557d8339815191529f0151931660005260028d5261150060406000206001600052602052604060002090565b54612fe2565b90611512821515614dd2565b1015614e1b565b61152e611527606435614f13565b508861511b565b9a61153a8c15156147d7565b8d6115448d614e7b565b9033614fd8565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516115bc5760008051602061557d8339815191529460209461ffff9461120d61121694611519565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60031961010036820181136104f1576024359161162c836108e5565b604435926001600160401b038085116104f15760e0856004019386360301126104f1576064359081116104f15761166790369060040161113a565b9160803660831901126104f157610019946117949361176961175e60c461175761177a966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356116d1816104e5565b166101448a01526116f560448801356116e9816104e5565b61ffff166101648b0152565b61170f61170460648901610903565b6101848b019061188f565b6117436117388a6101a460e061172860848d0187613732565b92909301526102048d0191613711565b9160a4890190613732565b8a830361012319016101c48c015290613711565b9401610903565b6101e486019061188f565b838203602319016084850152613b60565b61178660a48301613b94565b03601f198101835282610f0f565b613e53565b346104f15760203660031901126104f1576004356117b6816108e5565b60018060a01b031660005260156020526020604060002054604051908152f35b346104f15760003660031901126104f157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104f15760003660031901126104f1576019546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f157602061106660043561185f816104e5565b61ffff6024359161186f836104e5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b346104f15760003660031901126104f1576000546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576004356118e2816108e5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d7602061190d610ba4565b92611916612f58565b61191e613e7d565b600052601082526119488461193783604060002061210e565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104f15760003660031901126104f1576020601254604051908152f35b346104f15760003660031901126104f1576004546040516001600160a01b039091168152602090f35b9181601f840112156104f1578235916001600160401b0383116104f1576020808501946101a085020101116104f157565b60a03660031901126104f1576004356119ed816104e5565b6001600160401b03906024358281116104f157611a0e903690600401610503565b90916064358481116104f157611a2890369060040161113a565b936084359081116104f1576100199461ffff94611af394611ae4611a83611a566117869636906004016119a4565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613711565b60443560648801526060611ad460231996878a85030160848b01528035611aa9816108e5565b6001600160a01b0390811685526020820135611ac4816108e5565b1660208501526040810190613732565b9190928160408201520191613711565b928584030160a4860152613764565b613d7e565b346104f1576000806003193601126108435760405181600c54611b1a816112b1565b8084529060019081811690811561081b5750600114611b43576107be846107b281880382610f0f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b8957505050816107be936107b292820101936107a2565b8054858501870152928501928101611b6d565b346104f157602060ff611bdb61ffff61105884611bb836610f84565b94909116600052600782526040600020826040519483868095519384920161070a565b54166040519015158152f35b346104f15760003660031901126104f1576020601354604051908152f35b346104f15760203660031901126104f15761ffff600435611c25816104e5565b166000526001602052610db1611c456040600020604051928380926112eb565b805115611c63576107b281611c5d6107be93516140bc565b90615335565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104f15760403660031901126104f157600435611cc5816108e5565b60243590336000526009602052611ce081604060002061210e565b5491808310611d0157611cf592039033613171565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104f15760e03660031901126104f157600435611d71816104e5565b6001600160401b03906064358281116104f157611d92903690600401610503565b60849291923584811681036104f157611da9610bb3565b9160c4359586116104f157611dc5611dd5963690600401610503565b95909460443590602435906145ac565b906107be60405192839283610bde565b346104f157611df336610d41565b90611dfc612f58565b60405192602092808385870137611e286034868381013060601b88820152036014810188520186610f0f565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610ed457611e6583611e5f86546112b1565b86614068565b80601f8411600114611ec3575091808092611eb29695948a9b60008051602061559d8339815191529b94611eb8575b50501b916000199060031b1c19161790555b6040519384938461404d565b0390a180f35b015192503880611e94565b91939498601f198416611edb87600052602060002090565b938a905b828210611f305750509160008051602061559d833981519152999a95939185611eb298969410611f17575b505050811b019055611ea6565b015160001960f88460031b161c19169055388080611f0a565b808886978294978701518155019601940190611edf565b346104f15760403660031901126104f157610938600435611f67816108e5565b60243590336130a2565b6101e09060831901126104f157608490565b908160a09103126104f15790565b6102c03660031901126104f157600435611faa816108e5565b602435611fb6816108e5565b60443591611fc3836104e5565b611fcb6108f6565b92611fd536611f71565b6001600160401b0394610264358681116104f157611ff79036906004016119a4565b929091610284358881116104f157612013903690600401611f83565b946102a4359889116104f157612030610019993690600401610503565b989097613c5c565b346104f15760403660031901126104f157602435612055816108e5565b61205d612f58565b60008080808094600435905af16120726136a0565b501561207b5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b346104f15760403660031901126104f157602060ff611bdb602435612149816108e5565b600435600052600f8452604060002061210e565b346104f15760203660031901126104f1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561219d816108e5565b6121a5612f58565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104f157600490565b60c0906101231901126104f15761012490565b610220806003193601126104f157612208366121cd565b61221136611118565b9161221b366121de565b906001600160401b03906101e4358281116104f15761223e9036906004016119a4565b90916102049384359081116104f15761225b903690600401610503565b94909560405198899863602b546f60e11b60208b0152803561227c816108e5565b6001600160a01b0390811660248c015280602083013561229b816108e5565b1660448c0152604082013560648c0152606082013560848c015260808201356122c3816108e5565b1660a48b015260a0013560c48a015260e489016122df91613884565b61014488016122ed916138bc565b8601526102448501906122ff92613764565b906023198483030161022485015261231692613711565b03601f19810182526123289082610f0f565b61001990613d7e565b346104f15760003660031901126104f15760206040516127108152f35b346104f15760803660031901126104f15760043561236b816104e5565b602435612377816104e5565b6064356001600160401b0381116104f157612396903690600401610503565b90926123a0612f58565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104f15760008094612417604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613711565b03925af180156108dc5761242757005b8061243461001992610ec1565b806106ff565b346104f15760003660031901126104f157600e546040516001600160a01b039091168152602090f35b346104f15760003660031901126104f1576018546040516001600160a01b039091168152602090f35b61249536610530565b9161ffff869492961660005260056020526124c981604060002060206040518092878b833787820190815203019020611004565b549182156125785761256784836125607fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a600061254c846125478e8a8f6125739f908f61252d906125206125419436908d610f4d565b60208151910120146144ed565b61ffff166000526005602052604060002090565b916144d4565b611004565b5561255836878d610f4d565b933691610f4d565b9188614261565b60405195869586614543565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff821682036104f157565b359060ff821682036104f157565b346104f15760e03660031901126104f157600435612604816108e5565b602435612610816108e5565b60443590606435926126206125c9565b93804211612703576126eb6126fe916126c5610019976126d361265e8760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610f0f565b6126e660c4359360a4359351902061365a565b613366565b6001600160a01b0383811691161461331a565b613171565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104f15760003660031901126104f157600d546040516001600160a01b039091168152602090f35b346104f15760403660031901126104f1576020611066600435612793816108e5565b602435906127a0826108e5565b6001600160a01b03166000908152600984526040902061210e565b346104f15760003660031901126104f1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104f15760603660031901126104f15760043561281d816104e5565b602435612829816104e5565b60443591612835612f58565b82156128b0576125737f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff831660005260026020528061288a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104f15760003660031901126104f157602060405160018152f35b90816101c09103126104f15790565b6101403660031901126104f157600435612931816108e5565b60243561293d816108e5565b6044359161294a836104e5565b6129526108f6565b6001600160401b0393906084358581116104f157612974903690600401610503565b9061297e36611129565b92610104358881116104f157612998903690600401612909565b94610124359889116104f1576129b56100199936906004016119a4565b989097613a7e565b346104f15760203660031901126104f1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206129f9610bc2565b612a01612f58565b151560ff196006541660ff821617600655604051908152a1005b346104f1576101003660031901126104f157600435612a39816104e5565b6001600160401b03906024358281116104f157612a5a903690600401610503565b91906044359084821682036104f157608435612a75816108e5565b60c4359586116104f157612a90610019963690600401610503565b94909360e4359660a43594606435936146a3565b346104f157612ab236610d41565b9190612abc612f58565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610ed457612af887612af285546112b1565b85614068565b8590601f8811600114612b4d5750918680879893611eb29560008051602061561d8339815191529993612b42575b501b906000198460031b1c19161790556040519384938461404d565b880135925038612b26565b90601f198816612b6285600052602060002090565b9288905b828210612bb65750509188939160008051602061561d8339815191529899611eb2969410612b9c575b505082811b019055611ea6565b870135600019600386901b60f8161c191690553880612b8f565b808685968294968c01358155019501930190612b66565b346104f15760403660031901126104f157602060ff611bdb602435612bf1816108e5565b60043560005260108452604060002061210e565b346104f15760003660031901126104f157602060ff600654166040519015158152f35b346104f15760403660031901126104f157600435612c45816108e5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612c70610ba4565b92612c79612f58565b612c81613e7d565b600052600f82526119488461193783604060002061210e565b346104f15760203660031901126104f157600435612cb7816108e5565b612cbf612f58565b6001600160a01b039081168015612cfb57600080546001600160a01b03198116831782559092166000805160206155dd8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104f15760003660031901126104f1576017546040516001600160a01b039091168152602090f35b346104f15760803660031901126104f157600435612d95816104e5565b60243590612da2826104e5565b612dad6044356108e5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc576107be91600091612e2b575b5060405191829182610752565b612e46913d8091833e612e3e8183610f0f565b810190614017565b38612e1e565b346104f15760203660031901126104f157612e65610bc2565b612e7a60018060a01b03600e541633146136d0565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104f15760203660031901126104f157600435612ee2816108e5565b612eea612f58565b6001600160a01b0390811690612f018215156136d0565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b346104f15760003660031901126104f1576020604051308152f35b6000546001600160a01b03163303612f6c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d3c57565b6051019081605111610d3c57565b91908201809211610d3c57565b15612ff657565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561304e57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561311e57613103826000805160206155fd833981519152946131199416966130dc881515612fef565b6130fd846130e9836120f4565b546130f682821015613047565b03916120f4565b556120f4565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156132395782169384156131e957806131d87f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946131d36131199560018060a01b03166000526009602052604060002090565b61210e565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b03821660005260096020526132aa81604060002061210e565b5492600184016132ba5750505050565b8084106132d5576132cc930391613171565b38808080611318565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561332157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107639391613375936134c8565b91909161339d565b6005111561338757565b634e487b7160e01b600052602160045260246000fd5b6133a68161337d565b806133ae5750565b6133b78161337d565b600181036134035760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b61340c8161337d565b600281036134595760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061346560039261337d565b1461346c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135345791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108dc5781516001600160a01b0381161561352e579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613631575b1561359b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261362b81610ed9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613572565b613662613540565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610ed45760405251902090565b3d156136cb573d906136b182610f32565b916136bf6040519384610f0f565b82523d6000602084013e565b606090565b156136d757565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156104f1570160208101919035906001600160401b0382116104f15781360383136104f157565b9190808252602080920192916000905b828210613782575050505090565b909192938061379c60019261379688610bd1565b15159052565b6137b26137aa848801610bd1565b151582850152565b6137ca60406137c2818901610bd1565b151590830152565b6137e460606137da8189016104f6565b61ffff1690830152565b6137fd60806137f4818901610903565b9083019061188f565b61380d60a06137c2818901610bd1565b61381d60c06137f4818901610903565b61382d60e06137f4818901610903565b6101008087013590820152610120808701359082015261385d6101406138548189016125d9565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613774565b6040809161ffff8135613896816104e5565b16845260208101356138a7816108e5565b6001600160a01b031660208501520135910152565b60a080916138c981610bd1565b1515845260208101356138db816108e5565b600180841b03809116602086015261ffff60408301356138fa816104e5565b166040860152606082013560608601526080820135613918816108e5565b1660808501520135910152565b6040809161393281610bd1565b1515845260208101356138a7816108e5565b9035609e19823603018112156104f1570190565b9060a06139ad6107639361396b81610bd1565b151584526020810135602085015261398560408201610bd1565b1515604085015261ffff606082013561399d816104e5565b1660608501526080810190613732565b9190928160808201520191613711565b90610763916139cf8261379683610bd1565b602081013560208301526139f16139e860408301610bd1565b15156040840152565b60608101356060830152613a13613a0a60808301610bd1565b15156080840152565b60a081013560a0830152613a2d60c0830160c08301613925565b613a3e610120808401908301613925565b613a61610180613a5081840184613944565b906101c08091860152840190613958565b91613a726101a09283810190613944565b91818403910152613958565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613ad991610164890191613711565b93818135613ae6816108e5565b1660c4880152816020820135613afb816108e5565b1660e488015260400135613b0e816108e5565b16610104860152602319928386820301610124870152613b2d916139bd565b9184830301610144850152613b4192613764565b03601f1981018252613b539082610f0f565b613b5c90613e29565b5050565b906060611ad4610763938035613b75816108e5565b6001600160a01b03168452602081810135908501526040810190613732565b6060608435613ba2816108e5565b6001600160a01b0390811683528060a435613bbc816108e5565b1660208401528060c435613bcf816108e5565b16604084015260e435613be1816108e5565b16910152565b35906001600160801b03821682036104f157565b60808091613c0881610bd1565b151584526020810135613c1a816108e5565b6001600160a01b031660208501526000196001831b0180613c3d60408401613be7565b166040860152613c4f60608301613be7565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613cab82610bd1565b151560a4890152602082013560c4890152604082013560e48901526060820135613cd4816108e5565b16610104880152613ce760808201610903565b6101248801613cf59161188f565b613d0160a08201610bd1565b151561014488015260c0810135610164880152613d25610184880160e08301613bfb565b613d389061022488019061018001613925565b61028486016102c090526102e4860190613d5192613764565b916023199283868203016102a4870152613d6a91613958565b91848303016102c4850152613b4192613711565b6019546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b90821580613de3575b613db757565b6133ff613dc383613f44565b60405162461bcd60e51b815260206004820152918291602483019061072d565b506001613db1565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6017546001600160a01b03168015613deb57816000929160208493519201905af490613da86136a0565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108dc57600090613ed3575b61ffff91501690565b6020823d8211613f07575b81613eeb60209383610f0f565b81010312610843575061ffff9051613f02816104e5565b613eca565b3d9150613ede565b90929192613f1c81610f32565b91613f2a6040519384610f0f565b8294828452828201116104f157602061050193019061070a565b6044815110613f95576004810151810190602081602484019303126104f1576024810151906001600160401b0382116104f1570190806043830112156104f157602482015161076392604401613f0f565b50604051613fa281610ef4565b600a8152695553444f3a206461746160b01b602082015290565b15613fc357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104f1578051906001600160401b0382116104f157019080601f830112156104f157815161076392602001613f0f565b60409061ffff61076395931681528160208201520191613711565b90601f811161407657505050565b600091825260208220906020601f850160051c830194106140b2575b601f0160051c01915b8281106140a757505050565b81815560010161409b565b9092508290614092565b601319810191908211610d3c57565b605019810191908211610d3c57565b92909161413e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614138826126c561411760a483018a61072d565b6001600160401b03881660648401528281036023190160848401528861072d565b30615531565b93901561414d575b5050505050565b61415694614160565b3880808080614146565b91936141fe7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561420c939561ffff815160208301209616958660005260056020526141c48361105860208b6040600020826040519483868095519384920161070a565b556141e1604051978897885260a0602089015260a088019061072d565b6001600160401b039092166040870152858203606087015261072d565b90838203608085015261072d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a06040820181905261076394926142439183019061072d565b6001600160401b03909316606082015280830360809091015261072d565b92919061426d836154e4565b61030681036142b55750601854610501949081906142b0906001600160a01b031661178687878760405196879563100b652360e01b602088015260248701614211565b614476565b61030781036142fd5750601754610501949081906142f8906001600160a01b0316611786878787604051968795634dd8df6360e11b602088015260248701614211565b6144a5565b610305810361432d575060405163163b7bd360e21b602082015261050194906142b0816117868760248301610752565b6103098103614375575060195461050194908190614370906001600160a01b03166117868787876040519687956381618d0560e01b602088015260248701614211565b61441b565b61030a036143a35760405163af2ee97560e01b60208201526105019490614370816117868760248301610752565b6143b56143af84615489565b60ff1690565b806143c657505050610501916149ec565b6001036143d65761050193614bc4565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b9315808061446e575b6144625761414d575050505050565b6133ff613dc386613f44565b506000614453565b60185491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b60175491949293916001600160a01b03168015613deb57816000929160208493519201905af49261444a6136a0565b6020919283604051948593843782019081520301902090565b156144f457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6145669398979698168452608060208501526080840191613711565b6001600160401b0390951660408201520152565b903590601e19813603018212156104f157018035906001600160401b0382116104f1576020019181360383136104f157565b9491959897906115446145d56040996145cd6145db976145f8993691610f4d565b943691610f4d565b97614e7b565b928451968794859463040a7bb160e41b8652309060048701614793565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108dc57600090819361463b57509190565b905061059191925060403d8111610cea57610cdb8183610f0f565b9396949161076398969361ffff61467b9316865260c0602087015260c0860191613711565b6001600160401b0390961660408401526060830152608082015280840360a090910152613711565b91969792989594939094303303614738576146bf908530615281565b60405181815290946001600160a01b03169390849061ffff8516906000805160206155bd83398151915290602090a3833b156104f157600098899561471b936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614656565b0393f180156108dc5761472b5750565b8061243461050192610ec1565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104f1576020825192015190565b9192610763959361ffff6147c29316845260018060a01b0316602084015260a0604084015260a083019061072d565b9215156060820152608081840391015261072d565b156147de57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261484461076397959361ffff6148529416865260c0602087015260c086019061072d565b90848203604086015261072d565b6001600160a01b0391821660608401529316608082015280830360a09091015261072d565b946148a09193929561ffff811660005260016020526148a76040600020604051948580926112eb565b0384610f0f565b82511561491f576148b985518261497d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104f15760009661490e91604051998a988997889662c5803160e81b88526004880161481f565b03925af180156108dc5761472b5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156149e2575b1161499e57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614997565b9060ff6149f882615489565b161580614b2c575b614a0990614f91565b614a1b614a1582615439565b916154d4565b90916001600160a01b039182841615614b22575b614a63907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316614f00565b918316928315614add576000805160206155bd83398151915291614a9d61ffff92614a98614a9387600a54612fe2565b600a55565b6120f4565b8481540190558460006000805160206155fd83398151915260405180614ac889829190602083019252565b0390a360405193845216918060208101613119565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614a2f565b508051602914614a00565b9897969293614b6160e0979361ffff614b969894168c5260208c61010091829101528c019061072d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261072d565b930152565b614bb36040929594939560608352606083019061072d565b94600180841b031660208201520152565b9091614bcf84615042565b9091614c00614bf987612547614bf38b61ffff166000526007602052604060002090565b8c610fde565b5460ff1690565b916001600160401b0391614c37907f0000000000000000000000000000000000000000000000000000000000000000908416614f00565b9288888b8315614d33575b505050853b15614ce85794614c899694614138948a946126c5948d99600014614ce15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614b37565b9015614cd6575090614cd161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614b9b565b0390a2565b926105019492614160565b1692614c6a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061420c915050565b90612547614d6892614d6289614d4d614d75979b30615231565b9961ffff166000526007602052604060002090565b90610fde565b805460ff19166001179055565b88888b614c42565b60065460ff1615614dca57602282511061154b5761ffff602261050193015191166000526002602052614dbd604060002060008052602052604060002090565b5490611512821515614dd2565b50516115bc57565b15614dd957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614e2257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614efb576001600160401b03919004818111614eb9571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b614e65565b81810292918115918404141715610d3c57565b7f00000000000000000000000000000000000000000000000000000000000000008015614efb57810690818103908111610d3c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610ed45760405290565b15614f9857565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261076394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615032815180926020868601910161070a565b8101036051810184520182610f0f565b9061505a600160ff61505385615489565b1614614f91565b61506382615439565b9061506d836154d4565b9060498451106150de5760498401519360518151106150a25761509f60518201519161509981516140cb565b906153b5565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036151ca575b801561517b5781615150846151436000956120f4565b546130f6828210156151da565b5561515e83600a5403600a55565b6040518381526000805160206155fd83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6151d583338461328a565b61512d565b156151e157565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614add57600a5490828201809211610d3c576000926152726020926000805160206155fd83398151915294600a556120f4565b818154019055604051908152a3565b6107639183916001600160a01b0381163081141590816152ad575b50156130a257610b5183338361328a565b90503314153861529c565b156152bf57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156152fc57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6153498261534281612fc6565b10156152b8565b61535682825110156152f5565b8161536e575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106153a25750508252601f01601f191660405290565b909283518152602080910193019061538a565b6153c28261534281612fc6565b6153d781516153d084612fd4565b11156152f5565b816153ef575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106154265750508252601f01601f191660405290565b909283518152602080910193019061540e565b602181511061544c57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615499576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106150a2576029015190565b60208151106154f4576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b909291600080916040519561554587610ed9565b6096875282602088019560a036883760208451940192f1903d9060968211615573575b6000908286523e9190565b6096915061556856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220c969d7aac155ffc8c6e18a36772869ddbad6e66ffec16b28b8dcf0b4f1caf17a64736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"; + "0x6101c06040523462000b7d57610160620066cc803803809162000025826101c062000b9e565b6101c0391262000b7d576200003c6101c062000bc2565b6101e051906001600160a01b038216820362000b7d57610200516001600160a01b038116810362000b7d576200007461022062000bc2565b926200008261024062000bc2565b916200009061026062000bc2565b6200009d61028062000bc2565b91620000ab6102a062000bc2565b93620000b96102c062000bc2565b95620000c76102e062000bc2565b91620000d561030062000bc2565b9360405191620000e58362000b82565b60048352635553444f60e01b60208401526040519a620001058c62000b82565b60018c52603160f81b60208d0152604051620001218162000b82565b60048152635553444f60e01b602082015260405191620001418362000b82565b60048352635553444f60e01b60208401526200015d3362000bd7565b6001600160a01b0316608052600860a0528051906001600160401b038211620008c857600b5490600182811c9216801562000b72575b602083101462000a445781601f84931162000b00575b50602090601f831160011462000a715760009262000a65575b50508160011b916000199060031b1c191617600b555b8051906001600160401b038211620008c857600c5490600182811c9216801562000a5a575b602083101462000a445781601f849311620009d2575b50602090601f8311600114620009435760009262000937575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa9081156200092b57600091620008de575b5061ffff1680600052600f60205260406000203360005260205260406000209060ff19916001838254161790556000526010602052604060002033600052602052600160406000209182541617905560e05260018060a01b031660018060a01b0319600d541617600d5560208151910120976020815191012088610160528061018052466101205260405198600080516020620066ac83398151915260208b015260408a015260608901524660808901523060a089015260a088528760c081011060018060401b0360c08a011117620008c85760c08801604081905288516020808b0191909120610100523061014052600080516020620066ac8339815191526101a052601580546001600160a01b039485166001600160a01b031991821681179092556016805498861698821689179055601780549986169982168a179055601880549a86169a82168b179055601980549b86169b82168c179055601a805496861696821687179055601b805497909516968116871790945560129091527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3805484169095179094557f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4805483169098179097557f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc805482169092179091557f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2805482169092179091557f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a805482169092179091557fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0538054821690921790915560056000527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746805490911690911790556200053e9062000b82565b600560c082015260e0810163100b652360e01b8152610306600052601c8060205260c06040600020930151916008831015620008b25783549264ffffffff00948592519160d89560ff938464ffffffffff199687928a1c169316911617179055604051620005ac8162000b82565b6003815260208101634dd8df6360e11b81526103076000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620005fa8162000b82565b60058152602081016313030a6160e31b81526103056000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006488162000b82565b6003815260208101631007cea560e31b81526103046000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006968162000b82565b60078152602081016381618d0560e01b81526103096000528460205260406000209151906008821015620008b257848489855493518a1c16931691161717905560405194620006e58662000b82565b600186526020860193630cef3d9360e31b855261030a60005260205260406000209551946008861015620008b25786549451901c1693169116171790553360018060a01b0360005416036200086e576001600160a01b038116156200081a576200074f9062000bd7565b604051615a8d908162000c1f823960805181818161055c0152818161081f0152818161096801528181610b3501528181610ff30152818161217d0152818161243b01528181612e970152818161428e01528181614a370152614d07015260a051816118d8015260c051818181614e890152818161507d015281816152ee0152615388015260e051816128590152610100518161365d0152610120518161371801526101405181613627015261016051816136ac015261018051816136d201526101a051816136890152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6020813d60201162000922575b81620008fa6020938362000b9e565b810103126200091e57519061ffff821682036200091b575061ffff62000282565b80fd5b5080fd5b3d9150620008eb565b6040513d6000823e3d90fd5b0151905038806200022c565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f1984168510620009b6576001945083601f198116106200099c575b505050811b01600c5562000242565b015160001960f88460031b161c191690553880806200098d565b8181015183556020948501946001909301929091019062000970565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c81016020851062000a3c575b90849392915b601f830160051c8201811062000a2c57505062000213565b6000815585945060010162000a14565b508062000a0e565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001fd565b015190503880620001c2565b600b600090815293507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db991905b601f198416851062000ae4576001945083601f1981161062000aca575b505050811b01600b55620001d8565b015160001960f88460031b161c1916905538808062000abb565b8181015183556020948501946001909301929091019062000a9e565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c81016020851062000b6a575b90849392915b601f830160051c8201811062000b5a575050620001a9565b6000815585945060010162000b42565b508062000b3c565b91607f169162000193565b600080fd5b604081019081106001600160401b03821117620008c857604052565b601f909101601f19168101906001600160401b03821190821017620008c857604052565b51906001600160a01b038216820362000b7d57565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461049057806301ffc9a71461048b57806306fdde031461048657806307e0db1714610481578063095ea7b31461047c5780630df374831461047757806310ddb1371461047257806318160ddd146103f057806323b872dd1461046d578063313ce567146104685780633644e51514610463578063365260b41461045e57806339509351146104595780633bdd4a43146104545780633d8b38f61461044f5780633f1f4fa41461044a57806342d65a8d14610445578063437be62214610440578063447705151461043b5780634c42899a1461043b5780635b8c41e6146104365780635c975abb1461043157806366ad5c8a1461042c578063695ef6bf1461042757806370a0823114610422578063715018a61461041d5780637533d7881461041857806376203b4814610413578063796fd43a1461040e5780637ecebe0014610409578063857749b0146104045780638cfd8f5c146103ff5780638da5cb5b146103fa5780639169d59e146103f55780639358928b146103f0578063950c8a74146103eb578063952168c5146103e657806395d89b41146103e15780639bdb9812146103dc5780639f38369a146103d7578063a457c2d7146103d2578063a4c51df5146103cd578063a6c3d165146103c8578063a9059cbb146103c3578063b02f69a2146103be578063b25ea8fb146103b9578063b353aaa7146103b4578063ba03a8d7146103af578063baf3292d146103aa578063c056a8de146103a5578063c4461834146103a0578063cbed8b9c1461039b578063ce8849ed14610396578063d1deba1f14610391578063d505accf1461038c578063dbd01de114610387578063dd62ed3e14610382578063de4065771461037d578063df2a5b3b14610378578063e6a20ae614610373578063e78eb9461461036e578063eab45d9c14610369578063eaffd49a14610364578063eb8d72b71461035f578063ec6d062b1461035a578063ed629c5c14610355578063f00c298d14610350578063f2fde38b1461034b578063f5ecbdbc14610346578063f8974de014610341578063fa74f0b51461033c5763fc0c546a0361000e57612fc9565b612f7a565b612f01565b612e2d565b612d66565b612ce3565b612cc0565b612c76565b612b2c565b612aa3565b612a45565b6129a0565b612975565b612888565b612843565b6127e9565b6127c0565b61265f565b6124fc565b6124d3565b6123e7565b6123ca565b61228a565b6121f6565b6121ac565b612167565b6120f0565b612049565b611fff565b611e7c565b611de9565b611d2b565b611c88565b611c3d565b611b99565b611a76565b611a1c565b6109c9565b611977565b61194e565b6118fc565b6118be565b611881565b6117ab565b61158d565b611536565b6113f0565b6113b3565b6112d0565b61124a565b611227565b6111c0565b6110d3565b61105a565b610fd9565b610fa0565b610f44565b610e6e565b610bb3565b610aaf565b610a43565b610a27565b6109e7565b61093f565b610900565b6108cb565b6107f6565b610716565b610659565b610545565b61ffff8116036104a157565b600080fd5b35906104b182610495565b565b9181601f840112156104a1578235916001600160401b0383116104a157602083818601950101116104a157565b9060806003198301126104a1576004356104f981610495565b916001600160401b03906024358281116104a1578161051a916004016104b3565b9390939260443581811681036104a157926064359182116104a157610541916004016104b3565b9091565b346104a157610553366104e0565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610614576105d96105e192610019976105d26105b86105b38a61ffff166000526001602052604060002090565b61151b565b805190818414918261060a575b50816105e7575b506143b8565b369161110a565b92369161110a565b926144d6565b90506105f436848661110a565b60208151910120906020815191012014386105cc565b15159150386105c5565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104a15760203660031901126104a15760043563ffffffff60e01b81168091036104a157602090631f7ecdf760e01b811490811561069e575b506040519015158152f35b6301ffc9a760e01b14905038610693565b60009103126104a157565b60005b8381106106cd5750506000910152565b81810151838201526020016106bd565b906020916106f6815180928185528580860191016106ba565b601f01601f1916010190565b9060206107139281815201906106dd565b90565b346104a1576000806003193601126107f35760405181600b546107388161144b565b808452906001908181169081156107cb5750600114610772575b61076e8461076281880382610cd3565b60405191829182610702565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106107b8575050508161076e936107629282010193610752565b805485850187015292850192810161079c565b61076e96506107629450602092508593915060ff191682840152151560051b82010193610752565b80fd5b346104a157600060203660031901126107f35760043561081581610495565b61081d612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561088c57610880575080f35b61088990610c85565b80f35b6135a0565b5080fd5b6001600160a01b038116036104a157565b600435906104b182610895565b606435906104b182610895565b35906104b182610895565b346104a15760403660031901126104a1576108f56004356108eb81610895565b6024359033613236565b602060405160018152f35b346104a15760403660031901126104a15761ffff60043561092081610495565b610928612fe4565b166000526003602052602435604060002055600080f35b346104a157600060203660031901126107f35760043561095e81610495565b610966612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561089157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561088c57610880575080f35b346104a15760003660031901126104a1576020600a54604051908152f35b346104a15760603660031901126104a1576108f5600435610a0781610895565b602435610a1381610895565b60443591610a22833383613361565b61312e565b346104a15760003660031901126104a157602060405160128152f35b346104a15760003660031901126104a1576020610a5e613624565b604051908152f35b6064359081151582036104a157565b6024359081151582036104a157565b60a4359081151582036104a157565b6004359081151582036104a157565b359081151582036104a157565b346104a15760a03660031901126104a157600435610acc81610495565b610ad4610a66565b90608435906001600160401b0382116104a157610afa6105d260409336906004016104b3565b90610b31610b14610b0c6044356152ec565b6024356153bd565b928451958694859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561088c576000908192610b82575b50604080519182526020820192909252f35b9050610ba5915060403d8111610bac575b610b9d8183610cd3565b810190614bc9565b9038610b70565b503d610b93565b346104a15760403660031901126104a157600435610bd081610895565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610c0a576108f59133613236565b61303c565b60609060c31901126104a15760c490565b60609060a31901126104a15760a490565b908160609103126104a15790565b908160e09103126104a15790565b60809060a31901126104a15760a490565b60809060831901126104a157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c9857604052565b610c6f565b60c081019081106001600160401b03821117610c9857604052565b604081019081106001600160401b03821117610c9857604052565b90601f801991011681019081106001600160401b03821117610c9857604052565b604051906101a082018281106001600160401b03821117610c9857604052565b6084359060ff821682036104a157565b359060ff821682036104a157565b81601f820112156104a1578035906001600160401b038211610c98576040805193602091610d65838660051b0187610cd3565b84865282860191836101a0809702860101948186116104a1578401925b858410610d93575050505050505090565b86848303126104a157848791610da7610cf4565b610db087610aa2565b8152610dbd838801610aa2565b83820152610dcc868801610aa2565b868201526060610ddd8189016104a6565b908201526080610dee8189016108c0565b9082015260a0610dff818901610aa2565b9082015260c0610e108189016108c0565b9082015260e0610e218189016108c0565b9082015261010080880135908201526101208088013590820152610140610e49818901610d24565b9082015261016080880135908201526101808088013590820152815201930192610d82565b6101603660031901126104a157610e836108a6565b6001600160401b03906064358281116104a157610ea4903690600401610c31565b6084358381116104a157610ebc903690600401610c3f565b90610ec636610c4d565b610124358581116104a157610edf9036906004016104b3565b939092610144359687116104a157610efe610019973690600401610d32565b956044359060243590613985565b9060406003198301126104a157600435610f2581610495565b91602435906001600160401b0382116104a157610541916004016104b3565b346104a157602061ffff610f91610f5a36610f0c565b9390911660005260018452610f7c610f83604060002060405192838092611485565b0382610cd3565b84815191012092369161110a565b82815191012014604051908152f35b346104a15760203660031901126104a15761ffff600435610fc081610495565b1660005260036020526020604060002054604051908152f35b346104a157610fe736610f0c565b9190610ff1612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156104a157604051928380926342d65a8d60e01b8252816110486000988997889460048501614449565b03925af1801561088c57610880575080f35b346104a15760203660031901126104a15760043561107781610895565b6001600160a01b0316801561109c57600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b346104a15760003660031901126104a157602060405160008152f35b6001600160401b038111610c9857601f01601f191660200190565b929192611116826110ef565b916111246040519384610cd3565b8294818452818301116104a1578281602093846000960137010152565b60606003198201126104a15760043561115981610495565b916024356001600160401b03928382116104a157806023830112156104a15781602461118a9360040135910161110a565b9160443590811681036104a15790565b6020906111b49282604051948386809551938492016106ba565b82019081520301902090565b346104a157602061121e61ffff6111fd836111da36611141565b9490911660005260058252604060002082604051948386809551938492016106ba565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346104a15760003660031901126104a157602060ff601154166040519015158152f35b346104a157611258366104e0565b919294939030330361127c576105d96112769261001997369161110a565b9261469e565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126104a1576004356112e881610895565b6024356112f481610495565b604435916084356001600160401b0381116104a157602061ffff61132b600080516020615a18833981519152933690600401610c31565b9361139e853561133a81610895565b6113586105d2868901359861134e8a610895565b60408101906149b5565b611362818a6151e9565b611377611370606435615386565b5085615590565b97611383891515614c23565b61139561138f8a6152ec565b8c6153bd565b9234938b614cc3565b6040519485526001600160a01b0316941692a4005b346104a15760203660031901126104a1576004356113d081610895565b60018060a01b031660005260086020526020604060002054604051908152f35b346104a1576000806003193601126107f35761140a612fe4565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561147b575b602083101461146557565b634e487b7160e01b600052602260045260246000fd5b91607f169161145a565b90600092918054916114968361144b565b9182825260019384811690816000146114f857506001146114b8575b50505050565b90919394506000526020928360002092846000945b8386106114e45750505050010190388080806114b2565b8054858701830152940193859082016114cd565b9294505050602093945060ff191683830152151560051b010190388080806114b2565b906104b161152f9260405193848092611485565b0383610cd3565b346104a15760203660031901126104a15761ffff60043561155681610495565b16600052600160205261076e610f7c611579604060002060405192838092611485565b6040519182916020835260208301906106dd565b60e03660031901126104a1576004356115a581610895565b6024356115b181610495565b604435916001600160401b03906084358281116104a1576115d69036906004016104b3565b91909260a43591818316918284036104a15760c4359081116104a157611600903690600401610c31565b9261163784359561161087610895565b61162f61162560208801359761134e89610895565b999092369161110a565b97369161110a565b9460ff6006541660001461172a5760228651106116e5578560209561139561139e946116b38c6116a061ffff9a8b6022600080516020615a188339815191529f0151931660005260028d5261169a60406000206001600052602052604060002090565b5461306e565b906116ac82151561523e565b101561528a565b6116c86116c1606435615386565b5088615590565b9a6116d48c1515614c23565b8d6116de8d6152ec565b903361544a565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b94809493505161175757600080516020615a188339815191529460209461ffff9461139561139e946116b3565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b610100806003193601126104a157602435906117c682610895565b6001600160401b036044358181116104a1576117e6903690600401610c3f565b926064359182116104a1576100199361186e61186361180c61187c953690600401610c31565b61185161181836610c5e565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b03166044890152606488015261012487019061387c565b85810360231901608487015290613848565b9160a484019061392d565b03601f198101835282610cd3565b6140aa565b346104a15760203660031901126104a15760043561189e81610895565b60018060a01b031660005260136020526020604060002054604051908152f35b346104a15760003660031901126104a157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a15760403660031901126104a157602061121e60043561191e81610495565b61ffff6024359161192e83610495565b166000526002835260406000209061ffff16600052602052604060002090565b346104a15760003660031901126104a1576000546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a15760043561199481610895565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d760206119bf610a75565b926119c8612fe4565b6119d0614279565b60009081526010835260408082206001600160a01b03841683526020529020611a079085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b346104a15760003660031901126104a1576004546040516001600160a01b039091168152602090f35b9181601f840112156104a1578235916001600160401b0383116104a1576020808501946101a085020101116104a157565b60a03660031901126104a157600435611a8e81610495565b6001600160401b03906024358281116104a157611aaf9036906004016104b3565b90916064358481116104a157611ac9903690600401610c31565b936084359081116104a1576100199461ffff94611b9494611b85611b24611af761186e963690600401611a45565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613827565b60443560648801526060611b7560231996878a85030160848b01528035611b4a81610895565b6001600160a01b0390811685526020820135611b6581610895565b16602085015260408101906137f6565b9190928160408201520191613827565b928584030160a4860152613bbd565b61421c565b346104a1576000806003193601126107f35760405181600c54611bbb8161144b565b808452906001908181169081156107cb5750600114611be45761076e8461076281880382610cd3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c2a575050508161076e936107629282010193610752565b8054858501870152928501928101611c0e565b346104a157602060ff611c7c61ffff6111fd84611c5936611141565b9490911660005260078252604060002082604051948386809551938492016106ba565b54166040519015158152f35b346104a15760203660031901126104a15761ffff600435611ca881610495565b166000526001602052610f7c611cc8604060002060405192838092611485565b805115611ce65761076281611ce061076e93516144b8565b906157d0565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346104a15760403660031901126104a157600435611d4881610895565b60243590336000526009602052611d758160406000209060018060a01b0316600052602052604060002090565b5491808310611d9657611d8a92039033613236565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104a15760e03660031901126104a157600435611e0681610495565b6001600160401b03906064358281116104a157611e279036906004016104b3565b60849291923584811681036104a157611e3e610a84565b9160c4359586116104a157611e5a611e6a9636906004016104b3565b95909460443590602435906149e7565b60408051928352602083019190915290f35b346104a157611e8a36610f0c565b90611e93612fe4565b60405192602092808385870137611ebf6034868381013060601b88820152036014810188520186610cd3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c9857611ef983611ef3865461144b565b86614464565b80601f8411600114611f69575091808092611f589695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611f5e575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611f3a565b91939498601f198416611f8187600052602060002090565b938a905b828210611fe8575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611f5898969410611fcf575b505050811b019055611f4c565b015160001960f88460031b161c19169055388080611fc2565b808886978294978701518155019601940190611f85565b346104a15760403660031901126104a1576108f560043561201f81610895565b602435903361312e565b6101e09060831901126104a157608490565b908160a09103126104a15790565b6102c03660031901126104a15760043561206281610895565b60243561206e81610895565b6044359161207b83610495565b6120836108b3565b9261208d36612029565b6001600160401b0394610264358681116104a1576120af903690600401611a45565b929091610284358881116104a1576120cb90369060040161203b565b946102a4359889116104a1576120e86100199936906004016104b3565b989097613d48565b346104a15760403660031901126104a15760243561210d81610895565b612115612fe4565b60008080808094600435905af161212a613785565b50156121335780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760403660031901126104a157602060ff611c7c6024356121d081610895565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346104a15760203660031901126104a1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561223681610895565b61223e612fe4565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126104a157600490565b60c0906101231901126104a15761012490565b610220806003193601126104a1576122a136612266565b6122aa36610c0f565b916122b436612277565b906001600160401b03906101e4358281116104a1576122d7903690600401611a45565b90916102049384359081116104a1576122f49036906004016104b3565b94909560405198899863602b546f60e11b60208b0152803561231581610895565b6001600160a01b0390811660248c015280602083013561233481610895565b1660448c0152604082013560648c0152606082013560848c0152608082013561235c81610895565b1660a48b015260a0013560c48a015260e489016123789161401e565b610144880161238691614041565b86015261024485019061239892613bbd565b90602319848303016102248501526123af92613827565b03601f19810182526123c19082610cd3565b61001990614176565b346104a15760003660031901126104a15760206040516127108152f35b346104a15760803660031901126104a15760043561240481610495565b60243561241081610495565b6064356001600160401b0381116104a15761242f9036906004016104b3565b9092612439612fe4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104a157600080946124b0604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613827565b03925af1801561088c576124c057005b806124cd61001992610c85565b806106af565b346104a15760003660031901126104a157600e546040516001600160a01b039091168152602090f35b612505366104e0565b9161ffff8694929616600052600560205261254c81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b5491821561260e576125fd84836125f67fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125e2846125ca8e8a8f6126099f908f6125b0906125a36125c49436908d61110a565b6020815191012014614928565b61ffff166000526005602052604060002090565b9161490f565b906001600160401b0316600052602052604060002090565b556125ee36878d61110a565b93369161110a565b918861469e565b6040519586958661497e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346104a15760e03660031901126104a15760043561267c81610895565b60243561268881610895565b6044359060643592612698610d14565b9380421161277b576127636127769161273d6100199761274b6126d68760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610cd3565b61275e60c4359360a4359351902061373e565b613445565b6001600160a01b038381169116146133f9565b613236565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346104a15760003660031901126104a157600d546040516001600160a01b039091168152602090f35b346104a15760403660031901126104a157602061121e60043561280b81610895565b6024359061281882610895565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104a15760603660031901126104a1576004356128a581610495565b6024356128b181610495565b604435916128bd612fe4565b8215612938576126097f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129128560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346104a15760003660031901126104a157602060405160018152f35b90816101c09103126104a15790565b6101403660031901126104a1576004356129b981610895565b6024356129c581610895565b604435916129d283610495565b6129da6108b3565b6001600160401b0393906084358581116104a1576129fc9036906004016104b3565b90612a0636610c20565b92610104358881116104a157612a20903690600401612991565b94610124359889116104a157612a3d610019993690600401611a45565b989097613f5b565b346104a15760203660031901126104a1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612a81610a93565b612a89612fe4565b151560ff196006541660ff821617600655604051908152a1005b346104a1576101003660031901126104a157600435612ac181610495565b6001600160401b03906024358281116104a157612ae29036906004016104b3565b91906044359084821682036104a157608435612afd81610895565b60c4359586116104a157612b186100199636906004016104b3565b94909360e4359660a4359460643593614add565b346104a157612b3a36610f0c565b9190612b44612fe4565b60009161ffff81168352600160209080825260408520916001600160401b038711610c9857612b7d87612b77855461144b565b85614464565b8590601f8811600114612be45750918680879893611f58957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612bd9575b501b906000198460031b1c191617905560405193849384614449565b880135925038612bbd565b90601f198816612bf985600052602060002090565b9288905b828210612c5f575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611f58969410612c45575b505082811b019055611f4c565b870135600019600386901b60f8161c191690553880612c38565b808685968294968c01358155019501930190612bfd565b346104a15760403660031901126104a157602060ff611c7c602435612c9a81610895565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346104a15760003660031901126104a157602060ff600654166040519015158152f35b346104a15760403660031901126104a157600435612d0081610895565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612d2b610a75565b92612d34612fe4565b612d3c614279565b6000908152600f835260408082206001600160a01b03841683526020529020611a079085906119f6565b346104a15760203660031901126104a157600435612d8381610895565b612d8b612fe4565b6001600160a01b039081168015612dd957600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346104a15760803660031901126104a157600435612e4a81610495565b60243590612e5782610495565b612e62604435610895565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c5761076e91600091612ee0575b5060405191829182610702565b612efb913d8091833e612ef38183610cd3565b810190614413565b38612ed3565b346104a15760203660031901126104a157612f1a610a93565b612f2f60018060a01b03600e541633146137b5565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346104a15760203660031901126104a157600435612f9781610895565b612f9f612fe4565b6001600160a01b0316612fb38115156137b5565b600e80546001600160a01b031916919091179055005b346104a15760003660031901126104a1576020604051308152f35b6000546001600160a01b03163303612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610c0a57565b6051019081605111610c0a57565b91908201809211610c0a57565b1561308257565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156130da57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156131e3576131c882600080516020615a38833981519152946131de94169661316888151561307b565b6001600160a01b03811660009081526008602052604090206131ad90859054613193828210156130d3565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156133105782169384156132c057806132af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946132986131de9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016133995750505050565b8084106133b4576133ab930391613236565b388080806114b2565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561340057565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107139391613454936135ac565b919091613481565b634e487b7160e01b600052602160045260246000fd5b6005111561347c57565b61345c565b61348a81613472565b806134925750565b61349b81613472565b600181036134e75760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6134f081613472565b6002810361353d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613549600392613472565b1461355057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116136185791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561088c5781516001600160a01b03811615613612579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613715575b1561367f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261370f81610c9d565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613656565b613746613624565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610c985760405251902090565b3d156137b0573d90613796826110ef565b916137a46040519384610cd3565b82523d6000602084013e565b606090565b156137bc57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156104a15701602081359101916001600160401b0382116104a15781360383136104a157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611b7561071393803561385d81610895565b6001600160a01b031684526020818101359085015260408101906137f6565b906107139082358152602083013561389381610495565b61ffff809116602083015260408401356138ac81610495565b16604082015260608301356138c081610895565b6001600160a01b0316606082015260c0806139106138f56138e460808801886137f6565b60e0608088015260e0870191613827565b61390260a08801886137f6565b9086830360a0880152613827565b9401359161391d83610895565b6001600160a01b03909216910152565b6060908181359161393d83610895565b6001600160a01b03928316855282602082013561395981610895565b16602086015282604082013561396e81610895565b166040860152013561397f81610895565b16910152565b939490929596613a0a9298976139fa6139ef6139dc60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613848565b6023198d8203810160a48f01529961387c565b9360c48c019061392d565b868a8403016101448b0152613827565b92868403016101648701528180865194858152019501936000915b848310613a4d575050505050509061187c81613a499303601f198101835282610cd3565b5050565b909192939495846101a06001928951613a6882825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613a25565b35906001600160801b03821682036104a157565b60808091613b3581610aa2565b151584526020810135613b4781610895565b6001600160a01b031660208501526000196001831b0180613b6a60408401613b14565b166040860152613b7c60608301613b14565b1660608501520135910152565b60408091613b9681610aa2565b151584526020810135613ba881610895565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613bdb575050505090565b9091929380613bf5600192613bef88610aa2565b15159052565b613c0b613c03848801610aa2565b151582850152565b613c236040613c1b818901610aa2565b151590830152565b613c3d6060613c338189016104a6565b61ffff1690830152565b613c5c6080613c4d8189016108c0565b6001600160a01b031690830152565b613c6c60a0613c1b818901610aa2565b613c7c60c0613c4d8189016108c0565b613c8c60e0613c4d8189016108c0565b61010080870135908201526101208087013590820152613cbc610140613cb3818901610d24565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613bcd565b9060a0613d3861071393613cf681610aa2565b1515845260208101356020850152613d1060408201610aa2565b1515604085015261ffff6060820135613d2881610495565b16606085015260808101906137f6565b9190928160808201520191613827565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613d9782610aa2565b151560a4890152602082013560c4890152604082013560e48901526060820135613dc081610895565b16610104880152613dd3608082016108c0565b6001600160a01b0316610124880152613dee60a08201610aa2565b151561014488015260c0810135610164880152613e12610184880160e08301613b28565b613e259061022488019061018001613b89565b61028486016102c090526102e4860190613e3e92613bbd565b916023199283868203016102a4870152613e5791613ce3565b91848303016102c4850152613e6b92613827565b03601f1981018252613e7d9082610cd3565b613a49906141c9565b9035609e19823603018112156104a1570190565b9061071391613eac82613bef83610aa2565b60208101356020830152613ece613ec560408301610aa2565b15156040840152565b60608101356060830152613ef0613ee760808301610aa2565b15156080840152565b60a081013560a0830152613f0a60c0830160c08301613b89565b613f1b610120808401908301613b89565b613f3e610180613f2d81840184613e86565b906101c08091860152840190613ce3565b91613f4f6101a09283810190613e86565b91818403910152613ce3565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613fb691610164890191613827565b93818135613fc381610895565b1660c4880152816020820135613fd881610895565b1660e488015260400135613feb81610895565b1661010486015260231992838682030161012487015261400a91613e9a565b9184830301610144850152613e6b92613bbd565b6040809161ffff813561403081610495565b1684526020810135613ba881610895565b60a0809161404e81610aa2565b15158452602081013561406081610895565b600180841b03809116602086015261ffff604083013561407f81610495565b16604086015260608201356060860152608082013561409d81610895565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b90821580614130575b61410c57565b6134e361411883614340565b60405162461bcd60e51b815291829160048301610702565b506001614106565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561413857816000929160208493519201905af4906140fd613785565b6008111561347c57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561088c576000906142cf575b61ffff91501690565b6020823d8211614303575b816142e760209383610cd3565b810103126107f3575061ffff90516142fe81610495565b6142c6565b3d91506142da565b90929192614318816110ef565b916143266040519384610cd3565b8294828452828201116104a15760206104b19301906106ba565b6044815110614391576004810151810190602081602484019303126104a1576024810151906001600160401b0382116104a1570190806043830112156104a15760248201516107139260440161430b565b5060405161439e81610cb8565b600a8152695553444f3a206461746160b01b602082015290565b156143bf57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126104a1578051906001600160401b0382116104a157019080601f830112156104a15781516107139260200161430b565b60409061ffff61071395931681528160208201520191613827565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b601319810191908211610c0a57565b605019810191908211610c0a57565b92909161453a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906145348261273d61451360a483018a6106dd565b6001600160401b0388166064840152828103602319016084840152886106dd565b306159cc565b939015614549575b5050505050565b6145529461455c565b3880808080614542565b91936145f97fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614607939561ffff815160208301209616958660005260056020526145c0836111fd60208b604060002082604051948386809551938492016106ba565b556001600160401b036145e5604051988998895260a060208a015260a08901906106dd565b9216604087015285820360608701526106dd565b9083820360808501526106dd565b0390a1565b90604051604081018181106001600160401b03821117610c985760405280925460ff811690600882101561347c5790825260d81b6001600160e01b03191660209190910152565b91610713959361ffff61468a926001600160401b039460018060a01b0316865216602085015260a0604085015260a08401906106dd565b9316606082015260808184039101526106dd565b9291906146aa8361597f565b6146c86146c182600052601c602052604060002090565b5460ff1690565b6146d18161426f565b1561482a57936146f66146f16104b196600052601c602052604060002090565b61460c565b80516147018161426f565b60208201516001600160e01b0319169180519061471d8261426f565b6147268261426f565b60009160050361477557505060185461477090614753906001600160a01b03165b6001600160a01b031690565b925b61273d88888888604051988996602088015260248701614653565b61489f565b600381516147828161426f565b61478b8161426f565b036147b1575050601654614770906147ab906001600160a01b0316614747565b92614755565b600781516147be8161426f565b6147c78161426f565b036147ec575050601a54614770906147e7906001600160a01b0316614747565b6147ab565b600190516147f98161426f565b6148028161426f565b036148215750601b54614770906147e7906001600160a01b0316614747565b614770906147ab565b5061483d61483784615924565b60ff1690565b8061484e575050506104b191614e38565b60010361485e576104b193615038565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b9492939194600881101561347c576000908152601260205260409020546001600160a01b0316801561413857816000929160208493519201905af4926148e3613785565b93158080614907575b6148fb57614549575050505050565b6134e361411886614340565b5060006148ec565b6020919283604051948593843782019081520301902090565b1561492f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916149aa9060609461ffff6001600160401b039499989799168552608060208601526080850191613827565b951660408201520152565b903590601e19813603018212156104a157018035906001600160401b0382116104a1576020019181360383136104a157565b9491959897906116de614a10604099614a08614a1697614a3399369161110a565b94369161110a565b976152ec565b928451968794859463040a7bb160e41b8652309060048701614bdf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561088c576000908193614a7657509190565b905061054191925060403d8111610bac57610b9d8183610cd3565b93969491614abf9061071399979461ffff6001600160401b039416875260c0602088015260c0870191613827565b961660408401526060830152608082015260a0818503910152613827565b91969792989594939094303303614b8457614af990853061571c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156104a1576000988995614b67936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614a91565b0393f1801561088c57614b775750565b806124cd6104b192610c85565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126104a1576020825192015190565b9192610713959361ffff614c0e9316845260018060a01b0316602084015260a0604084015260a08301906106dd565b921515606082015260808184039101526106dd565b15614c2a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614c9061071397959361ffff614c9e9416865260c0602087015260c08601906106dd565b9084820360408601526106dd565b6001600160a01b0391821660608401529316608082015280830360a0909101526106dd565b94614cec9193929561ffff81166000526001602052614cf3604060002060405194858092611485565b0384610cd3565b825115614d6b57614d05855182614dc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104a157600096614d5a91604051998a988997889662c5803160e81b885260048801614c6b565b03925af1801561088c57614b775750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614e2e575b11614dea57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614de3565b9060ff614e4482615924565b161580614f9f575b614e5590615403565b614e67614e61826158d4565b9161596f565b90916001600160a01b039182841615614f95575b614eaf906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615373565b918316928315614f50577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91614f1061ffff92614ef6614ef187600a5461306e565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020615a3883398151915260405180614f3b89829190602083019252565b0390a3604051938452169180602081016131de565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614e7b565b508051602914614e4c565b98979692936001600160401b03614fdc60e0989461ffff6150089995168d5260208d61010091829101528d01906106dd565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c08801526106dd565b930152565b6001600160401b0361502d604093969594966060845260608401906106dd565b951660208201520152565b9091615043846154b7565b909161506d6146c1876125ca6150678b61ffff166000526007602052604060002090565b8c61119a565b916150a36001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615373565b9288888b831561519f575b505050853b1561515457946150f59694614534948a9461273d948d9960001461514d5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614faa565b901561514257509061513d61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461500d565b0390a2565b926104b1949261455c565b16926150d6565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614607915050565b906125ca6151d4926151ce896151b96151e1979b306156b9565b9961ffff166000526007602052604060002090565b9061119a565b805460ff19166001179055565b88888b6150ae565b60065460ff16156152365760228251106116e55761ffff60226104b193015191166000526002602052615229604060002060008052602052604060002090565b54906116ac82151561523e565b505161175757565b1561524557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561529157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561536e57046001600160401b0390818111615329571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6152d6565b81810292918115918404141715610c0a57565b7f0000000000000000000000000000000000000000000000000000000000000000801561536e57810690818103908111610c0a5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c985760405290565b1561540a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261071394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526154a781518092602086860191016106ba565b8101036051810184520182610cd3565b906154cf600160ff6154c885615924565b1614615403565b6154d8826158d4565b906154e28361596f565b9060498451106155535760498401519360518151106155175761551460518201519161550e81516144c7565b90615850565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615652575b801561560357816155d8846155cb60009560018060a01b03166000526008602052604060002090565b5461319382821015615662565b556155e683600a5403600a55565b604051838152600080516020615a3883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61565d833384613361565b6155a2565b1561566957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614f5057600a5490828201809211610c0a5760009261570d602092600080516020615a3883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6107139183916001600160a01b038116308114159081615748575b501561312e57610a22833383613361565b905033141538615737565b1561575a57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561579757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6157e4826157dd81613052565b1015615753565b6157f18282511015615790565b81615809575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061583d5750508252601f01601f191660405290565b9092835181526020809101930190615825565b61585d826157dd81613052565b615872815161586b84613060565b1115615790565b8161588a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106158c15750508252601f01601f191660405290565b90928351815260208091019301906158a9565b60218151106158e757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615934576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615517576029015190565b602081511061598f576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b90929160008091604051956159e087610c9d565b6096875282602088019560a036883760208451940192f1903d9060968211615a0e575b6000908286523e9190565b60969150615a0356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220edc1a250316bb6227c504304207571c9d1020270104a7df747c53b84c7b4730e64736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"; type BaseUSDOConstructorParams = | [signer?: Signer] @@ -2897,9 +2973,13 @@ export class BaseUSDO__factory extends ContractFactory { _yieldBox: PromiseOrValue, _cluster: PromiseOrValue, _owner: PromiseOrValue, - _leverageModule: PromiseOrValue, - _marketModule: PromiseOrValue, - _optionsModule: PromiseOrValue, + __leverageModule: PromiseOrValue, + __leverageDestinationModule: PromiseOrValue, + __marketModule: PromiseOrValue, + __marketDestinationModule: PromiseOrValue, + __optionsModule: PromiseOrValue, + __optionsDestinationModule: PromiseOrValue, + __genericModule: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { return super.deploy( @@ -2907,9 +2987,13 @@ export class BaseUSDO__factory extends ContractFactory { _yieldBox, _cluster, _owner, - _leverageModule, - _marketModule, - _optionsModule, + __leverageModule, + __leverageDestinationModule, + __marketModule, + __marketDestinationModule, + __optionsModule, + __optionsDestinationModule, + __genericModule, overrides || {} ) as Promise; } @@ -2918,9 +3002,13 @@ export class BaseUSDO__factory extends ContractFactory { _yieldBox: PromiseOrValue, _cluster: PromiseOrValue, _owner: PromiseOrValue, - _leverageModule: PromiseOrValue, - _marketModule: PromiseOrValue, - _optionsModule: PromiseOrValue, + __leverageModule: PromiseOrValue, + __leverageDestinationModule: PromiseOrValue, + __marketModule: PromiseOrValue, + __marketDestinationModule: PromiseOrValue, + __optionsModule: PromiseOrValue, + __optionsDestinationModule: PromiseOrValue, + __genericModule: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { return super.getDeployTransaction( @@ -2928,9 +3016,13 @@ export class BaseUSDO__factory extends ContractFactory { _yieldBox, _cluster, _owner, - _leverageModule, - _marketModule, - _optionsModule, + __leverageModule, + __leverageDestinationModule, + __marketModule, + __marketDestinationModule, + __optionsModule, + __optionsDestinationModule, + __genericModule, overrides || {} ); } diff --git a/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts b/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts new file mode 100644 index 00000000..dfd7f54d --- /dev/null +++ b/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts @@ -0,0 +1,394 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + USDOFlashloanHelper, + USDOFlashloanHelperInterface, +} from "../../usd0/USDOFlashloanHelper"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IUSDO", + name: "_usdo", + type: "address", + }, + { + internalType: "address", + name: "_owner", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_old", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_new", + type: "uint256", + }, + ], + name: "FlashMintFeeUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_old", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_new", + type: "uint256", + }, + ], + name: "MaxFlashMintUpdated", + 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", + }, + { + 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: [], + name: "claimOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "flashFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IERC3156FlashBorrower", + name: "receiver", + type: "address", + }, + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "flashLoan", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "flashMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "maxFlashLoan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxFlashMint", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pendingOwner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_val", + type: "uint256", + }, + ], + name: "setFlashMintFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_val", + type: "uint256", + }, + ], + name: "setMaxFlashMintable", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + { + internalType: "bool", + name: "direct", + type: "bool", + }, + { + internalType: "bool", + name: "renounce", + type: "bool", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "usdo", + outputs: [ + { + internalType: "contract IUSDO", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a0346100ed57601f61109338819003918201601f19168301916001600160401b038311848410176100f25780849260409485528339810103126100ed5780516001600160a01b039182821682036100ed57602001519182168092036100ed576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355610f8a9081610109823960805181818161039e01528181610726015281816107f60152610ab90152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212206ab66fb5145120a1f67e33766f42291e47d0e0e732f6c9dcaca0e7510ca37aad64736f6c63430008120033"; + +type USDOFlashloanHelperConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: USDOFlashloanHelperConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class USDOFlashloanHelper__factory extends ContractFactory { + constructor(...args: USDOFlashloanHelperConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "USDOFlashloanHelper"; + } + + override deploy( + _usdo: PromiseOrValue, + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _usdo, + _owner, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _usdo: PromiseOrValue, + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_usdo, _owner, overrides || {}); + } + override attach(address: string): USDOFlashloanHelper { + return super.attach(address) as USDOFlashloanHelper; + } + override connect(signer: Signer): USDOFlashloanHelper__factory { + return super.connect(signer) as USDOFlashloanHelper__factory; + } + static readonly contractName: "USDOFlashloanHelper"; + + public readonly contractName: "USDOFlashloanHelper"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): USDOFlashloanHelperInterface { + return new utils.Interface(_abi) as USDOFlashloanHelperInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): USDOFlashloanHelper { + return new Contract(address, _abi, signerOrProvider) as USDOFlashloanHelper; + } +} diff --git a/src/typechain/tapioca-bar/factories/usd0/USDO__factory.ts b/src/typechain/tapioca-bar/factories/usd0/USDO__factory.ts index e8de9671..6061d792 100644 --- a/src/typechain/tapioca-bar/factories/usd0/USDO__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/USDO__factory.ts @@ -34,16 +34,36 @@ const _abi = [ name: "_leverageModule", type: "address", }, + { + internalType: "address payable", + name: "_leverageDestinationModule", + type: "address", + }, { internalType: "address payable", name: "_marketModule", type: "address", }, + { + internalType: "address payable", + name: "_marketDestinationModule", + type: "address", + }, { internalType: "address payable", name: "_optionsModule", type: "address", }, + { + internalType: "address payable", + name: "_optionsDestinationModule", + type: "address", + }, + { + internalType: "address payable", + name: "_genericModule", + type: "address", + }, ], stateMutability: "nonpayable", type: "constructor", @@ -104,63 +124,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -553,6 +516,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "_fee", + type: "uint256", + }, + ], + name: "addFlashloanFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1051,7 +1027,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -1156,72 +1132,14 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "flashFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IERC3156FlashBorrower", - name: "receiver", - type: "address", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "flashLoan", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [], - name: "flashMintFee", + name: "flashLoanHelper", outputs: [ { - internalType: "uint256", + internalType: "address", name: "", - type: "uint256", + type: "address", }, ], stateMutability: "view", @@ -1322,6 +1240,197 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "collateralAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + internalType: "uint256", + name: "amountOutMin", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct IUSDOBase.ILeverageSwapData", + name: "swapData", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "srcExtraGasLimit", + type: "uint256", + }, + { + internalType: "uint16", + name: "lzSrcChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "dstAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "bytes", + name: "srcAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageLZData", + name: "lzData", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "swapper", + type: "address", + }, + { + internalType: "address", + name: "magnetar", + type: "address", + }, + { + internalType: "address", + name: "tOft", + type: "address", + }, + { + internalType: "address", + name: "srcMarket", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageExternalContractsData", + name: "externalData", + type: "tuple", + }, + { + internalType: "bytes", + name: "airdropAdapterParams", + type: "bytes", + }, + { + components: [ + { + internalType: "bool", + name: "permitAll", + type: "bool", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", + }, + { + internalType: "uint16", + name: "actionType", + type: "uint16", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "permitBorrow", + type: "bool", + }, + { + 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", + }, + ], + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", + }, + ], + name: "initMultiHopBuy", + outputs: [], + stateMutability: "payable", + type: "function", + }, { inputs: [ { @@ -1346,19 +1455,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "leverageModule", - outputs: [ - { - internalType: "contract USDOLeverageModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "lzEndpoint", @@ -1400,51 +1496,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "marketModule", - outputs: [ - { - internalType: "contract USDOMarketModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "maxFlashLoan", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1547,19 +1598,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "optionsModule", - outputs: [ - { - internalType: "contract USDOOptionsModule", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "owner", @@ -1870,7 +1908,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2181,7 +2219,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2459,6 +2497,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + name: "setCluster", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -2503,25 +2554,12 @@ const _abi = [ { inputs: [ { - internalType: "uint256", - name: "_val", - type: "uint256", - }, - ], - name: "setFlashMintFee", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_val", - type: "uint256", + internalType: "address", + name: "_helper", + type: "address", }, ], - name: "setMaxFlashMintable", + name: "setFlashloanHelper", outputs: [], stateMutability: "nonpayable", type: "function", @@ -2863,7 +2901,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2992,7 +3030,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101c08060405234620008125760e0816200649d803803809162000024828562000833565b83398101031262000812576200003a8162000857565b6020820151916001600160a01b0383168303620008125760408101516001600160a01b038116908190036200081257620000776060830162000857565b93620000866080840162000857565b90620000a360c06200009b60a0870162000857565b950162000857565b9260405191620000b38362000817565b60048352635553444f60e01b80602085015260405197620000d48962000817565b60018952603160f81b60208a015260405190620000f18262000817565b60048252826020830152604051926200010a8462000817565b6004845260208401526200011e336200086c565b6001600160a01b0316608052600860a0528051906001600160401b0382116200056157600b5490600182811c9216801562000807575b6020831014620006dd5781601f84931162000795575b50602090601f83116001146200070a57600092620006fe575b50508160011b916000199060031b1c191617600b555b8051906001600160401b0382116200056157600c5490600182811c92168015620006f3575b6020831014620006dd5781601f8493116200066b575b50602090601f8311600114620005dc57600092620005d0575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa908115620005c45760009162000577575b5061ffff1680600052600f6020526040600020336000526020526040600020600160ff1982541617905560005260106020526040600020336000526020526040600020600160ff19825416179055600a60125569152d02c7e14af680000060135560e05260018060a01b0319600d541617600d55602081519101209360208151910120846101605280610180524661012052604051946000805160206200647d8339815191526020870152604086015260608501524660808501523060a085015260a084528360c081011060018060401b0360c086011117620005615760c08401604090815284516020808701919091206101005230610140526000805160206200647d8339815191526101a052601780546001600160a01b039485166001600160a01b03199182168117909255601880549786169782168817905560198054968616969091168617905560009081526014909152818120805460ff1990811660019081179092559582528282208054871682179055938152908120805490941690921790925554339116036200051957506001600160a01b03811615620004c557620003f0906200086c565b60ff19601b5416601b55604051615bc99081620008b4823960805181818161060c015281816108cf01528181610a0b01528181610cd501528181610eeb0152818161242e01528181612725015281816131900152818161426301528181614d4d015261500c015260a05181611ae3015260c05181818161519c015281816152d00152818161552701526155ac015260e05181612b7f0152610100518161390f015261012051816139ca015261014051816138d90152610160518161395e0152610180518161398401526101a0518161393b0152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b60c060649162461bcd60e51b82820152602060c4820152602060e48201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657261010482015201fd5b634e487b7160e01b600052604160045260246000fd5b6020813d602011620005bb575b81620005936020938362000833565b81010312620005b757519061ffff82168203620005b4575061ffff62000243565b80fd5b5080fd5b3d915062000584565b6040513d6000823e3d90fd5b015190503880620001ed565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f19841685106200064f576001945083601f1981161062000635575b505050811b01600c5562000203565b015160001960f88460031b161c1916905538808062000626565b8181015183556020948501946001909301929091019062000609565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c810160208510620006d5575b90849392915b601f830160051c82018110620006c5575050620001d4565b60008155859450600101620006ad565b5080620006a7565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001be565b01519050388062000183565b600b60009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99350601f198516905b8181106200077c575090846001959493921062000762575b505050811b01600b5562000199565b015160001960f88460031b161c1916905538808062000753565b929360206001819287860151815501950193016200073b565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c810160208510620007ff575b90849392915b601f830160051c82018110620007ef5750506200016a565b60008155859450600101620007d7565b5080620007d1565b91607f169162000154565b600080fd5b604081019081106001600160401b038211176200056157604052565b601f909101601f19168101906001600160401b038211908210176200056157604052565b51906001600160a01b03821682036200081257565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461054057806301ffc9a71461053b57806306fdde031461053657806307e0db1714610531578063095ea7b31461052c5780630df374831461052757806310ddb1371461052257806316d995a91461051d57806318160ddd1461048c5780631d2a0e3d1461051857806323b872dd14610513578063313ce5671461050e5780633644e51514610509578063365260b41461050457806339509351146104ff5780633d8b38f6146104fa5780633f1f4fa4146104f557806340c10f19146104f057806342d65a8d146104eb57806344770515146104e65780634c42899a146104e65780635b8c41e6146104e15780635c975abb146104dc5780635cffe9de146104d7578063613255ab146104d257806366ad5c8a146104cd578063695ef6bf146104c857806370a08231146104c3578063715018a6146104be5780637533d788146104b957806376203b48146104b4578063796fd43a146104af5780637ecebe00146104aa578063857749b0146104a557806389dd5602146104a05780638cfd8f5c1461049b5780638da5cb5b146104965780639169d59e146104915780639358928b1461048c578063940a1dc014610487578063950c8a7414610482578063952168c51461047d57806395d89b41146104785780639bdb9812146104735780639d3f4d1a1461046e5780639d554eac146104695780639dc29fac146104645780639f38369a1461045f578063a457c2d71461045a578063a4c51df514610455578063a6c3d16514610450578063a9059cbb1461044b578063b02f69a214610446578063b25ea8fb14610441578063b353aaa71461043c578063ba03a8d714610437578063baf3292d14610432578063c056a8de1461042d578063c446183414610428578063cbed8b9c14610423578063ce8849ed1461041e578063cfd8b3d814610419578063d1deba1f14610414578063d505accf1461040f578063d9d98ce41461040a578063dbd01de114610405578063dd62ed3e14610400578063de406577146103fb578063df2a5b3b146103f6578063e6a20ae6146103f1578063e78eb946146103ec578063eab45d9c146103e7578063eaffd49a146103e2578063eb8d72b7146103dd578063ec6d062b146103d8578063ed629c5c146103d3578063f00c298d146103ce578063f2fde38b146103c9578063f5b33dfa146103c4578063f5ecbdbc146103bf578063f8974de0146103ba578063fa74f0b5146103b55763fc0c546a0361000e576132eb565b613273565b6131fa565b613126565b6130fd565b613048565b612fd6565b612fb3565b612f7b565b612e52565b612dc9565b612d6b565b612cc6565b612c9b565b612bae565b612b69565b612b1f565b612af6565b612acb565b61296a565b61280f565b6127e6565b6127bd565b6126d1565b6126b4565b612574565b6124e0565b6124a8565b612418565b6123d5565b61232e565b6122e4565b612182565b6120f1565b612051565b611fae565b611f52565b611ef8565b611eda565b611e8f565b611deb565b611cc8565b611c6e565b611c50565b610ac4565b611bb8565b611b8f565b611b30565b611b07565b611ac9565b611a8c565b611903565b6116e6565b61168f565b61155b565b61151e565b61143b565b611385565b61135f565b611155565b611132565b6110de565b610f52565b610ed1565b610e6e565b610e35565b610dd9565b610d51565b610c4f565b610bd2565b610bb6565b610b76565b610ae2565b610a6c565b6109e2565b6109a3565b61096e565b6108a6565b6107c6565b610709565b6105f5565b61ffff81160361055157565b600080fd5b359061056182610545565b565b9181601f84011215610551578235916001600160401b038311610551576020838186019501011161055157565b906080600319830112610551576004356105a981610545565b916001600160401b039060243582811161055157816105ca91600401610563565b9390939260443581811681036105515792606435918211610551576105f191600401610563565b9091565b346105515761060336610590565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106c45761068961069192610019976106826106686106638a61ffff166000526001602052604060002090565b611674565b80519081841491826106ba575b5081610697575b5061472b565b3691611010565b923691611010565b9261482b565b90506106a4368486611010565b602081519101209060208151910120143861067c565b1515915038610675565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105515760203660031901126105515760043563ffffffff60e01b811680910361055157602090631f7ecdf760e01b811490811561074e575b506040519015158152f35b6301ffc9a760e01b14905038610743565b600091031261055157565b60005b83811061077d5750506000910152565b818101518382015260200161076d565b906020916107a68151809281855285808601910161076a565b601f01601f1916010190565b9060206107c392818152019061078d565b90565b34610551576000806003193601126108a35760405181600b546107e8816115a4565b8084529060019081811690811561087b5750600114610822575b61081e8461081281880382610fd2565b604051918291826107b2565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b828410610868575050508161081e936108129282010193610802565b805485850187015292850192810161084c565b61081e96506108129450602092508593915060ff191682840152151560051b82010193610802565b80fd5b3461055157600060203660031901126108a3576004356108c581610545565b6108cd613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561093c57610930575080f35b61093990610f84565b80f35b613852565b5080fd5b6001600160a01b0381160361055157565b6064359061056182610945565b359061056182610945565b346105515760403660031901126105515761099860043561098e81610945565b602435903361351f565b602060405160018152f35b346105515760403660031901126105515761ffff6004356109c381610545565b6109cb613306565b166000526003602052602435604060002055600080f35b3461055157600060203660031901126108a357600435610a0181610545565b610a09613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561094157602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561093c57610930575080f35b3461055157602036600319011261055157600435610a88613306565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff81601354610abc60405192839283610c3e565b0390a1601355005b34610551576000366003190112610551576020600a54604051908152f35b3461055157602036600319011261055157600435610afe613306565b620f4240811015610b45577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b81601254610b3d60405192839283610c3e565b0390a1601255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b3461055157606036600319011261055157610998600435610b9681610945565b602435610ba281610945565b60443591610bb1833383613620565b613450565b3461055157600036600319011261055157602060405160128152f35b34610551576000366003190112610551576020610bed6138d6565b604051908152f35b60643590811515820361055157565b60243590811515820361055157565b60a43590811515820361055157565b60043590811515820361055157565b3590811515820361055157565b908152602081019190915260400190565b346105515760a036600319011261055157600435610c6c81610545565b610c74610bf5565b90608435906001600160401b03821161055157610c9a6106826040933690600401610563565b90610cd1610cb4610cac604435615525565b6024356155e1565b928451958694859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561093c576000908192610d20575b5061081e60405192839283610c3e565b9050610d43915060403d8111610d4a575b610d3b8183610fd2565b810190614ece565b9038610d10565b503d610d31565b3461055157604036600319011261055157600435610d6e81610945565b336000526009602052610d85816040600020612491565b546024358101809111610d9c57610998913361351f565b61335e565b90604060031983011261055157600435610dba81610545565b91602435906001600160401b038211610551576105f191600401610563565b3461055157602061ffff610e26610def36610da1565b9390911660005260018452610e11610e186040600020604051928380926115de565b0382610fd2565b848151910120923691611010565b82815191012014604051908152f35b346105515760203660031901126105515761ffff600435610e5581610545565b1660005260036020526020604060002054604051908152f35b3461055157604036600319011261055157610019600435610e8e81610945565b610e9d60ff6011541615614431565b610ea561424e565b600052600f602052610ec860ff610ec160406000203390612491565b5416613aa1565b60243590614577565b3461055157610edf36610da1565b9190610ee9613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561055157604051928380926342d65a8d60e01b825281610f4060009889978894600485016147bc565b03925af1801561093c57610930575080f35b3461055157600036600319011261055157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610f9757604052565b610f6e565b60c081019081106001600160401b03821117610f9757604052565b604081019081106001600160401b03821117610f9757604052565b601f909101601f19168101906001600160401b03821190821017610f9757604052565b6001600160401b038111610f9757601f01601f191660200190565b92919261101c82610ff5565b9161102a6040519384610fd2565b829481845281830111610551578281602093846000960137010152565b60606003198201126105515760043561105f81610545565b916001600160401b03916024359083821161055157806023830112156105515781602461109193600401359101611010565b9160443590811681036105515790565b6020906110bb92826040519483868095519384920161076a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461055157602061112961ffff61111b836110f836611047565b94909116600052600582526040600020826040519483868095519384920161076a565b8201908152030190206110c7565b54604051908152f35b3461055157600036600319011261055157602060ff601154166040519015158152f35b346105515760803660031901126105515760043561117281610945565b6024359061117f82610945565b604435906064356001600160401b0381116105515760206111a584923690600401610563565b9490936111b760ff6011541615614431565b6001600160a01b031695338703611336575b6111e46111df6111db601b5460ff1690565b1590565b6144b3565b6111f6600160ff19601b541617601b55565b6112098261120261438d565b10156144f2565b61123f61121683836143ce565b968796611223858b614577565b6040516323e30c8b60e01b815298899586953360048801614544565b03816000885af193841561093c576112d0836112d6936112907f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd96112ed996112e899600091611308575b5014613a66565b6112b76112a5306112a08761245d565b612491565b546112b08484613390565b111561446c565b6112cb6112c48383613390565b3086613620565b613390565b9061460c565b6112e08130614577565b601a54613390565b601a55565b6112fc60ff19601b5416601b55565b60405160018152602090f35b611329915060203d811161132f575b6113218183610fd2565b810190614535565b38611289565b503d611317565b61134f82611347336112a08b61245d565b54101561446c565b61135a823389613620565b6111c9565b346105515760203660031901126105515761137b600435610945565b6020610bed61438d565b346105515761139336610590565b91929493903033036113b7576106896113b192610019973691611010565b926149b2565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126105515760c490565b60609060a31901126105515760a490565b908160609103126105515790565b60a03660031901126105515760043561145381610945565b60243561145f81610545565b604435916084356001600160401b03811161055157602061ffff611496600080516020615ad483398151915293369060040161142d565b9361150985356114a581610945565b6114c361068286890135986114b98a610945565b6040810190614ccb565b6114cd818a61543d565b6114e26114db6064356155aa565b50856157b2565b976114ee891515614f28565b6115006114fa8a615525565b8c6155e1565b9234938b614fc8565b6040519485526001600160a01b0316941692a4005b346105515760203660031901126105515760043561153b81610945565b60018060a01b031660005260086020526020604060002054604051908152f35b34610551576000806003193601126108a357611575613306565b80546001600160a01b03198116825581906001600160a01b0316600080516020615b348339815191528280a380f35b90600182811c921680156115d4575b60208310146115be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916115b3565b90600092918054916115ef836115a4565b9182825260019384811690816000146116515750600114611611575b50505050565b90919394506000526020928360002092846000945b83861061163d57505050500101903880808061160b565b805485870183015294019385908201611626565b9294505050602093945060ff191683830152151560051b0101903880808061160b565b9061056161168892604051938480926115de565b0383610fd2565b346105515760203660031901126105515761ffff6004356116af81610545565b16600052600160205261081e610e116116d26040600020604051928380926115de565b60405191829160208352602083019061078d565b60e0366003190112610551576004356116fe81610945565b60243561170a81610545565b604435916001600160401b03906084358281116105515761172f903690600401610563565b91909260a43591818316918284036105515760c4359081116105515761175990369060040161142d565b9261179084359561176987610945565b61178861177e6020880135976114b989610945565b9990923691611010565b973691611010565b9460ff6006541660001461188257602286511061183e57856020956115006115099461180c8c6117f961ffff9a8b6022600080516020615ad48339815191529f0151931660005260028d526117f360406000206001600052602052604060002090565b54613390565b90611805821515615492565b10156154db565b61182161181a6064356155aa565b50886157b2565b9a61182d8c1515614f28565b8d6118378d615525565b903361566f565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9480949350516118af57600080516020615ad48339815191529460209461ffff946115006115099461180c565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6003196101003682018113610551576024359161191f83610945565b604435926001600160401b038085116105515760e085600401938636030112610551576064359081116105515761195a90369060040161142d565b9160803660831901126105515761001994611a8793611a5c611a5160c4611a4a611a6d966040519a8b99633cb7ea1d60e11b60208c015260043560248c015260018060a01b031660448b015260648a015280356101248a015261ffff60248801356119c481610545565b166101448a01526119e860448801356119dc81610545565b61ffff166101648b0152565b611a026119f760648901610963565b6101848b0190611b82565b611a36611a2b8a6101a460e0611a1b60848d0187613b03565b92909301526102048d0191613ae2565b9160a4890190613b03565b8a830361012319016101c48c015290613ae2565b9401610963565b6101e4860190611b82565b838203602319016084850152613f31565b611a7960a48301613f65565b03601f198101835282610fd2565b614224565b3461055157602036600319011261055157600435611aa981610945565b60018060a01b031660005260156020526020604060002054604051908152f35b3461055157600036600319011261055157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610551576000366003190112610551576019546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435611b5281610545565b61ffff60243591611b6283610545565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610551576000366003190112610551576000546040516001600160a01b039091168152602090f35b3461055157604036600319011261055157600435611bd581610945565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611c00610c04565b92611c09613306565b611c1161424e565b60005260108252611c3b84611c2a836040600020612491565b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610551576000366003190112610551576020601254604051908152f35b34610551576000366003190112610551576004546040516001600160a01b039091168152602090f35b9181601f84011215610551578235916001600160401b038311610551576020808501946101a0850201011161055157565b60a036600319011261055157600435611ce081610545565b6001600160401b039060243582811161055157611d01903690600401610563565b909160643584811161055157611d1b90369060040161142d565b93608435908111610551576100199461ffff94611de694611dd7611d76611d49611a79963690600401611c97565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613ae2565b60443560648801526060611dc760231996878a85030160848b01528035611d9c81610945565b6001600160a01b0390811685526020820135611db781610945565b1660208501526040810190613b03565b9190928160408201520191613ae2565b928584030160a4860152613b35565b61414f565b34610551576000806003193601126108a35760405181600c54611e0d816115a4565b8084529060019081811690811561087b5750600114611e365761081e8461081281880382610fd2565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611e7c575050508161081e936108129282010193610802565b8054858501870152928501928101611e60565b3461055157602060ff611ece61ffff61111b84611eab36611047565b94909116600052600782526040600020826040519483868095519384920161076a565b54166040519015158152f35b34610551576000366003190112610551576020601354604051908152f35b34610551576000806003193601126108a357611f12613306565b601a5480611f1e575080f35b30825260086020526040822054818110611f4d5750805b808203918211610d9c5761093991601a553333613450565b611f35565b3461055157604036600319011261055157610019600435611f7281610945565b611f8160ff6011541615614431565b611f8961424e565b6000526010602052611fa560ff610ec160406000203390612491565b6024359061460c565b346105515760203660031901126105515761ffff600435611fce81610545565b166000526001602052610e11611fee6040600020604051928380926115de565b80511561200c576108128161200661081e935161470d565b9061588c565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346105515760403660031901126105515760043561206e81610945565b60243590336000526009602052612089816040600020612491565b549180831061209e576112fc9203903361351f565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105515760e03660031901126105515760043561210e81610545565b6001600160401b03906064358281116105515761212f903690600401610563565b608492919235848116810361055157612146610c13565b9160c43595861161055157612162612172963690600401610563565b9590946044359060243590614cfd565b9061081e60405192839283610c3e565b346105515761219036610da1565b90612199613306565b604051926020928083858701376121c56034868381013060601b88820152036014810188520186610fd2565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610f9757612202836121fc86546115a4565b866147d7565b80601f841160011461226057509180809261224f9695948a9b600080516020615af48339815191529b94612255575b50501b916000199060031b1c19161790555b604051938493846147bc565b0390a180f35b015192503880612231565b91939498601f19841661227887600052602060002090565b938a905b8282106122cd57505091600080516020615af4833981519152999a9593918561224f989694106122b4575b505050811b019055612243565b015160001960f88460031b161c191690553880806122a7565b80888697829497870151815501960194019061227c565b346105515760403660031901126105515761099860043561230481610945565b6024359033613450565b6101e090608319011261055157608490565b908160a09103126105515790565b6102c03660031901126105515760043561234781610945565b60243561235381610945565b6044359161236083610545565b612368610956565b926123723661230e565b6001600160401b03946102643586811161055157612394903690600401611c97565b92909161028435888111610551576123b0903690600401612320565b946102a435988911610551576123cd610019993690600401610563565b98909761402d565b34610551576040366003190112610551576024356123f281610945565b6123fa613306565b61093960008080808095600435905af1612412613a36565b50613a66565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260096020526040902090565b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461055157604036600319011261055157602060ff611ece6024356124cc81610945565b600435600052600f84526040600020612491565b34610551576020366003190112610551577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561252081610945565b612528613306565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261055157600490565b60c0906101231901126105515761012490565b610220806003193601126105515761258b36612550565b6125943661140b565b9161259e36612561565b906001600160401b03906101e435828111610551576125c1903690600401611c97565b9091610204938435908111610551576125de903690600401610563565b94909560405198899863602b546f60e11b60208b015280356125ff81610945565b6001600160a01b0390811660248c015280602083013561261e81610945565b1660448c0152604082013560648c0152606082013560848c0152608082013561264681610945565b1660a48b015260a0013560c48a015260e4890161266291613c55565b610144880161267091613c8d565b86015261024485019061268292613b35565b906023198483030161022485015261269992613ae2565b03601f19810182526126ab9082610fd2565b6100199061414f565b346105515760003660031901126105515760206040516127108152f35b34610551576080366003190112610551576004356126ee81610545565b6024356126fa81610545565b6064356001600160401b03811161055157612719903690600401610563565b9092612723613306565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610551576000809461279a604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613ae2565b03925af1801561093c576127aa57005b806127b761001992610f84565b8061075f565b3461055157600036600319011261055157600e546040516001600160a01b039091168152602090f35b34610551576000366003190112610551576018546040516001600160a01b039091168152602090f35b61281836610590565b9161ffff8694929616600052600560205261284c81604060002060206040518092878b8337878201908152030190206110c7565b549182156128fb576128ea84836128e37fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128cf846128ca8e8a8f6128f69f908f6128b0906128a36128c49436908d611010565b6020815191012014614c3e565b61ffff166000526005602052604060002090565b91614c25565b6110c7565b556128db36878d611010565b933691611010565b91886149b2565b60405195869586614c94565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b6084359060ff8216820361055157565b359060ff8216820361055157565b346105515760e03660031901126105515760043561298781610945565b60243561299381610945565b60443590606435926129a361294c565b93804211612a8657612a6e612a8191612a4861001997612a566129e18760018060a01b03166000526015602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610fd2565b612a6960c4359360a435935190206139f0565b6136fc565b6001600160a01b038381169116146136b0565b61351f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610551576040366003190112610551576020610bed600435612aed81610945565b602435906143ce565b3461055157600036600319011261055157600d546040516001600160a01b039091168152602090f35b34610551576040366003190112610551576020611129600435612b4181610945565b60243590612b4e82610945565b6001600160a01b031660009081526009845260409020612491565b34610551576000366003190112610551576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461055157606036600319011261055157600435612bcb81610545565b602435612bd781610545565b60443591612be3613306565b8215612c5e576128f67f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612c388560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461055157600036600319011261055157602060405160018152f35b90816101c09103126105515790565b61014036600319011261055157600435612cdf81610945565b602435612ceb81610945565b60443591612cf883610545565b612d00610956565b6001600160401b03939060843585811161055157612d22903690600401610563565b90612d2c3661141c565b926101043588811161055157612d46903690600401612cb7565b946101243598891161055157612d63610019993690600401611c97565b989097613e4f565b34610551576020366003190112610551577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612da7610c22565b612daf613306565b151560ff196006541660ff821617600655604051908152a1005b346105515761010036600319011261055157600435612de781610545565b6001600160401b039060243582811161055157612e08903690600401610563565b919060443590848216820361055157608435612e2381610945565b60c43595861161055157612e3e610019963690600401610563565b94909360e4359660a4359460643593614df4565b3461055157612e6036610da1565b9190612e6a613306565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610f9757612ea687612ea085546115a4565b856147d7565b8590601f8811600114612efb575091868087989361224f95600080516020615b748339815191529993612ef0575b501b906000198460031b1c1916179055604051938493846147bc565b880135925038612ed4565b90601f198816612f1085600052602060002090565b9288905b828210612f6457505091889391600080516020615b74833981519152989961224f969410612f4a575b505082811b019055612243565b870135600019600386901b60f8161c191690553880612f3d565b808685968294968c01358155019501930190612f14565b3461055157604036600319011261055157602060ff611ece602435612f9f81610945565b600435600052601084526040600020612491565b3461055157600036600319011261055157602060ff600654166040519015158152f35b3461055157604036600319011261055157600435612ff381610945565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b9602061301e610c04565b92613027613306565b61302f61424e565b600052600f8252611c3b84611c2a836040600020612491565b346105515760203660031901126105515760043561306581610945565b61306d613306565b6001600160a01b0390811680156130a957600080546001600160a01b0319811683178255909216600080516020615b348339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610551576000366003190112610551576017546040516001600160a01b039091168152602090f35b346105515760803660031901126105515760043561314381610545565b6024359061315082610545565b61315b604435610945565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c5761081e916000916131d9575b50604051918291826107b2565b6131f4913d8091833e6131ec8183610fd2565b810190614786565b386131cc565b3461055157602036600319011261055157613213610c22565b61322860018060a01b03600e54163314613aa1565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b346105515760203660031901126105515760043561329081610945565b613298613306565b6001600160a01b03908116906132af821515613aa1565b81600e549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600e55005b34610551576000366003190112610551576020604051308152f35b6000546001600160a01b0316330361331a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610d9c57565b6051019081605111610d9c57565b91908201809211610d9c57565b156133a457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156133fc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134cc576134b182600080516020615b54833981519152946134c794169661348a88151561339d565b6134ab8461349783612477565b546134a4828210156133f5565b0391612477565b55612477565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156135cf57821693841561357f578061356e7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946112a06134c79561245d565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613640816040600020612491565b5492600184016136505750505050565b80841061366b5761366293039161351f565b3880808061160b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b156136b757565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107c3939161370b9361385e565b919091613733565b6005111561371d57565b634e487b7160e01b600052602160045260246000fd5b61373c81613713565b806137445750565b61374d81613713565b600181036137995760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b6137a281613713565b600281036137ef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137fb600392613713565b1461380257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561093c5781516001600160a01b038116156138c4579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139c7575b15613931577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526139c181610f9c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613908565b6139f86138d6565b9060405190602082019261190160f01b845260228301526042820152604281526080810181811060018060401b03821117610f975760405251902090565b3d15613a61573d90613a4782610ff5565b91613a556040519384610fd2565b82523d6000602084013e565b606090565b15613a6d57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b15613aa857565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e1982360301811215610551570160208101919035906001600160401b03821161055157813603831361055157565b9190808252602080920192916000905b828210613b53575050505090565b9091929380613b6d600192613b6788610c31565b15159052565b613b83613b7b848801610c31565b151582850152565b613b9b6040613b93818901610c31565b151590830152565b613bb56060613bab818901610556565b61ffff1690830152565b613bce6080613bc5818901610963565b90830190611b82565b613bde60a0613b93818901610c31565b613bee60c0613bc5818901610963565b613bfe60e0613bc5818901610963565b61010080870135908201526101208087013590820152613c2e610140613c2581890161295c565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613b45565b6040809161ffff8135613c6781610545565b1684526020810135613c7881610945565b6001600160a01b031660208501520135910152565b60a08091613c9a81610c31565b151584526020810135613cac81610945565b600180841b03809116602086015261ffff6040830135613ccb81610545565b166040860152606082013560608601526080820135613ce981610945565b1660808501520135910152565b60408091613d0381610c31565b151584526020810135613c7881610945565b9035609e1982360301811215610551570190565b9060a0613d7e6107c393613d3c81610c31565b1515845260208101356020850152613d5660408201610c31565b1515604085015261ffff6060820135613d6e81610545565b1660608501526080810190613b03565b9190928160808201520191613ae2565b906107c391613da082613b6783610c31565b60208101356020830152613dc2613db960408301610c31565b15156040840152565b60608101356060830152613de4613ddb60808301610c31565b15156080840152565b60a081013560a0830152613dfe60c0830160c08301613cf6565b613e0f610120808401908301613cf6565b613e32610180613e2181840184613d15565b906101c08091860152840190613d29565b91613e436101a09283810190613d15565b91818403910152613d29565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a4830152909687969590939092613eaa91610164890191613ae2565b93818135613eb781610945565b1660c4880152816020820135613ecc81610945565b1660e488015260400135613edf81610945565b16610104860152602319928386820301610124870152613efe91613d8e565b9184830301610144850152613f1292613b35565b03601f1981018252613f249082610fd2565b613f2d906141fa565b5050565b906060611dc76107c3938035613f4681610945565b6001600160a01b03168452602081810135908501526040810190613b03565b6060608435613f7381610945565b6001600160a01b0390811683528060a435613f8d81610945565b1660208401528060c435613fa081610945565b16604084015260e435613fb281610945565b16910152565b35906001600160801b038216820361055157565b60808091613fd981610c31565b151584526020810135613feb81610945565b6001600160a01b031660208501526000196001831b018061400e60408401613fb8565b16604086015261402060608301613fb8565b1660608501520135910152565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff90921660648201529181166084830152909687969594909392909161407c82610c31565b151560a4890152602082013560c4890152604082013560e489015260608201356140a581610945565b166101048801526140b860808201610963565b61012488016140c691611b82565b6140d260a08201610c31565b151561014488015260c08101356101648801526140f6610184880160e08301613fcc565b6141099061022488019061018001613cf6565b61028486016102c090526102e486019061412292613b35565b916023199283868203016102a487015261413b91613d29565b91848303016102c4850152613f1292613ae2565b6019546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b908215806141b4575b61418857565b61379561419483614315565b60405162461bcd60e51b815260206004820152918291602483019061078d565b506001614182565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b6018546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6017546001600160a01b031680156141bc57816000929160208493519201905af490614179613a36565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561093c576000906142a4575b61ffff91501690565b6020823d82116142d8575b816142bc60209383610fd2565b810103126108a3575061ffff90516142d381610545565b61429b565b3d91506142af565b909291926142ed81610ff5565b916142fb6040519384610fd2565b82948284528282011161055157602061056193019061076a565b604481511061436657600481015181019060208160248401930312610551576024810151906001600160401b038211610551570190806043830112156105515760248201516107c3926044016142e0565b5060405161437381610fb7565b600a8152695553444f3a206461746160b01b602082015290565b600a5460135490818111156143a0575090565b905090565b81810292918115918404141715610d9c57565b634e487b7160e01b600052601260045260246000fd5b306001600160a01b03909116036143f4576143f0620f424091601254906143a5565b0490565b60405162461bcd60e51b81526020600482015260156024820152741554d113ce881d1bdad95b881b9bdd081d985b1a59605a1b6044820152606490fd5b1561443857565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b1561447357565b60405162461bcd60e51b81526020600482015260186024820152771554d113ce881c995c185e481b9bdd08185c1c1c9bdd995960421b6044820152606490fd5b156144ba57565b60405162461bcd60e51b815260206004820152601060248201526f5553444f3a207265656e7472616e637960801b6044820152606490fd5b156144f957565b60405162461bcd60e51b81526020600482015260146024820152735553444f3a20616d6f756e7420746f6f2062696760601b6044820152606490fd5b90816020910312610551575190565b91926107c396949160a094600180871b038092168552166020840152604083015260608201528160808201520191613ae2565b6001600160a01b038116919082156145c757600a5490828201809211610d9c576000926145b8602092600080516020615b5483398151915294600a55612477565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156146be5761462681612477565b5483811061466e5783600080516020615b54833981519152926146506000966134c7940391612477565b5561465e81600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610d9c57565b605019810191908211610d9c57565b1561473257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610551578051906001600160401b03821161055157019080601f830112156105515781516107c3926020016142e0565b60409061ffff6107c395931681528160208201520191613ae2565b90601f81116147e557505050565b600091825260208220906020601f850160051c83019410614821575b601f0160051c01915b82811061481657505050565b81815560010161480a565b9092508290614801565b92909161488f5a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061488982612a4861486860a483018a61078d565b6001600160401b03881660648401528281036023190160848401528861078d565b30615a88565b93901561489e575b5050505050565b6148a7946148b1565b3880808080614897565b919361494f7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561495d939561ffff815160208301209616958660005260056020526149158361111b60208b6040600020826040519483868095519384920161076a565b55614932604051978897885260a0602089015260a088019061078d565b6001600160401b039092166040870152858203606087015261078d565b90838203608085015261078d565b0390a1565b6001600160a01b03909116815261ffff909116602082015260a0604082018190526107c394926149949183019061078d565b6001600160401b03909316606082015280830360809091015261078d565b9291906149be83615a3b565b6103068103614a06575060185461056194908190614a01906001600160a01b0316611a7987878760405196879563100b652360e01b602088015260248701614962565b614bc7565b6103078103614a4e575060175461056194908190614a49906001600160a01b0316611a79878787604051968795634dd8df6360e11b602088015260248701614962565b614bf6565b6103058103614a7e575060405163163b7bd360e21b60208201526105619490614a0181611a7987602483016107b2565b6103098103614ac6575060195461056194908190614ac1906001600160a01b0316611a798787876040519687956381618d0560e01b602088015260248701614962565b614b6c565b61030a03614af45760405163af2ee97560e01b60208201526105619490614ac181611a7987602483016107b2565b614b06614b00846159e0565b60ff1690565b80614b17575050506105619161513d565b600103614b275761056193615284565b60405162461bcd60e51b815260206004820152601e60248201527f4f4654436f726556323a20756e6b6e6f776e207061636b6574207479706500006044820152606490fd5b60195491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b93158080614bbf575b614bb35761489e575050505050565b61379561419486614315565b506000614ba4565b60185491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b60175491949293916001600160a01b031680156141bc57816000929160208493519201905af492614b9b613a36565b6020919283604051948593843782019081520301902090565b15614c4557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614cb79398979698168452608060208501526080840191613ae2565b6001600160401b0390951660408201520152565b903590601e198136030182121561055157018035906001600160401b0382116105515760200191813603831361055157565b949195989790611837614d26604099614d1e614d2c97614d49993691611010565b943691611010565b97615525565b928451968794859463040a7bb160e41b8652309060048701614ee4565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561093c576000908193614d8c57509190565b90506105f191925060403d8111610d4a57610d3b8183610fd2565b939694916107c398969361ffff614dcc9316865260c0602087015260c0860191613ae2565b6001600160401b0390961660408401526060830152608082015280840360a090910152613ae2565b91969792989594939094303303614e8957614e109085306157d8565b60405181815290946001600160a01b03169390849061ffff851690600080516020615b1483398151915290602090a3833b15610551576000988995614e6c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614da7565b0393f1801561093c57614e7c5750565b806127b761056192610f84565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610551576020825192015190565b91926107c3959361ffff614f139316845260018060a01b0316602084015260a0604084015260a083019061078d565b9215156060820152608081840391015261078d565b15614f2f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614f956107c397959361ffff614fa39416865260c0602087015260c086019061078d565b90848203604086015261078d565b6001600160a01b0391821660608401529316608082015280830360a09091015261078d565b94614ff19193929561ffff81166000526001602052614ff86040600020604051948580926115de565b0384610fd2565b8251156150705761500a8551826150ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156105515760009661505f91604051998a988997889662c5803160e81b885260048801614f70565b03925af1801561093c57614e7c5750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615133575b116150ef57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506150e8565b9060ff615149826159e0565b1615806151ec575b61515a90615628565b61516c61516682615990565b91615a2b565b6001600160a01b0390818316156151e2575b600080516020615b148339815191529160209161ffff91906151ca907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166143a5565b946151d58682614577565b60405195865216941692a3565b61dead925061517e565b508051602914615151565b989796929361522160e0979361ffff6152569894168c5260208c61010091829101528c019061078d565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261078d565b930152565b6152736040929594939560608352606083019061078d565b94600180841b031660208201520152565b909161528f846156d9565b90916152c06152b9876128ca6152b38b61ffff166000526007602052604060002090565b8c6110a1565b5460ff1690565b916001600160401b03916152f7907f00000000000000000000000000000000000000000000000000000000000000009084166143a5565b9288888b83156153f3575b505050853b156153a857946153499694614889948a94612a48948d996000146153a15750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016151f7565b901561539657509061539161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461525b565b0390a2565b9261056194926148b1565b169261532a565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061495d915050565b906128ca615428926154228961540d615435979b30614577565b9961ffff166000526007602052604060002090565b906110a1565b805460ff19166001179055565b88888b615302565b60065460ff161561548a57602282511061183e5761ffff60226105619301519116600052600260205261547d604060002060008052602052604060002090565b5490611805821515615492565b50516118af57565b1561549957565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b156154e257565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156155a5576001600160401b03919004818111615563571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b6143b8565b7f000000000000000000000000000000000000000000000000000000000000000080156155a557810690818103908111610d9c5791565b60405160006020820152602181019190915260c09190911b6001600160c01b031916604182015260298152606081016001600160401b03811182821017610f975760405290565b1561562f57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926107c394604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526156c9815180926020868601910161076a565b8101036051810184520182610fd2565b906156f1600160ff6156ea856159e0565b1614615628565b6156fa82615990565b9061570483615a2b565b90604984511061577557604984015193605181511061573957615736605182015191615730815161471c565b9061590c565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107c39082906001600160a01b038116331461460c576157d3823383613620565b61460c565b6107c39183916001600160a01b038116308114159081615804575b501561345057610bb1833383613620565b9050331415386157f3565b1561581657565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561585357565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6158a08261589981613374565b101561580f565b6158ad828251101561584c565b816158c5575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106158f95750508252601f01601f191660405290565b90928351815260208091019301906158e1565b6159198261589981613374565b61592e815161592784613382565b111561584c565b81615946575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061597d5750508252601f01601f191660405290565b9092835181526020809101930190615965565b60218151106159a357602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106159f0576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615739576029015190565b6020815110615a4b576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615a9c87610f9c565b6096875282602088019560a036883760208451940192f1903d9060968211615aca575b6000908286523e9190565b60969150615abf56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba2646970667358221220d7826c45684a8e683ff61ce287071db64113d91ea67e98910fb88887d7e1a92064736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"; + "0x6101c06040523462000b7d5761016062006906803803809162000025826101c062000b9e565b6101c0391262000b7d576200003c6101c062000bc2565b6101e051906001600160a01b038216820362000b7d57610200516001600160a01b038116810362000b7d576200007461022062000bc2565b926200008261024062000bc2565b916200009061026062000bc2565b6200009d61028062000bc2565b91620000ab6102a062000bc2565b93620000b96102c062000bc2565b95620000c76102e062000bc2565b91620000d561030062000bc2565b9360405191620000e58362000b82565b60048352635553444f60e01b60208401526040519a620001058c62000b82565b60018c52603160f81b60208d0152604051620001218162000b82565b60048152635553444f60e01b602082015260405191620001418362000b82565b60048352635553444f60e01b60208401526200015d3362000bd7565b6001600160a01b0316608052600860a0528051906001600160401b038211620008c857600b5490600182811c9216801562000b72575b602083101462000a445781601f84931162000b00575b50602090601f831160011462000a715760009262000a65575b50508160011b916000199060031b1c191617600b555b8051906001600160401b038211620008c857600c5490600182811c9216801562000a5a575b602083101462000a445781601f849311620009d2575b50602090601f8311600114620009435760009262000937575b50508160011b916000199060031b1c191617600c555b6402540be40060c0526080516040516303408e4760e41b815290602090829060049082906001600160a01b03165afa9081156200092b57600091620008de575b5061ffff1680600052600f60205260406000203360005260205260406000209060ff19916001838254161790556000526010602052604060002033600052602052600160406000209182541617905560e05260018060a01b031660018060a01b0319600d541617600d5560208151910120976020815191012088610160528061018052466101205260405198600080516020620068e683398151915260208b015260408a015260608901524660808901523060a089015260a088528760c081011060018060401b0360c08a011117620008c85760c08801604081905288516020808b0191909120610100523061014052600080516020620068e68339815191526101a052601580546001600160a01b039485166001600160a01b031991821681179092556016805498861698821689179055601780549986169982168a179055601880549a86169a82168b179055601980549b86169b82168c179055601a805496861696821687179055601b805497909516968116871790945560129091527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3805484169095179094557f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4805483169098179097557f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc805482169092179091557f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2805482169092179091557f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a805482169092179091557fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0538054821690921790915560056000527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746805490911690911790556200053e9062000b82565b600560c082015260e0810163100b652360e01b8152610306600052601c8060205260c06040600020930151916008831015620008b25783549264ffffffff00948592519160d89560ff938464ffffffffff199687928a1c169316911617179055604051620005ac8162000b82565b6003815260208101634dd8df6360e11b81526103076000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620005fa8162000b82565b60058152602081016313030a6160e31b81526103056000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006488162000b82565b6003815260208101631007cea560e31b81526103046000528460205260406000209151906008821015620008b257848489855493518a1c169316911617179055604051620006968162000b82565b60078152602081016381618d0560e01b81526103096000528460205260406000209151906008821015620008b257848489855493518a1c16931691161717905560405194620006e58662000b82565b600186526020860193630cef3d9360e31b855261030a60005260205260406000209551946008861015620008b25786549451901c1693169116171790553360018060a01b0360005416036200086e576001600160a01b038116156200081a576200074f9062000bd7565b604051615cc7908162000c1f82396080518181816105bc0152818161087f015281816109c801528181610bd401528181611100015281816123c00152818161267e015281816130da015281816144d101528181614e800152615150015260a05181611a2c015260c0518181816152f70152818161541d0152818161568e0152615728015260e05181612a9c015261010051816138a00152610120518161395b0152610140518161386a015261016051816138ef0152610180518161391501526101a051816138cc0152f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6020813d60201162000922575b81620008fa6020938362000b9e565b810103126200091e57519061ffff821682036200091b575061ffff62000282565b80fd5b5080fd5b3d9150620008eb565b6040513d6000823e3d90fd5b0151905038806200022c565b600c600090815293507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c791905b601f1984168510620009b6576001945083601f198116106200099c575b505050811b01600c5562000242565b015160001960f88460031b161c191690553880806200098d565b8181015183556020948501946001909301929091019062000970565b600c6000529091507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7601f840160051c81016020851062000a3c575b90849392915b601f830160051c8201811062000a2c57505062000213565b6000815585945060010162000a14565b508062000a0e565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001fd565b015190503880620001c2565b600b600090815293507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db991905b601f198416851062000ae4576001945083601f1981161062000aca575b505050811b01600b55620001d8565b015160001960f88460031b161c1916905538808062000abb565b8181015183556020948501946001909301929091019062000a9e565b600b6000529091507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9601f840160051c81016020851062000b6a575b90849392915b601f830160051c8201811062000b5a575050620001a9565b6000815585945060010162000b42565b508062000b3c565b91607f169162000193565b600080fd5b604081019081106001600160401b03821117620008c857604052565b601f909101601f19168101906001600160401b03821190821017620008c857604052565b51906001600160a01b038216820362000b7d57565b600080546001600160a01b039283166001600160a01b03198216811783559216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146104f057806301ffc9a7146104eb57806306fdde03146104e657806307e0db17146104e1578063095ea7b3146104dc5780630df37483146104d757806310ddb137146104d2578063147b6228146104cd57806318160ddd1461044157806323b872dd146104c8578063313ce567146104c35780633644e515146104be578063365260b4146104b957806339509351146104b45780633bdd4a43146104af5780633d8b38f6146104aa5780633f1f4fa4146104a557806340c10f19146104a057806342d65a8d1461049b578063437be6221461049657806344770515146104915780634c42899a146104915780635128e83d1461048c5780635b8c41e6146104875780635c975abb1461048257806366ad5c8a1461047d578063695ef6bf1461047857806370a0823114610473578063715018a61461046e5780637533d7881461046957806376203b4814610464578063796fd43a1461045f5780637ecebe001461045a578063857749b0146104555780638cfd8f5c146104505780638da5cb5b1461044b5780639169d59e146104465780639358928b14610441578063950c8a741461043c578063952168c51461043757806395d89b41146104325780639bdb98121461042d5780639d554eac146104285780639dc29fac146104235780639f38369a1461041e578063a457c2d714610419578063a4c51df514610414578063a6c3d1651461040f578063a9059cbb1461040a578063b02f69a214610405578063b25ea8fb14610400578063b28de4c5146103fb578063b353aaa7146103f6578063ba03a8d7146103f1578063baf3292d146103ec578063c056a8de146103e7578063c4461834146103e2578063cbed8b9c146103dd578063ce8849ed146103d8578063d1deba1f146103d3578063d505accf146103ce578063dbd01de1146103c9578063dd62ed3e146103c4578063de406577146103bf578063df2a5b3b146103ba578063e6a20ae6146103b5578063e78eb946146103b0578063eab45d9c146103ab578063eaffd49a146103a6578063eb8d72b7146103a1578063ec6d062b1461039c578063ed629c5c14610397578063f00c298d14610392578063f2fde38b1461038d578063f5ecbdbc14610388578063f8974de014610383578063fa74f0b51461037e5763fc0c546a0361000e5761320c565b6131bd565b613144565b613070565b612fa9565b612f26565b612f03565b612eb9565b612d6f565b612ce6565b612c88565b612be3565b612bb8565b612acb565b612a86565b612a2c565b612a03565b6128a2565b61273f565b612716565b61262a565b61260d565b6124cd565b612439565b6123ef565b6123aa565b612381565b61230a565b612263565b612219565b612096565b612003565b611f45565b611ea2565b611e36565b611ddc565b611d91565b611ced565b611bca565b611b70565b610a68565b611acb565b611aa2565b611a50565b611a12565b6119d5565b6118ff565b6116e1565b61168a565b611544565b611507565b611424565b61139e565b61137b565b611314565b6111fc565b6111e0565b611167565b6110e6565b611073565b61103a565b610fde565b610f08565b610c52565b610b4e565b610ae2565b610ac6565b610a86565b610a29565b61099f565b610960565b61092b565b610856565b610776565b6106b9565b6105a5565b61ffff81160361050157565b600080fd5b3590610511826104f5565b565b9181601f84011215610501578235916001600160401b038311610501576020838186019501011161050157565b90608060031983011261050157600435610559816104f5565b916001600160401b0390602435828111610501578161057a91600401610513565b9390939260443581811681036105015792606435918211610501576105a191600401610513565b9091565b34610501576105b336610540565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106745761063961064192610019976106326106186106138a61ffff166000526001602052604060002090565b61166f565b805190818414918261066a575b5081610647575b5061481f565b369161125e565b92369161125e565b9261491f565b905061065436848661125e565b602081519101209060208151910120143861062c565b1515915038610625565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346105015760203660031901126105015760043563ffffffff60e01b811680910361050157602090631f7ecdf760e01b81149081156106fe575b506040519015158152f35b6301ffc9a760e01b149050386106f3565b600091031261050157565b60005b83811061072d5750506000910152565b818101518382015260200161071d565b906020916107568151809281855285808601910161071a565b601f01601f1916010190565b90602061077392818152019061073d565b90565b34610501576000806003193601126108535760405181600b546107988161159f565b8084529060019081811690811561082b57506001146107d2575b6107ce846107c281880382610d6d565b60405191829182610762565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061081857505050816107ce936107c292820101936107b2565b80548585018701529285019281016107fc565b6107ce96506107c29450602092508593915060ff191682840152151560051b820101936107b2565b80fd5b34610501576000602036600319011261085357600435610875816104f5565b61087d613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156108ec576108e0575080f35b6108e990610d1f565b80f35b6137e3565b5080fd5b6001600160a01b0381160361050157565b60043590610511826108f5565b60643590610511826108f5565b3590610511826108f5565b346105015760403660031901126105015761095560043561094b816108f5565b6024359033613479565b602060405160018152f35b346105015760403660031901126105015761ffff600435610980816104f5565b610988613227565b166000526003602052602435604060002055600080f35b346105015760006020366003190112610853576004356109be816104f5565b6109c6613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156108f157602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156108ec576108e0575080f35b3461050157602036600319011261050157610a4f60018060a01b03601e541633146139f8565b601d546004358101809111610a6357601d55005b61327f565b34610501576000366003190112610501576020600a54604051908152f35b3461050157606036600319011261050157610955600435610aa6816108f5565b602435610ab2816108f5565b60443591610ac18333836135a4565b613371565b3461050157600036600319011261050157602060405160128152f35b34610501576000366003190112610501576020610afd613867565b604051908152f35b60643590811515820361050157565b60243590811515820361050157565b60a43590811515820361050157565b60043590811515820361050157565b3590811515820361050157565b346105015760a036600319011261050157600435610b6b816104f5565b610b73610b05565b90608435906001600160401b03821161050157610b996106326040933690600401610513565b90610bd0610bb3610bab60443561568c565b60243561575d565b928451958694859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108ec576000908192610c21575b50604080519182526020820192909252f35b9050610c44915060403d8111610c4b575b610c3c8183610d6d565b810190615012565b9038610c0f565b503d610c32565b3461050157604036600319011261050157600435610c6f816108f5565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610a63576109559133613479565b60609060c31901126105015760c490565b60609060a31901126105015760a490565b908160609103126105015790565b908160e09103126105015790565b60809060a31901126105015760a490565b608090608319011261050157608490565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d3257604052565b610d09565b60c081019081106001600160401b03821117610d3257604052565b604081019081106001600160401b03821117610d3257604052565b90601f801991011681019081106001600160401b03821117610d3257604052565b604051906101a082018281106001600160401b03821117610d3257604052565b6084359060ff8216820361050157565b359060ff8216820361050157565b81601f82011215610501578035906001600160401b038211610d32576040805193602091610dff838660051b0187610d6d565b84865282860191836101a080970286010194818611610501578401925b858410610e2d575050505050505090565b868483031261050157848791610e41610d8e565b610e4a87610b41565b8152610e57838801610b41565b83820152610e66868801610b41565b868201526060610e77818901610506565b908201526080610e88818901610920565b9082015260a0610e99818901610b41565b9082015260c0610eaa818901610920565b9082015260e0610ebb818901610920565b9082015261010080880135908201526101208088013590820152610140610ee3818901610dbe565b9082015261016080880135908201526101808088013590820152815201930192610e1c565b61016036600319011261050157610f1d610906565b6001600160401b039060643582811161050157610f3e903690600401610ccb565b60843583811161050157610f56903690600401610cd9565b90610f6036610ce7565b6101243585811161050157610f79903690600401610513565b9390926101443596871161050157610f98610019973690600401610dcc565b956044359060243590613bc8565b90604060031983011261050157600435610fbf816104f5565b91602435906001600160401b038211610501576105a191600401610513565b3461050157602061ffff61102b610ff436610fa6565b939091166000526001845261101661101d6040600020604051928380926115d9565b0382610d6d565b84815191012092369161125e565b82815191012014604051908152f35b346105015760203660031901126105015761ffff60043561105a816104f5565b1660005260036020526020604060002054604051908152f35b3461050157604036600319011261050157610019600435611093816108f5565b6110a260ff60115416156145fb565b6110aa6144bc565b600052600f6020526110dd60ff6110d660406000203360018060a01b0316600052602052604060002090565b54166139f8565b60243590614636565b34610501576110f436610fa6565b91906110fe613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561050157604051928380926342d65a8d60e01b82528161115560009889978894600485016148b0565b03925af180156108ec576108e0575080f35b3461050157602036600319011261050157600435611184816108f5565b6001600160a01b031680156111a957600d80546001600160a01b031916919091179055005b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b3461050157600036600319011261050157602060405160008152f35b3461050157602036600319011261050157600435611219816108f5565b611221613227565b601e80546001600160a01b0319166001600160a01b0392909216919091179055005b6001600160401b038111610d3257601f01601f191660200190565b92919261126a82611243565b916112786040519384610d6d565b829481845281830111610501578281602093846000960137010152565b6060600319820112610501576004356112ad816104f5565b916024356001600160401b03928382116105015780602383011215610501578160246112de9360040135910161125e565b9160443590811681036105015790565b60209061130892826040519483868095519384920161071a565b82019081520301902090565b3461050157602061137261ffff6113518361132e36611295565b94909116600052600582526040600020826040519483868095519384920161071a565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b3461050157600036600319011261050157602060ff601154166040519015158152f35b34610501576113ac36610540565b91929493903033036113d0576106396113ca9261001997369161125e565b92614ae7565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126105015760043561143c816108f5565b602435611448816104f5565b604435916084356001600160401b03811161050157602061ffff61147f600080516020615c52833981519152933690600401610ccb565b936114f2853561148e816108f5565b6114ac61063286890135986114a28a6108f5565b6040810190614dfe565b6114b6818a615589565b6114cb6114c4606435615726565b5085615930565b976114d789151561506c565b6114e96114e38a61568c565b8c61575d565b9234938b61510c565b6040519485526001600160a01b0316941692a4005b3461050157602036600319011261050157600435611524816108f5565b60018060a01b031660005260086020526020604060002054604051908152f35b34610501576000806003193601126108535761155e613227565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156115cf575b60208310146115b957565b634e487b7160e01b600052602260045260246000fd5b91607f16916115ae565b90600092918054916115ea8361159f565b91828252600193848116908160001461164c575060011461160c575b50505050565b90919394506000526020928360002092846000945b838610611638575050505001019038808080611606565b805485870183015294019385908201611621565b9294505050602093945060ff191683830152151560051b01019038808080611606565b9061051161168392604051938480926115d9565b0383610d6d565b346105015760203660031901126105015761ffff6004356116aa816104f5565b1660005260016020526107ce6110166116cd6040600020604051928380926115d9565b60405191829160208352602083019061073d565b60e0366003190112610501576004356116f9816108f5565b602435611705816104f5565b604435916001600160401b03906084358281116105015761172a903690600401610513565b91909260a43591818316918284036105015760c43590811161050157611754903690600401610ccb565b9261178b843595611764876108f5565b6117836117796020880135976114a2896108f5565b999092369161125e565b97369161125e565b9460ff6006541660001461187e57602286511061183957856020956114e96114f2946118078c6117f461ffff9a8b6022600080516020615c528339815191529f0151931660005260028d526117ee60406000206001600052602052604060002090565b546132b1565b906118008215156155de565b101561562a565b61181c611815606435615726565b5088615930565b9a6118288c151561506c565b8d6118328d61568c565b90336157ea565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516118ab57600080516020615c528339815191529460209461ffff946114e96114f294611807565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b61010080600319360112610501576024359061191a826108f5565b6001600160401b036044358181116105015761193a903690600401610cd9565b9260643591821161050157610019936119c26119b76119606119d0953690600401610ccb565b6119a561196c36610cf8565b94604051988997633cb7ea1d60e11b60208a015260043560248a015260018060a01b031660448901526064880152610124870190613abf565b85810360231901608487015290613a8b565b9160a4840190613b70565b03601f198101835282610d6d565b6142ed565b34610501576020366003190112610501576004356119f2816108f5565b60018060a01b031660005260136020526020604060002054604051908152f35b3461050157600036600319011261050157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610501576040366003190112610501576020611372600435611a72816104f5565b61ffff60243591611a82836104f5565b166000526002835260406000209061ffff16600052602052604060002090565b34610501576000366003190112610501576000546040516001600160a01b039091168152602090f35b3461050157604036600319011261050157600435611ae8816108f5565b7fd7b463fb7e7be5d5389dafa46448b883b320f7c77f63a00c9db0e2865ccdb3d76020611b13610b14565b92611b1c613227565b611b246144bc565b60009081526010835260408082206001600160a01b03841683526020529020611b5b9085905b9060ff801983541691151516179055565b60405193151584526001600160a01b031692a2005b34610501576000366003190112610501576004546040516001600160a01b039091168152602090f35b9181601f84011215610501578235916001600160401b038311610501576020808501946101a0850201011161050157565b60a036600319011261050157600435611be2816104f5565b6001600160401b039060243582811161050157611c03903690600401610513565b909160643584811161050157611c1d903690600401610ccb565b93608435908111610501576100199461ffff94611ce894611cd9611c78611c4b6119c2963690600401611b99565b9490936040519a8b9963952168c560e01b60208c01521660248a015260a060448a015260c4890191613a6a565b60443560648801526060611cc960231996878a85030160848b01528035611c9e816108f5565b6001600160a01b0390811685526020820135611cb9816108f5565b1660208501526040810190613a39565b9190928160408201520191613a6a565b928584030160a4860152613e00565b61445f565b34610501576000806003193601126108535760405181600c54611d0f8161159f565b8084529060019081811690811561082b5750600114611d38576107ce846107c281880382610d6d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611d7e57505050816107ce936107c292820101936107b2565b8054858501870152928501928101611d62565b3461050157602060ff611dd061ffff61135184611dad36611295565b94909116600052600782526040600020826040519483868095519384920161071a565b54166040519015158152f35b346105015760008060031936011261085357611df6613227565b601d5480611e02575080f35b30825260086020526040822054818110611e315750805b808203918211610a63576108e991601d553333613371565b611e19565b3461050157604036600319011261050157610019600435611e56816108f5565b611e6560ff60115416156145fb565b611e6d6144bc565b6000526010602052611e9960ff6110d660406000203360018060a01b0316600052602052604060002090565b602435906146de565b346105015760203660031901126105015761ffff600435611ec2816104f5565b166000526001602052611016611ee26040600020604051928380926115d9565b805115611f00576107c281611efa6107ce9351614801565b90615a0a565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461050157604036600319011261050157600435611f62816108f5565b60243590336000526009602052611f8f8160406000209060018060a01b0316600052602052604060002090565b5491808310611fb057611fa492039033613479565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346105015760e036600319011261050157600435612020816104f5565b6001600160401b039060643582811161050157612041903690600401610513565b608492919235848116810361050157612058610b23565b9160c43595861161050157612074612084963690600401610513565b9590946044359060243590614e30565b60408051928352602083019190915290f35b34610501576120a436610fa6565b906120ad613227565b604051926020928083858701376120d96034868381013060601b88820152036014810188520186610d6d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d32576121138361210d865461159f565b866148cb565b80601f84116001146121835750918080926121729695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612178575b50501b916000199060031b1c19161790555b604051938493846148b0565b0390a180f35b015192503880612154565b91939498601f19841661219b87600052602060002090565b938a905b828210612202575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185612172989694106121e9575b505050811b019055612166565b015160001960f88460031b161c191690553880806121dc565b80888697829497870151815501960194019061219f565b3461050157604036600319011261050157610955600435612239816108f5565b6024359033613371565b6101e090608319011261050157608490565b908160a09103126105015790565b6102c03660031901126105015760043561227c816108f5565b602435612288816108f5565b60443591612295836104f5565b61229d610913565b926122a736612243565b6001600160401b039461026435868111610501576122c9903690600401611b99565b92909161028435888111610501576122e5903690600401612255565b946102a43598891161050157612302610019993690600401610513565b989097613f8b565b3461050157604036600319011261050157602435612327816108f5565b61232f613227565b60008080808094600435905af16123446139c8565b501561234d5780f35b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce8819985a5b195960a21b6044820152606490fd5b3461050157600036600319011261050157601e546040516001600160a01b039091168152602090f35b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157604036600319011261050157602060ff611dd0602435612413816108f5565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b34610501576020366003190112610501577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612479816108f5565b612481613227565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261050157600490565b60c0906101231901126105015761012490565b61022080600319360112610501576124e4366124a9565b6124ed36610ca9565b916124f7366124ba565b906001600160401b03906101e4358281116105015761251a903690600401611b99565b909161020493843590811161050157612537903690600401610513565b94909560405198899863602b546f60e11b60208b01528035612558816108f5565b6001600160a01b0390811660248c0152806020830135612577816108f5565b1660448c0152604082013560648c0152606082013560848c0152608082013561259f816108f5565b1660a48b015260a0013560c48a015260e489016125bb91614261565b61014488016125c991614284565b8601526102448501906125db92613e00565b90602319848303016102248501526125f292613a6a565b03601f19810182526126049082610d6d565b610019906143b9565b346105015760003660031901126105015760206040516127108152f35b3461050157608036600319011261050157600435612647816104f5565b602435612653816104f5565b6064356001600160401b03811161050157612672903690600401610513565b909261267c613227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561050157600080946126f3604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613a6a565b03925af180156108ec5761270357005b8061271061001992610d1f565b8061070f565b3461050157600036600319011261050157600e546040516001600160a01b039091168152602090f35b61274836610540565b9161ffff8694929616600052600560205261278f81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156128515761284084836128397fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006128258461280d8e8a8f61284c9f908f6127f3906127e66128079436908d61125e565b6020815191012014614d71565b61ffff166000526005602052604060002090565b91614d58565b906001600160401b0316600052602052604060002090565b5561283136878d61125e565b93369161125e565b9188614ae7565b60405195869586614dc7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346105015760e0366003190112610501576004356128bf816108f5565b6024356128cb816108f5565b60443590606435926128db610dae565b938042116129be576129a66129b9916129806100199761298e6129198760018060a01b03166000526013602052604060002090815491600183019055565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808c1693830193909352918b166060820152608081018c905260a081019290925260c082019590955292839060e0820190565b03601f198101845283610d6d565b6129a160c4359360a43593519020613981565b613688565b6001600160a01b0383811691161461363c565b613479565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461050157600036600319011261050157600d546040516001600160a01b039091168152602090f35b34610501576040366003190112610501576020611372600435612a4e816108f5565b60243590612a5b826108f5565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b34610501576000366003190112610501576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461050157606036600319011261050157600435612ae8816104f5565b602435612af4816104f5565b60443591612b00613227565b8215612b7b5761284c7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612b558560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461050157600036600319011261050157602060405160018152f35b90816101c09103126105015790565b61014036600319011261050157600435612bfc816108f5565b602435612c08816108f5565b60443591612c15836104f5565b612c1d610913565b6001600160401b03939060843585811161050157612c3f903690600401610513565b90612c4936610cba565b926101043588811161050157612c63903690600401612bd4565b946101243598891161050157612c80610019993690600401611b99565b98909761419e565b34610501576020366003190112610501577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020612cc4610b32565b612ccc613227565b151560ff196006541660ff821617600655604051908152a1005b346105015761010036600319011261050157600435612d04816104f5565b6001600160401b039060243582811161050157612d25903690600401610513565b919060443590848216820361050157608435612d40816108f5565b60c43595861161050157612d5b610019963690600401610513565b94909360e4359660a4359460643593614f26565b3461050157612d7d36610fa6565b9190612d87613227565b60009161ffff81168352600160209080825260408520916001600160401b038711610d3257612dc087612dba855461159f565b856148cb565b8590601f8811600114612e275750918680879893612172957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612e1c575b501b906000198460031b1c1916179055604051938493846148b0565b880135925038612e00565b90601f198816612e3c85600052602060002090565b9288905b828210612ea2575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899612172969410612e88575b505082811b019055612166565b870135600019600386901b60f8161c191690553880612e7b565b808685968294968c01358155019501930190612e40565b3461050157604036600319011261050157602060ff611dd0602435612edd816108f5565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b3461050157600036600319011261050157602060ff600654166040519015158152f35b3461050157604036600319011261050157600435612f43816108f5565b7f53b8f1e625ffdc96b26d9f5c6bba4ebc3f54077767495fa2619d32b285e193b96020612f6e610b14565b92612f77613227565b612f7f6144bc565b6000908152600f835260408082206001600160a01b03841683526020529020611b5b908590611b4a565b3461050157602036600319011261050157600435612fc6816108f5565b612fce613227565b6001600160a01b03908116801561301c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346105015760803660031901126105015760043561308d816104f5565b6024359061309a826104f5565b6130a56044356108f5565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec576107ce91600091613123575b5060405191829182610762565b61313e913d8091833e6131368183610d6d565b81019061487a565b38613116565b346105015760203660031901126105015761315d610b32565b61317260018060a01b03600e541633146139f8565b60ff601154917f9c13c5f6c628c1c82eb2b3fd8714da5c2857dbd0ad8ab6b2074abcf81015d396604080519284861615158452151592836020820152a160ff19909216911617601155005b34610501576020366003190112610501576004356131da816108f5565b6131e2613227565b6001600160a01b03166131f68115156139f8565b600e80546001600160a01b031916919091179055005b34610501576000366003190112610501576020604051308152f35b6000546001600160a01b0316330361323b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610a6357565b6051019081605111610a6357565b91908201809211610a6357565b156132c557565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561331d57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156134265761340b82600080516020615c72833981519152946134219416966133ab8815156132be565b6001600160a01b03811660009081526008602052604090206133f0908590546133d682821015613316565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561355357821693841561350357806134f27f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946134db6134219560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016135dc5750505050565b8084106135f7576135ee930391613479565b38808080611606565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b1561364357565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916107739391613697936137ef565b9190916136c4565b634e487b7160e01b600052602160045260246000fd5b600511156136bf57565b61369f565b6136cd816136b5565b806136d55750565b6136de816136b5565b6001810361372a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b0390fd5b613733816136b5565b600281036137805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061378c6003926136b5565b1461379357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b6040513d6000823e3d90fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161385b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156108ec5781516001600160a01b03811615613855579190565b50600190565b50505050600090600390565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613958575b156138c2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261395281610d37565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613899565b613989613867565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117610d325760405251902090565b3d156139f3573d906139d982611243565b916139e76040519384610d6d565b82523d6000602084013e565b606090565b156139ff57565b60405162461bcd60e51b81526020600482015260126024820152711554d113ce881d5b985d5d1a1bdc9a5e995960721b6044820152606490fd5b9035601e19823603018112156105015701602081359101916001600160401b03821161050157813603831361050157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060611cc9610773938035613aa0816108f5565b6001600160a01b03168452602081810135908501526040810190613a39565b9061077390823581526020830135613ad6816104f5565b61ffff80911660208301526040840135613aef816104f5565b1660408201526060830135613b03816108f5565b6001600160a01b0316606082015260c080613b53613b38613b276080880188613a39565b60e0608088015260e0870191613a6a565b613b4560a0880188613a39565b9086830360a0880152613a6a565b94013591613b60836108f5565b6001600160a01b03909216910152565b60609081813591613b80836108f5565b6001600160a01b039283168552826020820135613b9c816108f5565b166020860152826040820135613bb1816108f5565b1660408601520135613bc2816108f5565b16910152565b939490929596613c4d929897613c3d613c32613c1f60409a8b519d8e9960209b633bdd4a4360e01b8d8d015260018060a01b031660248c015260448b015260648a0152610184610160998a60848201520190613a8b565b6023198d8203810160a48f015299613abf565b9360c48c0190613b70565b868a8403016101448b0152613a6a565b92868403016101648701528180865194858152019501936000915b848310613c9057505050505050906119d081613c8c9303601f198101835282610d6d565b5050565b909192939495846101a06001928951613cab82825115159052565b808401511515828501528087015115158288015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015280860151828701526101809081015190820152019701959493019190613c68565b35906001600160801b038216820361050157565b60808091613d7881610b41565b151584526020810135613d8a816108f5565b6001600160a01b031660208501526000196001831b0180613dad60408401613d57565b166040860152613dbf60608301613d57565b1660608501520135910152565b60408091613dd981610b41565b151584526020810135613deb816108f5565b6001600160a01b031660208501520135910152565b9190808252602080920192916000905b828210613e1e575050505090565b9091929380613e38600192613e3288610b41565b15159052565b613e4e613e46848801610b41565b151582850152565b613e666040613e5e818901610b41565b151590830152565b613e806060613e76818901610506565b61ffff1690830152565b613e9f6080613e90818901610920565b6001600160a01b031690830152565b613eaf60a0613e5e818901610b41565b613ebf60c0613e90818901610920565b613ecf60e0613e90818901610920565b61010080870135908201526101208087013590820152613eff610140613ef6818901610dbe565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190613e10565b9060a0613f7b61077393613f3981610b41565b1515845260208101356020850152613f5360408201610b41565b1515604085015261ffff6060820135613f6b816104f5565b1660608501526080810190613a39565b9190928160808201520191613a6a565b604051635817b4d160e11b60208201526001600160a01b039182166024820152918116604483015261ffff909216606482015291811660848301529096879695949093929091613fda82610b41565b151560a4890152602082013560c4890152604082013560e48901526060820135614003816108f5565b1661010488015261401660808201610920565b6001600160a01b031661012488015261403160a08201610b41565b151561014488015260c0810135610164880152614055610184880160e08301613d6b565b6140689061022488019061018001613dcc565b61028486016102c090526102e486019061408192613e00565b916023199283868203016102a487015261409a91613f26565b91848303016102c48501526140ae92613a6a565b03601f19810182526140c09082610d6d565b613c8c9061440c565b9035609e1982360301811215610501570190565b90610773916140ef82613e3283610b41565b6020810135602083015261411161410860408301610b41565b15156040840152565b6060810135606083015261413361412a60808301610b41565b15156080840152565b60a081013560a083015261414d60c0830160c08301613dcc565b61415e610120808401908301613dcc565b614181610180614170818401846140c9565b906101c08091860152840190613f26565b916141926101a092838101906140c9565b91818403910152613f26565b6040516373c75ca360e11b60208201526001600160a01b039182166024820152918116604483015261ffff9092166064820152918116608483015261014060a48301529096879695909390926141f991610164890191613a6a565b93818135614206816108f5565b1660c488015281602082013561421b816108f5565b1660e48801526040013561422e816108f5565b1661010486015260231992838682030161012487015261424d916140dd565b91848303016101448501526140ae92613e00565b6040809161ffff8135614273816104f5565b1684526020810135613deb816108f5565b60a0809161429181610b41565b1515845260208101356142a3816108f5565b600180841b03809116602086015261ffff60408301356142c2816104f5565b1660408601526060820135606086015260808201356142e0816108f5565b1660808501520135910152565b600260005260126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b90821580614373575b61434f57565b61372661435b83614583565b60405162461bcd60e51b815291829160048301610762565b506001614349565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd08199bdd5b9960521b6044820152606490fd5b600660005260126020527f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600460005260126020527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe053546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3546001600160a01b0316801561437b57816000929160208493519201905af4906143406139c8565b600811156136bf57565b6040516303408e4760e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108ec57600090614512575b61ffff91501690565b6020823d8211614546575b8161452a60209383610d6d565b81010312610853575061ffff9051614541816104f5565b614509565b3d915061451d565b9092919261455b81611243565b916145696040519384610d6d565b82948284528282011161050157602061051193019061071a565b60448151106145d457600481015181019060208160248401930312610501576024810151906001600160401b038211610501570190806043830112156105015760248201516107739260440161454e565b506040516145e181610d52565b600a8152695553444f3a206461746160b01b602082015290565b1561460257565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113ce881c185d5cd95960a21b6044820152606490fd5b6001600160a01b0381169190821561469957600a5490828201809211610a635760009261468a602092600080516020615c7283398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6001600160a01b0381169081156147b2576001600160a01b0381166000908152600860205260409020548381106147625783600080516020615c728339815191529261474460009661342194039160018060a01b03166000526008602052604060002090565b5561475281600a5403600a55565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b601319810191908211610a6357565b605019810191908211610a6357565b1561482657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b602081830312610501578051906001600160401b03821161050157019080601f830112156105015781516107739260200161454e565b60409061ffff61077395931681528160208201520191613a6a565b90601f81116148d957505050565b600091825260208220906020601f850160051c83019410614915575b601f0160051c01915b82811061490a57505050565b8181556001016148fe565b90925082906148f5565b9290916149835a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061497d8261298061495c60a483018a61073d565b6001600160401b03881660648401528281036023190160848401528861073d565b30615c06565b939015614992575b5050505050565b61499b946149a5565b388080808061498b565b9193614a427fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614a50939561ffff81516020830120961695866000526005602052614a098361135160208b6040600020826040519483868095519384920161071a565b556001600160401b03614a2e604051988998895260a060208a015260a089019061073d565b92166040870152858203606087015261073d565b90838203608085015261073d565b0390a1565b90604051604081018181106001600160401b03821117610d325760405280925460ff81169060088210156136bf5790825260d81b6001600160e01b03191660209190910152565b91610773959361ffff614ad3926001600160401b039460018060a01b0316865216602085015260a0604085015260a084019061073d565b93166060820152608081840391015261073d565b929190614af383615bb9565b614b11614b0a82600052601c602052604060002090565b5460ff1690565b614b1a816144b2565b15614c735793614b3f614b3a61051196600052601c602052604060002090565b614a55565b8051614b4a816144b2565b60208201516001600160e01b03191691805190614b66826144b2565b614b6f826144b2565b600091600503614bbe575050601854614bb990614b9c906001600160a01b03165b6001600160a01b031690565b925b61298088888888604051988996602088015260248701614a9c565b614ce8565b60038151614bcb816144b2565b614bd4816144b2565b03614bfa575050601654614bb990614bf4906001600160a01b0316614b90565b92614b9e565b60078151614c07816144b2565b614c10816144b2565b03614c35575050601a54614bb990614c30906001600160a01b0316614b90565b614bf4565b60019051614c42816144b2565b614c4b816144b2565b03614c6a5750601b54614bb990614c30906001600160a01b0316614b90565b614bb990614bf4565b50614c86614c8084615b5e565b60ff1690565b80614c975750505061051191615281565b600103614ca757610511936153d8565b60405162461bcd60e51b81526020600482015260196024820152785553444f3a20756e6b6e6f776e207061636b6574207479706560381b6044820152606490fd5b949293919460088110156136bf576000908152601260205260409020546001600160a01b0316801561437b57816000929160208493519201905af492614d2c6139c8565b93158080614d50575b614d4457614992575050505050565b61372661435b86614583565b506000614d35565b6020919283604051948593843782019081520301902090565b15614d7857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91614df39060609461ffff6001600160401b039499989799168552608060208601526080850191613a6a565b951660408201520152565b903590601e198136030182121561050157018035906001600160401b0382116105015760200191813603831361050157565b949195989790611832614e59604099614e51614e5f97614e7c99369161125e565b94369161125e565b9761568c565b928451968794859463040a7bb160e41b8652309060048701615028565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156108ec576000908193614ebf57509190565b90506105a191925060403d8111610c4b57610c3c8183610d6d565b93969491614f089061077399979461ffff6001600160401b039416875260c0602088015260c0870191613a6a565b961660408401526060830152608082015260a0818503910152613a6a565b91969792989594939094303303614fcd57614f42908530615956565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b15610501576000988995614fb0936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614eda565b0393f180156108ec57614fc05750565b8061271061051192610d1f565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610501576020825192015190565b9192610773959361ffff6150579316845260018060a01b0316602084015260a0604084015260a083019061073d565b9215156060820152608081840391015261073d565b1561507357565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b926150d961077397959361ffff6150e79416865260c0602087015260c086019061073d565b90848203604086015261073d565b6001600160a01b0391821660608401529316608082015280830360a09091015261073d565b946151359193929561ffff8116600052600160205261513c6040600020604051948580926115d9565b0384610d6d565b8251156151b45761514e855182615212565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b15610501576000966151a391604051998a988997889662c5803160e81b8852600488016150b4565b03925af180156108ec57614fc05750565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115615277575b1161523357565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061522c565b9060ff61528d82615b5e565b16158061533f575b61529e906157a3565b6152b06152aa82615b0e565b91615ba9565b6001600160a01b039081831615615335575b61ffff7fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf9261531d6020936001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615713565b946153288682614636565b60405195865216941692a3565b61dead92506152c2565b508051602914615295565b98979692936001600160401b0361537c60e0989461ffff6153a89995168d5260208d61010091829101528d019061073d565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261073d565b930152565b6001600160401b036153cd6040939695949660608452606084019061073d565b951660208201520152565b90916153e384615857565b909161540d614b0a8761280d6154078b61ffff166000526007602052604060002090565b8c6112ee565b916154436001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615713565b9288888b831561553f575b505050853b156154f45794615495969461497d948a94612980948d996000146154ed5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a0161534a565b90156154e25750906154dd61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884969751910120906040519485941696846153ad565b0390a2565b9261051194926149a5565b1692615476565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614a50915050565b9061280d6155749261556e89615559615581979b30614636565b9961ffff166000526007602052604060002090565b906112ee565b805460ff19166001179055565b88888b61544e565b60065460ff16156155d65760228251106118395761ffff6022610511930151911660005260026020526155c9604060002060008052602052604060002090565b54906118008215156155de565b50516118ab57565b156155e557565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561563157565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561570e57046001600160401b03908181116156c9571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615676565b81810292918115918404141715610a6357565b7f0000000000000000000000000000000000000000000000000000000000000000801561570e57810690818103908111610a635791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d325760405290565b156157aa57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261077394604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615847815180926020868601910161071a565b8101036051810184520182610d6d565b9061586f600160ff61586885615b5e565b16146157a3565b61587882615b0e565b9061588283615ba9565b9060498451106158f35760498401519360518151106158b7576158b46051820151916158ae8151614810565b90615a8a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6107739082906001600160a01b03811633146146de576159518233836135a4565b6146de565b6107739183916001600160a01b038116308114159081615982575b501561337157610ac18333836135a4565b905033141538615971565b1561599457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156159d157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615a1e82615a1781613295565b101561598d565b615a2b82825110156159ca565b81615a43575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615a775750508252601f01601f191660405290565b9092835181526020809101930190615a5f565b615a9782615a1781613295565b615aac8151615aa5846132a3565b11156159ca565b81615ac4575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615afb5750508252601f01601f191660405290565b9092835181526020809101930190615ae3565b6021815110615b2157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615b6e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106158b7576029015190565b6020815110615bc9576020015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b9092916000809160405195615c1a87610d37565b6096875282602088019560a036883760208451940192f1903d9060968211615c48575b6000908286523e9190565b60969150615c3d56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f8feeeb8e841d40e147a6be7966cfb580d6048a6df1e487071e5b48e8e2e1a164736f6c634300081200338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"; type USDOConstructorParams = | [signer?: Signer] @@ -3018,8 +3056,12 @@ export class USDO__factory extends ContractFactory { _cluster: PromiseOrValue, _owner: PromiseOrValue, _leverageModule: PromiseOrValue, + _leverageDestinationModule: PromiseOrValue, _marketModule: PromiseOrValue, + _marketDestinationModule: PromiseOrValue, _optionsModule: PromiseOrValue, + _optionsDestinationModule: PromiseOrValue, + _genericModule: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { return super.deploy( @@ -3028,8 +3070,12 @@ export class USDO__factory extends ContractFactory { _cluster, _owner, _leverageModule, + _leverageDestinationModule, _marketModule, + _marketDestinationModule, _optionsModule, + _optionsDestinationModule, + _genericModule, overrides || {} ) as Promise; } @@ -3039,8 +3085,12 @@ export class USDO__factory extends ContractFactory { _cluster: PromiseOrValue, _owner: PromiseOrValue, _leverageModule: PromiseOrValue, + _leverageDestinationModule: PromiseOrValue, _marketModule: PromiseOrValue, + _marketDestinationModule: PromiseOrValue, _optionsModule: PromiseOrValue, + _optionsDestinationModule: PromiseOrValue, + _genericModule: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { return super.getDeployTransaction( @@ -3049,8 +3099,12 @@ export class USDO__factory extends ContractFactory { _cluster, _owner, _leverageModule, + _leverageDestinationModule, _marketModule, + _marketDestinationModule, _optionsModule, + _optionsDestinationModule, + _genericModule, overrides || {} ); } diff --git a/src/typechain/tapioca-bar/factories/usd0/index.ts b/src/typechain/tapioca-bar/factories/usd0/index.ts index 685f54b8..ea9c4b5f 100644 --- a/src/typechain/tapioca-bar/factories/usd0/index.ts +++ b/src/typechain/tapioca-bar/factories/usd0/index.ts @@ -5,3 +5,4 @@ export * as modules from "./modules"; export { BaseUSDO__factory } from "./BaseUSDO__factory"; export { BaseUSDOStorage__factory } from "./BaseUSDOStorage__factory"; export { USDO__factory } from "./USDO__factory"; +export { USDOFlashloanHelper__factory } from "./USDOFlashloanHelper__factory"; diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOCommon__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOCommon__factory.ts index 7814fff2..c5c17ea3 100644 --- a/src/typechain/tapioca-bar/factories/usd0/modules/USDOCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOCommon__factory.ts @@ -66,63 +66,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -897,19 +840,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1070,19 +1000,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOGenericModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOGenericModule__factory.ts new file mode 100644 index 00000000..a1140705 --- /dev/null +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOGenericModule__factory.ts @@ -0,0 +1,1855 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + USDOGenericModule, + USDOGenericModuleInterface, +} from "../../../usd0/modules/USDOGenericModule"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_lzEndpoint", + type: "address", + }, + { + internalType: "contract IYieldBoxBase", + name: "_yieldBox", + type: "address", + }, + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + ], + name: "CallOFTReceivedSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "_reason", + type: "bytes", + }, + ], + name: "MessageFailed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "NonContractAddress", + 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: false, + internalType: "bool", + name: "oldState", + type: "bool", + }, + { + indexed: false, + internalType: "bool", + name: "newState", + type: "bool", + }, + ], + name: "PausedUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "ReceiveFromChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_payloadHash", + type: "bytes32", + }, + ], + name: "RetryMessageSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_from", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "SendToChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetBurnerStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "_type", + type: "uint16", + }, + { + indexed: false, + internalType: "uint256", + name: "_minDstGas", + type: "uint256", + }, + ], + name: "SetMinDstGas", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetMinterStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "precrime", + type: "address", + }, + ], + name: "SetPrecrime", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "SetTrustedRemote", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "SetTrustedRemoteAddress", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "SetUseCustomAdapterParams", + 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: "DEFAULT_PAYLOAD_SIZE_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "NO_EXTRA_GAS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND_AND_CALL", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + 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: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedBurner", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedMinter", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "_from", + type: "bytes32", + }, + { + internalType: "address", + name: "_to", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint256", + name: "_gasForCall", + type: "uint256", + }, + ], + name: "callOnOFTReceived", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "circulatingSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cluster", + outputs: [ + { + internalType: "contract ICluster", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "conservator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "creditedPackets", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendAndCallFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "failedMessages", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "forceResumeReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + ], + name: "getConfig", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + ], + name: "getTrustedRemoteAddress", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "isTrustedRemote", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "lzEndpoint", + outputs: [ + { + internalType: "contract ILayerZeroEndpoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "lzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "minDstGasLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "nonblockingLzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "payloadSizeLimitLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "precrime", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "retryMessage", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendFrom", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "sendFromDestination", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + { + internalType: "bytes", + name: "_config", + type: "bytes", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "_packetType", + type: "uint16", + }, + { + internalType: "uint256", + name: "_minGas", + type: "uint256", + }, + ], + name: "setMinDstGas", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + ], + name: "setPayloadSizeLimit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_precrime", + type: "address", + }, + ], + name: "setPrecrime", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setReceiveVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setSendVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "setTrustedRemote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "setTrustedRemoteAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "setUseCustomAdapterParams", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "sharedDecimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + 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", + }, + { + inputs: [ + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "airdropAdapterParams", + type: "bytes", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ISendFrom.LzCallParams", + name: "sendFromData", + type: "tuple", + }, + { + components: [ + { + internalType: "bool", + name: "permitAll", + type: "bool", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", + }, + { + internalType: "uint16", + name: "actionType", + type: "uint16", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "permitBorrow", + type: "bool", + }, + { + 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", + }, + ], + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", + }, + ], + name: "triggerSendFrom", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "trustedRemoteLookup", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "useCustomAdapterParams", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "yieldBox", + outputs: [ + { + internalType: "contract IYieldBoxBase", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x61010060409080825234620004db57606081620051158038038091620000268285620004e0565b833981010312620004db5780516001600160a01b039182821691829003620004db57602080820151918483168303620004db5785015193808516809503620004db57620000726200051a565b906200007d6200051a565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e257600b54916001968784811c94168015620004d0575b89851014620004bc578190601f9485811162000468575b50899085831160011462000402578892620003f6575b5050600019600383901b1c191690871b17600b555b8051928311620003e257600c548681811c91168015620003d7575b88821014620003c35790818389959493116200036b575b508391831160011462000300576004949291869183620002f4575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ea579082918993916200029f575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551614bc990816200054c823960805181818161049d015281816107600152818161088f01528181610a0901528181610bca01528181611ac001528181611c1a015281816123dc01528181612b16015281816138030152613dd0015260a051816114b9015260c051818181610f8201528181614004015281816142850152818161445801526144f2015260e05181611ed10152f35b80929350858092503d8311620002e2575b620002bc8183620004e0565b81010312620002de575161ffff81168103620002de5787919061ffff620001c5565b5080fd5b503d620002b0565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000352575096836004981062000338575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000329565b8289015184558b978b9690940193928301920162000314565b9091929350600c86528786208380860160051c8201928a8710620003b9575b9189918b97969594930160051c01915b828110620003aa57505062000162565b8881558a96508991016200039a565b925081926200038a565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000451575050841162000437575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000428565b8385015186558d9790950194938401930162000415565b909150600b88528988208580850160051c8201928c8610620004b2575b918b91869594930160051c01915b828110620004a357505062000105565b8a81558594508b910162000493565b9250819262000485565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050457604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005045760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033957806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b5780636779ec9814610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063857749b0146103485780638cfd8f5c146103435780638da5cb5b1461033e5780639358928b14610339578063950c8a7414610334578063952168c51461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612446565b612372565b6122ab565b612288565b61223e565b6120f4565b61206b565b612009565b611fed565b611f00565b611ebb565b611e61565b611e38565b611cd5565b611cac565b611bc6565b611ba9565b611b39565b611aef565b611aaa565b611a80565b6118fd565b611866565b6117a8565b611705565b6116ba565b611616565b611581565b611558565b6108f0565b61152f565b6114dd565b61149f565b611308565b6112b1565b61116b565b61112e565b61104b565b610eda565b610e54565b610e31565b610dca565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611296565b805190818414918261054b575b5081610528575b5061370c565b3691610d0d565b923691610d0d565b92613b64565b9050610535368486610d0d565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816111c6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610cb1565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b612896565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b60243590336126b3565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f612461565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b604435916109498333836127de565b6125ab565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614456565b602435614527565b928451958694859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610cb1565b810190613f43565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c91336126b3565b6124b9565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a604060002060405192838092611200565b0382610cb1565b848151910120923691610d0d565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc8612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ad7565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b606081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b6001600160401b038111610c7657601f01601f191660200190565b929192610d1982610cf2565b91610d276040519384610cb1565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d0d565b9060606003198301126103d157600435610d78816103c5565b91602435906001600160401b0382116103d157610d9791600401610d44565b9060443561065481610410565b602090610dbe9282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e2861ffff610e0783610de436610d5f565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e6236610421565b9192949390303303610e865761051a610e8092610019973691610d0d565b92613f9d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b346103d15760a03660031901126103d157610ef66004356107d6565b610f016024356103c5565b6001600160401b036044358181116103d157610f21903690600401610d44565b50610f2d606435610410565b608435908082116103d157610f66610f4c610fa8933690600401610d44565b610f57303314612c0f565b60208082518301019101612e00565b95509692919360018060a09893981b031696805161102e575b507f000000000000000000000000000000000000000000000000000000000000000091166144dd565b90303b156103d15760405163695ef6bf60e01b815292600092849283918291610fd7918a8a8160048701612ed2565b0391305af180156107cd57611015575b50600080516020614b5483398151915261ffff6040519216918061101081906000602083019252565b0390a3005b8061102261102892610c63565b806105f0565b38610fe7565b6110379061307e565b38610f7f565b908160609103126103d15790565b60a03660031901126103d157600435611063816107d6565b60243561106f816103c5565b604435916084356001600160401b0381116103d157602061ffff6110a6600080516020614b3483398151915293369060040161103d565b9361111985356110b5816107d6565b6110d361051386890135986110c98a6107d6565b6040810190613d4e565b6110dd818a6143f1565b6110f26110eb6064356144f0565b50856146e7565b976110fe891515614168565b61111061110a8a614456565b8c614527565b9234938b6137bf565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561114b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d15760008060031936011261073457611185612461565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156111f6575b60208310146111e057565b634e487b7160e01b600052602260045260246000fd5b91607f16916111d5565b9060009291805491611211836111c6565b9182825260019384811690816000146112735750600114611233575b50505050565b90919394506000526020928360002092846000945b83861061125f57505050500101903880808061122d565b805485870183015294019385908201611248565b9294505050602093945060ff191683830152151560051b0101903880808061122d565b906103e16112aa9260405193848092611200565b0383610cb1565b346103d15760203660031901126103d15761ffff6004356112d1816103c5565b1660005260016020526106af610b536112f4604060002060405192838092611200565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611320816107d6565b60243561132c816103c5565b604435916001600160401b03906084358281116103d1576113519036906004016103e3565b91909260a43561136081610410565b60c4358281116103d15761137890369060040161103d565b90866113b0833596611389886107d6565b6113a861139e6020870135966110c9886107d6565b9a90923691610d0d565b983691610d0d565b9360ff6006541660001461141d579360209593611110846113eb600080516020614b348339815191529a958561ffff9a6111199916916139f4565b6114006113f96064356144f0565b50886146e7565b9a61140c8c1515614168565b8d6114168d614456565b90336145a1565b5050829391925161144b57600080516020614b348339815191529460209461ffff94611110611119946113eb565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e286004356114ff816103c5565b61ffff6024359161150f836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b60a03660031901126103d157600435611599816103c5565b6001600160401b036024358181116103d1576115b99036906004016103e3565b926064358381116103d1576115d290369060040161103d565b90608435948486116103d157366023870112156103d15785600401359485116103d1573660246101a08702880101116103d157602461001996019360443592612ace565b346103d1576000806003193601126107345760405181600c54611638816111c6565b8084529060019081811690811561070c5750600114611661576106af846106a381880382610cb1565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106116a757505050816106af936106a39282010193610693565b805485850187015292850192810161168b565b346103d157602060ff6116f961ffff610e07846116d636610d5f565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611725816103c5565b166000526001602052610b53611745604060002060405192838092611200565b805115611763576106a38161175d6106af9351613b46565b90614927565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356117c5816107d6565b602435903360005260096020526117f28160406000209060018060a01b0316600052602052604060002090565b549180831061181357611807920390336126b3565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611883816103c5565b6001600160401b03906064358281116103d1576118a49036906004016103e3565b6084929192356118b381610410565b60a435916118c08361096a565b60c4359586116103d1576118db6118eb9636906004016103e3565b9590946044359060243590613d80565b60408051928352602083019190915290f35b346103d15761190b36610ae3565b90611914612461565b604051926020928083858701376119406034868381013060601b88820152036014810188520186610cb1565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c765761197a8361197486546111c6565b86613af2565b80601f84116001146119ea5750918080926119d99695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946119df575b50501b916000199060031b1c19161790555b60405193849384613ad7565b0390a180f35b0151925038806119bb565b91939498601f198416611a0287600052602060002090565b938a905b828210611a69575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856119d998969410611a50575b505050811b0190556119cd565b015160001960f88460031b161c19169055388080611a43565b808886978294978701518155019601940190611a06565b346103d15760403660031901126103d15761081c600435611aa0816107d6565b60243590336125ab565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6116f9602435611b13816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611b79816107d6565b611b81612461565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611be3816103c5565b602435611bef816103c5565b6064356001600160401b0381116103d157611c0e9036906004016103e3565b9092611c18612461565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611c8f604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916128a2565b03925af180156107cd57611c9f57005b8061102261001992610c63565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611cde36610421565b9161ffff86949296166000526005602052611d2581604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611de757611dd68483611dcf7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611dbb84611da38e8a8f611de29f908f611d8990611d7c611d9d9436908d610d0d565b6020815191012014613cc1565b61ffff166000526005602052604060002090565b91613ca8565b906001600160401b0316600052602052604060002090565b55611dc736878d610d0d565b933691610d0d565b9188613f9d565b60405195869586613d17565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e28600435611e83816107d6565b60243590611e90826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f1d816103c5565b602435611f29816103c5565b60443591611f35612461565b8215611fb057611de27f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611f8a8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356120498161096a565b612051612461565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612089816103c5565b6001600160401b03906024358281116103d1576120aa9036906004016103e3565b9190604435906120b982610410565b6084356120c5816107d6565b60c4359586116103d1576120e06100199636906004016103e3565b94909360e4359660a4359460643593613e76565b346103d15761210236610ae3565b919061210c612461565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576121458761213f85546111c6565b85613af2565b8590601f88116001146121ac57509186808798936119d9957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936121a1575b501b906000198460031b1c191617905560405193849384613ad7565b880135925038612185565b90601f1988166121c185600052602060002090565b9288905b828210612227575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996119d996941061220d575b505082811b0190556119cd565b870135600019600386901b60f8161c191690553880612200565b808685968294968c013581550195019301906121c5565b346103d15760403660031901126103d157602060ff6116f9602435612262816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356122c8816107d6565b6122d0612461565b6001600160a01b03908116801561231e57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561238f816103c5565b6024359061239c826103c5565b6123a76044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af91600091612425575b5060405191829182610643565b612440913d8091833e6124388183610cb1565b810190613ab2565b38612418565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361247557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156124ff57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561255757565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156126605761264582600080516020614b748339815191529461265b9416966125e58815156124f8565b6001600160a01b038116600090815260086020526040902061262a9085905461261082821015612550565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561278d57821693841561273d578061272c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461271561265b9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016128165750505050565b808410612831576128289303916126b3565b3880808061122d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b51906103e1826103c5565b908160209103126103d15751610654816103c5565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60ff8116036103d157565b35906103e1826128c3565b9190808252602080920192916000905b8282106128f7575050505090565b909192938061291160019261290b88610974565b15159052565b61292761291f848801610974565b151582850152565b61293f6040612937818901610974565b151590830152565b612959606061294f8189016103d6565b61ffff1690830152565b61297860806129698189016107e7565b6001600160a01b031690830152565b61298860a0612937818901610974565b61299860c06129698189016107e7565b6129a860e06129698189016107e7565b610100808701359082015261012080870135908201526129d86101406129cf8189016128ce565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906128e9565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e060608201529796959194939290808235612a3f816107d6565b1660e08a01526020820135612a53816107d6565b166101008901526040810135601e19823603018112156103d15701926020843594019484116103d15783360385136103d157612ab2612aa560c096612abf9660606101208d01526101408c01916128a2565b61ffff90941660808a0152565b87830360a08901526128d9565b930152565b35610654816107d6565b959490919392612afd612af7612aed612ae8368988610d0d565b613659565b50949150506144f0565b50614456565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd57612bb198612b76612b9e956020958a95612b8495612ba89a600091612be2575b506040519c8d96338b89016129ff565b03601f198101885287610cb1565b612b98612b92368988610d0d565b8a61396a565b01612ac4565b9134943691610d0d565b913390866137bf565b604051903391600080516020614b3483398151915261ffff3393169180612bdd81906000602083019252565b0390a4565b612c029150893d8111612c08575b612bfa8183610cb1565b810190612881565b38612b66565b503d612bf0565b15612c1657565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826107d6565b90929192612c6c81610cf2565b91612c7a6040519384610cb1565b8294828452828201116103d15760206103e19301906105fb565b9080601f830112156103d157815161065492602001612c5f565b51906103e18261096a565b51906103e1826128c3565b81601f820112156103d1578051906001600160401b038211610c76576040805193602091612cf7838660051b0187610cb1565b84865282860191836101a0809702860101948186116103d1578401925b858410612d25575050505050505090565b86848303126103d157848791612d39610cd2565b612d4287612cae565b8152612d4f838801612cae565b83820152612d5e868801612cae565b868201526060612d6f818901612876565b908201526080612d80818901612c54565b9082015260a0612d91818901612cae565b9082015260c0612da2818901612c54565b9082015260e0612db3818901612c54565b9082015261010080880151908201526101208088015190820152610140612ddb818901612cb9565b9082015261016080880151908201526101808088015190820152815201930192612d14565b91909160e0818403126103d1578051612e18816103c5565b926020820151612e27816107d6565b926040830151612e3681610410565b926060810151916001600160401b03928381116103d15782016060818603126103d15760405190612e6682610c7b565b8051612e71816107d6565b82526020810151612e81816107d6565b60208301526040810151908582116103d157612e9f91879101612c94565b604082015293612eb160808401612876565b9360a08401519081116103d15760c091612ecc918501612cc4565b92015190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b8051821015612f3e5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15612f5b57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff612fbb60209295949560408552604085019061061e565b9416910152565b60009060033d11612fcf57565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d60248401111761303d57818401948551938411613045573d8501016020848701011161303d575061065492910160200190610cb1565b949350505050565b50949350505050565b3d15613079573d9061305f82610cf2565b9161306d6040519384610cb1565b82523d6000602084013e565b606090565b9060005b82518110156133215760406130a38161309b8487612f2a565b510151151590565b156130c55750806130bf6130b960019386612f2a565b5161339e565b01613082565b60606130ef61030a61ffff6130e8846130de888b612f2a565b51015161ffff1690565b1614612f54565b6130fe60a061309b8588612f2a565b61311c60c061310d8689612f2a565b5101516001600160a01b031690565b916131ed61312f60e061310d888b612f2a565b936131df610100613140898c612f2a565b5101518a6101206131518b83612f2a565b51015161316d6101406131648d85612f2a565b51015160ff1690565b9061018061318b8d6101606131828288612f2a565b51015195612f2a565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cb1565b61321c613211613205613205608061310d8a8d612f2a565b6001600160a01b031690565b916130de878a612f2a565b90803b156103d15761324a6000929183928751948580948193631221baf960e31b835260049a8b8401612fa0565b03925af1908161330e575b50613274576001613264612fc2565b6308c379a0146132c6575b61327f575b5050506001906130bf565b61329c61329861328d61304e565b9261309b878a612f2a565b1590565b15613274576132ad6132c291613326565b925162461bcd60e51b81529283928301610643565b0390fd5b6132ce612fe0565b806132da575b5061326f565b600091506132ef6132988461309b898c612f2a565b156132d457845162461bcd60e51b81529081906132c290828701610643565b8061102261331b92610c63565b38613255565b509050565b6044815110613377576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401612c5f565b5060405161338481610c96565b600a8152695553444f3a206461746160b01b602082015290565b8051156135155760808101516133be90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906133f161014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613502575b50613481576001613471612fc2565b6308c379a0146134c5575b613484575b50565b61349c613298602061349461304e565b930151151590565b15613481576134ad6132c291613326565b60405162461bcd60e51b815291829160048301610643565b6134cd612fe0565b806134d9575b5061347c565b6020830151600092506134d35760405162461bcd60e51b81529081906132c29060048301610643565b8061102261350f92610c63565b38613462565b608081015161352e90613205906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361356861014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613457565b156135e557565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561362657565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115613701575b50156136c457600283015193602284015193600261ffff87166001811480156136bb575b613697906135de565b6136a287151561361f565b146136aa5750565b925090506056604283015192015190565b5080821461368e565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861366a565b1561371357565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261378c61065497959361ffff61379a9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946137e89193929561ffff811660005260016020526137ef604060002060405194858092611200565b0384610cb1565b82511561387457613801855182613a43565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661385691604051998a988997889662c5803160e81b885260048801613767565b03925af180156107cd576138675750565b806110226103e192610c63565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156138d957565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561392557565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106139af5761ffff60226103e193015191166000526002602052604060002061030a600052602052604060002054906139a88215156138d2565b101561391e565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b919060228151106139af57602261ffff91015192166000526002602052613a2960406000206001600052602052604060002090565b54908101809111610ade576103e1916139a88215156138d2565b61ffff166000526003602052604060002054908115613aa8575b11613a6457565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613a5d565b906020828203126103d15781516001600160401b0381116103d1576106549201612c94565b60409061ffff610654959316815281602082015201916128a2565b90601f8111613b0057505050565b600091825260208220906020601f850160051c83019410613b3c575b601f0160051c01915b828110613b3157505050565b818155600101613b25565b9092508290613b1c565b601319810191908211610ade57565b605019810191908211610ade57565b929091613bd65a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613bd082613bc2613ba160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610cb1565b30614ad6565b939015613be5575b5050505050565b613bee94613bf8565b3880808080613bde565b9193613c957fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95613ca3939561ffff81516020830120961695866000526005602052613c5c83610e0760208b604060002082604051948386809551938492016105fb565b556001600160401b03613c81604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b15613cc857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b91613d439060609461ffff6001600160401b0394999897991685526080602086015260808501916128a2565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b949195989790611416613da9604099613da1613daf97613dcc993691610d0d565b943691610d0d565b97614456565b928451968794859463040a7bb160e41b8652309060048701613f59565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd576000908193613e0f57509190565b905061048291925060403d8111610a8057610a718183610cb1565b93969491613e589061065499979461ffff6001600160401b039416875260c0602088015260c08701916128a2565b961660408401526060830152608082015260a08185039101526128a2565b91969792989594939094303303613efe57613e92908530614873565b60405181815290946001600160a01b03169390849061ffff851690600080516020614b5483398151915290602090a3833b156103d1576000988995613eee936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613e2a565b0393f180156107cd576138675750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff613f889316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff613fab84614a7b565b16806141135750505060ff613fbf82614a7b565b161580614108575b613fd09061455a565b613fe2613fdc82614a2b565b91614ac6565b90916001600160a01b0391828416156140fe575b61402a906001600160401b037f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9183169283156140b957600080516020614b548339815191529161407961ffff9261405f61405a87600a546124eb565b600a55565b6001600160a01b0316600090815260086020526040902090565b848154019055846000600080516020614b74833981519152604051806140a489829190602083019252565b0390a36040519384521691806020810161265b565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613ff6565b508051602914613fc7565b600103614123576103e193614239565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561416f57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b036141e260e0989461ffff612abf9995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b0361422e6040939695949660608452606084019061061e565b951660208201520152565b90916142448461460e565b909161427561426e87611da36142688b61ffff166000526007602052604060002090565b8c610da4565b5460ff1690565b916142ab6001600160401b0392837f000000000000000000000000000000000000000000000000000000000000000091166144dd565b9288888b83156143a7575b505050853b1561435c57946142fd9694613bd0948a94613bc2948d996000146143555750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016141b0565b901561434a57509061434561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461420e565b0390a2565b926103e19492613bf8565b16926142de565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250613ca3915050565b90611da36143dc926143d6896143c16143e9979b30614810565b9961ffff166000526007602052604060002090565b90610da4565b805460ff19166001179055565b88888b6142b6565b60065460ff16156144385760228251106139af5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906139a88215156138d2565b505161144b57565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156144d857046001600160401b0390818111614493571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614440565b81810292918115918404141715610ade57565b7f000000000000000000000000000000000000000000000000000000000000000080156144d857810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c7b565b1561456157565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526145fe81518092602086860191016105fb565b8101036051810184520182610cb1565b90614626600160ff61461f85614a7b565b161461455a565b61462f82614a2b565b9061463983614ac6565b9060498451106146aa57604984015193605181511061466e5761466b6051820151916146658151613b55565b906149a7565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036147a9575b801561475a578161472f8461472260009560018060a01b03166000526008602052604060002090565b54612610828210156147b9565b5561473d83600a5403600a55565b604051838152600080516020614b7483398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6147b48333846127de565b6146f9565b156147c057565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156140b957600a5490828201809211610ade57600092614864602092600080516020614b7483398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106549183916001600160a01b03811630811415908161489f575b50156125ab576109498333836127de565b90503314153861488e565b156148b157565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156148ee57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61493b82614934816124cf565b10156148aa565b61494882825110156148e7565b81614960575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106149945750508252601f01601f191660405290565b909283518152602080910193019061497c565b6149b482614934816124cf565b6149c981516149c2846124dd565b11156148e7565b816149e1575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614a185750508252601f01601f191660405290565b9092835181526020809101930190614a00565b6021815110614a3e57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110614a8b576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061466e576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c765783926040526096875282602088019560a036883760208451940192f1903d9060968211614b2a575b6000908286523e9190565b60969150614b1f56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220843a322a8be9bfb47b70abbc85664188efaf7fa57ce7155ec2d93c58e7fc72f864736f6c63430008120033"; + +type USDOGenericModuleConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: USDOGenericModuleConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class USDOGenericModule__factory extends ContractFactory { + constructor(...args: USDOGenericModuleConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "USDOGenericModule"; + } + + override deploy( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ); + } + override attach(address: string): USDOGenericModule { + return super.attach(address) as USDOGenericModule; + } + override connect(signer: Signer): USDOGenericModule__factory { + return super.connect(signer) as USDOGenericModule__factory; + } + static readonly contractName: "USDOGenericModule"; + + public readonly contractName: "USDOGenericModule"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): USDOGenericModuleInterface { + return new utils.Interface(_abi) as USDOGenericModuleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): USDOGenericModule { + return new Contract(address, _abi, signerOrProvider) as USDOGenericModule; + } +} diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageDestinationModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageDestinationModule__factory.ts new file mode 100644 index 00000000..160eb77e --- /dev/null +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageDestinationModule__factory.ts @@ -0,0 +1,1889 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + USDOLeverageDestinationModule, + USDOLeverageDestinationModuleInterface, +} from "../../../usd0/modules/USDOLeverageDestinationModule"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_lzEndpoint", + type: "address", + }, + { + internalType: "contract IYieldBoxBase", + name: "_yieldBox", + type: "address", + }, + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + ], + name: "CallOFTReceivedSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "_reason", + type: "bytes", + }, + ], + name: "MessageFailed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "NonContractAddress", + 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: false, + internalType: "bool", + name: "oldState", + type: "bool", + }, + { + indexed: false, + internalType: "bool", + name: "newState", + type: "bool", + }, + ], + name: "PausedUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "ReceiveFromChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_payloadHash", + type: "bytes32", + }, + ], + name: "RetryMessageSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_from", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "SendToChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetBurnerStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "_type", + type: "uint16", + }, + { + indexed: false, + internalType: "uint256", + name: "_minDstGas", + type: "uint256", + }, + ], + name: "SetMinDstGas", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetMinterStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "precrime", + type: "address", + }, + ], + name: "SetPrecrime", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "SetTrustedRemote", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "SetTrustedRemoteAddress", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "SetUseCustomAdapterParams", + 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: "DEFAULT_PAYLOAD_SIZE_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "NO_EXTRA_GAS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND_AND_CALL", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + 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: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedBurner", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedMinter", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "_from", + type: "bytes32", + }, + { + internalType: "address", + name: "_to", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint256", + name: "_gasForCall", + type: "uint256", + }, + ], + name: "callOnOFTReceived", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "circulatingSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cluster", + outputs: [ + { + internalType: "contract ICluster", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "conservator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "creditedPackets", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendAndCallFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "failedMessages", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "forceResumeReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + ], + name: "getConfig", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + ], + name: "getTrustedRemoteAddress", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "isTrustedRemote", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address", + }, + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "leverageUp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + internalType: "uint256", + name: "amountOutMin", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct IUSDOBase.ILeverageSwapData", + name: "swapData", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "swapper", + type: "address", + }, + { + internalType: "address", + name: "magnetar", + type: "address", + }, + { + internalType: "address", + name: "tOft", + type: "address", + }, + { + internalType: "address", + name: "srcMarket", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageExternalContractsData", + name: "externalData", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "srcExtraGasLimit", + type: "uint256", + }, + { + internalType: "uint16", + name: "lzSrcChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "dstAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "bytes", + name: "srcAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageLZData", + name: "lzData", + type: "tuple", + }, + { + internalType: "address", + name: "leverageFor", + type: "address", + }, + { + internalType: "uint256", + name: "airdropAmount", + type: "uint256", + }, + ], + name: "leverageUpInternal", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "lzEndpoint", + outputs: [ + { + internalType: "contract ILayerZeroEndpoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "lzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "minDstGasLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "multiHop", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "nonblockingLzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "payloadSizeLimitLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "precrime", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "retryMessage", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendFrom", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + { + internalType: "bytes", + name: "_config", + type: "bytes", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "_packetType", + type: "uint16", + }, + { + internalType: "uint256", + name: "_minGas", + type: "uint256", + }, + ], + name: "setMinDstGas", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + ], + name: "setPayloadSizeLimit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_precrime", + type: "address", + }, + ], + name: "setPrecrime", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setReceiveVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setSendVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "setTrustedRemote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "setTrustedRemoteAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "setUseCustomAdapterParams", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "sharedDecimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + 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", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "trustedRemoteLookup", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "useCustomAdapterParams", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "yieldBox", + outputs: [ + { + internalType: "contract IYieldBoxBase", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x61010060409080825234620004db5760608162005d248038038091620000268285620004e0565b833981010312620004db5780516001600160a01b039182821691829003620004db57602080820151918483168303620004db5785015193808516809503620004db57620000726200051a565b906200007d6200051a565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003e257600b54916001968784811c94168015620004d0575b89851014620004bc578190601f9485811162000468575b50899085831160011462000402578892620003f6575b5050600019600383901b1c191690871b17600b555b8051928311620003e257600c548681811c91168015620003d7575b88821014620003c35790818389959493116200036b575b508391831160011462000300576004949291869183620002f4575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002ea579082918993916200029f575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d55516157d890816200054c82396080518181816104ad01528181610770015281816108ac01528181610a1b01528181610bdc01528181611eb101528181612025015281816127ca0152818161482e0152614c35015260a051816115d5015260c0518181816115140152818161179301528181614a4c01528181614e2f0152818161508d0152615127015260e051816122bf0152f35b80929350858092503d8311620002e2575b620002bc8183620004e0565b81010312620002de575161ffff81168103620002de5787919061ffff620001c5565b5080fd5b503d620002b0565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000352575096836004981062000338575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000329565b8289015184558b978b9690940193928301920162000314565b9091929350600c86528786208380860160051c8201928a8710620003b9575b9189918b97969594930160051c01915b828110620003aa57505062000162565b8881558a96508991016200039a565b925081926200038a565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000451575050841162000437575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000428565b8385015186558d9790950194938401930162000415565b909150600b88528988208580850160051c8201928c8610620004b2575b918b91869594930160051c01915b828110620004a357505062000105565b8a81558594508b910162000493565b9250819262000485565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200050457604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005045760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b757806310ddb137146103b257806318160ddd1461034957806323b872dd146103ad578063313ce567146103a8578063365260b4146103a3578063395093511461039e5780633d8b38f6146103995780633f1f4fa41461039457806342d65a8d1461038f578063447705151461038a5780634c42899a1461038a5780635b8c41e6146103855780635c975abb1461038057806366ad5c8a1461037b578063695ef6bf1461037657806370a0823114610371578063715018a61461036c5780637533d7881461036757806376203b4814610362578063803e75281461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b14610349578063950c8a741461034457806395d89b411461033f5780639bb1bec61461033a5780639bdb9812146103355780639f38369a14610330578063a457c2d71461032b578063a4c51df514610326578063a6c3d16514610321578063a9059cbb1461031c578063b01127dc14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612834565b612760565b612699565b612676565b61262c565b6124e2565b612459565b6123f7565b6123db565b6122ee565b6122a9565b61224f565b612226565b6120c3565b61209a565b611fd1565b611fb4565b611f44565b611efa565b611e9b565b611dec565b611cc3565b611b40565b611aa9565b6119eb565b611948565b6118fd565b611741565b61169d565b611674565b61090d565b61164b565b6115f9565b6115bb565b6114b2565b61122a565b6111d3565b61108d565b611050565b610f6d565b610ed9565b610eb6565b610e4f565b610c43565b610bc2565b610b89565b610b2d565b610a99565b610991565b61096b565b61092b565b610883565b610844565b61080f565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b6111b8565b805190818414918261055b575b5081610538575b506144b2565b3691610d92565b923691610d92565b926145c2565b9050610545368486610d92565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816110e8565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b381880382610cde565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da90610c75565b80f35b613308565b5080fd5b6001600160a01b038116036103e157565b60e435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761083960043561082f816107e6565b6024359033612a68565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610864816103d5565b61086c61284f565b166000526003602052602435604060002055600080f35b346103e15760006020366003190112610744576004356108a2816103d5565b6108aa61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e15761083960043561094b816107e6565b602435610957816107e6565b60443591610966833383612b93565b612999565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b346103e15760a03660031901126103e1576004356109ae816103d5565b606435906109bb82610987565b608435906001600160401b0382116103e1576109e061052360409336906004016103f3565b90610a176109fa6109f260443561508b565b60243561515c565b928451958694859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610cde565b810190613455565b9038610a56565b503d610a79565b346103e15760403660031901126103e157600435610ab6816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af0576108399133612a68565b6128a7565b9060406003198301126103e157600435610b0e816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610b7a610b4336610af5565b9390911660005260018452610b65610b6c604060002060405192838092611122565b0382610cde565b848151910120923691610d92565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ba9816103d5565b1660005260036020526020604060002054604051908152f35b346103e157610bd036610af5565b9190610bda61284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281610c316000988997889460048501614553565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c8857604052565b610c5f565b608081019081106001600160401b03821117610c8857604052565b606081019081106001600160401b03821117610c8857604052565b604081019081106001600160401b03821117610c8857604052565b90601f801991011681019081106001600160401b03821117610c8857604052565b6040519060e082018281106001600160401b03821117610c8857604052565b604051906103f182610c8d565b6040519060a082018281106001600160401b03821117610c8857604052565b604051906103f182610cc3565b604051906101a082018281106001600160401b03821117610c8857604052565b6001600160401b038111610c8857601f01601f191660200190565b929192610d9e82610d77565b91610dac6040519384610cde565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e15781602061066493359101610d92565b9060606003198301126103e157600435610dfd816103d5565b91602435906001600160401b0382116103e157610e1c91600401610dc9565b9060443561066481610420565b602090610e4392826040519483868095519384920161060b565b82019081520301902090565b346103e1576020610ead61ffff610e8c83610e6936610de4565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e157610ee736610431565b9192949390303303610f0b5761052a610f0592610019973691610d92565b926149e5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435610f85816107e6565b602435610f91816103d5565b604435916084356001600160401b0381116103e157602061ffff610fc8600080516020615743833981519152933690600401610f5f565b9361103b8535610fd7816107e6565b610ff56105238689013598610feb8a6107e6565b60408101906147ac565b610fff818a614f88565b61101461100d606435615125565b508561531c565b97611020891515614b51565b61103261102c8a61508b565b8c61515c565b9234938b614bf1565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561106d816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e157600080600319360112610744576110a761284f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c92168015611118575b602083101461110257565b634e487b7160e01b600052602260045260246000fd5b91607f16916110f7565b9060009291805491611133836110e8565b9182825260019384811690816000146111955750600114611155575b50505050565b90919394506000526020928360002092846000945b83861061118157505050500101903880808061114f565b80548587018301529401938590820161116a565b9294505050602093945060ff191683830152151560051b0101903880808061114f565b906103f16111cc9260405193848092611122565b0383610cde565b346103e15760203660031901126103e15761ffff6004356111f3816103d5565b1660005260016020526106bf610b65611216604060002060405192838092611122565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611242816107e6565b60243561124e816103d5565b604435916001600160401b03906084358281116103e1576112739036906004016103f3565b91909260a4359161128383610420565b60c4358281116103e15761129b903690600401610f5f565b926112d28435956112ab876107e6565b6112ca6112c0602088013597610feb896107e6565b9990923691610d92565b973691610d92565b9460ff600654166000146113c7576022865110611382578560209561103261103b946113508c61133d61ffff9a8b60226000805160206157438339815191529f0151931660005260028d52841661133760406000206001600052602052604060002090565b546128d9565b90611349821515614fdd565b1015615029565b61136561135e606435615125565b508861531c565b9a6113718c1515614b51565b8d61137b8d61508b565b90336151d6565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113f4576000805160206157438339815191529460209461ffff9461103261103b94611350565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b60a06003198201126103e157600435611460816107e6565b9160243561146d816103d5565b916001600160401b03916044358381116103e1578261148e91600401610dc9565b9260643561149b81610420565b926084359182116103e15761066491600401610dc9565b346103e1576114d76114c336611448565b935050505060208082518301019101613d3f565b93985080919750959195516115ac575b50606086015161154f9061151190611505906001600160a01b031681565b6001600160a01b031690565b947f000000000000000000000000000000000000000000000000000000000000000090611548826001600160401b03809316615112565b9516615112565b94843b156103e15760405163d49dffa760e01b8152976000978997889687956115899593949291906001600160a01b031660048801613de9565b03925af180156107dd5761159957005b806115a661001992610c75565b80610600565b6115b590613f62565b386114e7565b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e1576020610ead60043561161b816103d5565b61ffff6024359161162b836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c546116bf816110e8565b8084529060019081811690811561071c57506001146116e8576106bf846106b381880382610cde565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061172e57505050816106bf936106b392820101936106a3565b8054858501870152928501928101611712565b346103e15761174f36611448565b9392303314806118a9575b61176390612c2b565b8285518601602001602087019061177991612e29565b999550600160a09c959994939b929c1b60019003169a8b987f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316906117c691615112565b9a8b809b8a8288306117d790611ee0565b549c6117e2936131fb565b6117eb30611ee0565b549b6040519485946020860198632c0449f760e21b8a52602487019561181096612f82565b03601f19810182526118229082610cde565b515a92600093928493f492611835612fd6565b93159761ffff9760008051602061576383398151915299611873575b5050505050505061186e6040519283921694829190602083019252565b0390a3005b61188d9661188091613024565b1015611899575b85614656565b38808080808881611851565b6118a4898b30613031565b611887565b50600360005260126020526117636118e87f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a546001600160a01b031690565b6001600160a01b03868116911614905061175a565b346103e157602060ff61193c61ffff610e8c8461191936610de4565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611968816103d5565b166000526001602052610b65611988604060002060405192838092611122565b8051156119a6576106b3816119a06106bf9351613006565b90615536565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611a08816107e6565b60243590336000526009602052611a358160406000209060018060a01b0316600052602052604060002090565b5491808310611a5657611a4a92039033612a68565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611ac6816103d5565b6001600160401b03906064358281116103e157611ae79036906004016103f3565b608492919235611af681610420565b60a43591611b0383610987565b60c4359586116103e157611b1e611b2e9636906004016103f3565b95909460443590602435906147de565b60408051928352602083019190915290f35b346103e157611b4e36610af5565b90611b5761284f565b60405192602092808385870137611b836034868381013060601b88820152036014810188520186610cde565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c8857611bbd83611bb786546110e8565b8661456e565b80601f8411600114611c2d575091808092611c1c9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611c22575b50501b916000199060031b1c19161790555b60405193849384614553565b0390a180f35b015192503880611bfe565b91939498601f198416611c4587600052602060002090565b938a905b828210611cac575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611c1c98969410611c93575b505050811b019055611c10565b015160001960f88460031b161c19169055388080611c86565b808886978294978701518155019601940190611c49565b346103e15760403660031901126103e157610839600435611ce3816107e6565b6024359033612999565b60809060431901126103e15760405190611d0682610c8d565b81604435611d13816107e6565b8152606435611d21816107e6565b6020820152608435611d32816107e6565b6040820152606060a43591611d46836107e6565b0152565b91909160e0818403126103e157611d5f610cff565b9281358452611d70602083016103e6565b6020850152611d81604083016103e6565b6040850152611d9260608301610804565b60608501526001600160401b039160808101358381116103e15782611db8918301610dc9565b608086015260a08101359283116103e157611dda60c092611de5948301610dc9565b60a086015201610804565b60c0830152565b600319610120368201126103e1576024356001600160401b03918282116103e15760609082360301126103e15760405190611e2682610ca8565b8060040135611e34816107e6565b8252602481013560208301526044810135908382116103e1576004611e5c9236920101610dc9565b6040820152611e6a36611ced565b60c4359283116103e157611e85610019933690600401611d4a565b611e8d6107f7565b916101043593600435613703565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff61193c602435611f1e816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611f84816107e6565b611f8c61284f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435611fee816103d5565b602435611ffa816103d5565b6064356001600160401b0381116103e1576120199036906004016103f3565b909261202361284f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611589604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191614532565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b6120cc36610431565b9161ffff8694929616600052600560205261211381604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156121d5576121c484836121bd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006121a9846121918e8a8f6121d09f908f6121779061216a61218b9436908d610d92565b602081519101201461471f565b61ffff166000526005602052604060002090565b91614706565b906001600160401b0316600052602052604060002090565b556121b536878d610d92565b933691610d92565b91886149e5565b60405195869586614775565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e1576020610ead600435612271816107e6565b6024359061227e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561230b816103d5565b602435612317816103d5565b6044359161232361284f565b821561239e576121d07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806123788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561243781610987565b61243f61284f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612477816103d5565b6001600160401b03906024358281116103e1576124989036906004016103f3565b9190604435906124a782610420565b6084356124b3816107e6565b60c4359586116103e1576124ce6100199636906004016103f3565b94909360e4359660a43594606435936148d4565b346103e1576124f036610af5565b91906124fa61284f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c88576125338761252d85546110e8565b8561456e565b8590601f881160011461259a5750918680879893611c1c957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361258f575b501b906000198460031b1c191617905560405193849384614553565b880135925038612573565b90601f1988166125af85600052602060002090565b9288905b828210612615575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611c1c9694106125fb575b505082811b019055611c10565b870135600019600386901b60f8161c1916905538806125ee565b808685968294968c013581550195019301906125b3565b346103e15760403660031901126103e157602060ff61193c602435612650816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356126b6816107e6565b6126be61284f565b6001600160a01b03908116801561270c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561277d816103d5565b6024359061278a826103d5565b6127956044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612813575b5060405191829182610653565b61282e913d8091833e6128268183610cde565b81019061450d565b38612806565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b0316330361286357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156128ed57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561294557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612a15576129fa8260008051602061578383398151915294612a109416966129d38815156128e6565b6129f4846129e083611ee0565b546129ed8282101561293e565b0391611ee0565b55611ee0565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612b42578216938415612af25780612ae17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612aca612a109560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612bcb5750505050565b808410612be657612bdd930391612a68565b3880808061114f565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612c3257565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b51906103f1826103d5565b51906103f182610420565b51906103f1826107e6565b90929192612c9781610d77565b91612ca56040519384610cde565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e157815161066492602001612c8a565b91906060838203126103e15760405190612cf282610ca8565b81938051612cff816107e6565b8352602081015160208401526040810151916001600160401b0383116103e157604092612d2c9201612cbf565b910152565b91908260809103126103e157604051612d4981610c8d565b60608082948051612d59816107e6565b84526020810151612d69816107e6565b60208501526040810151612d7c816107e6565b6040850152015191611d46836107e6565b91909160e0818403126103e157612da2610cff565b9281518452612db360208301612c69565b6020850152612dc460408301612c69565b6040850152612dd560608301612c7f565b60608501526080820151916001600160401b03928381116103e15782612dfc918301612cbf565b608086015260a08101519283116103e157612e1e60c092611de5948301612cbf565b60a086015201612c7f565b919091610140818403126103e1578051612e42816103d5565b926020820151612e5181610420565b926040830151926001600160401b03938481116103e15783612e74918301612cd9565b93612e828460608401612d31565b9360e08301519182116103e157612e9a918301612d8d565b91610120610100830151612ead816107e6565b92015190565b90606060406106649360018060a01b03815116845260208101516020850152015191816040820152019061062e565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b0380606085015116606084015281612f78612f66608087015160e0608088015260e087019061062e565b60a087015186820360a088015261062e565b9401511691015290565b929093612fb5612faa612fc294610100979a99989a8752610120806020890152870190612eb3565b926040860190612ee2565b83820360c0850152612f15565b6001600160a01b0390951660e08201520152565b3d15613001573d90612fe782610d77565b91612ff56040519384610cde565b82523d6000602084013e565b606090565b601319810191908211610af057565b605019810191908211610af057565b91908203918211610af057565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926130ca92916000908190613078606486610cde565b60018060a01b0316926040519461308e86610cc3565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16130c4612fd6565b91613166565b805190816130d757505050565b82806130e7938301019101613151565b156130ef5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b51906103f182610987565b908160209103126103e1575161066481610987565b919290156131c8575081511561317a575090565b3b156131835790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156131db5750805190602001fd5b60405162461bcd60e51b81529081906131f79060048301610653565b0390fd5b9291909261ffff8116600052600760205260ff61322f8360406000206020604051809282610e8c8c8481519384920161060b565b54161561323c5750505050565b30156132c357612bdd936132b061219192856132656132606132b698600a546128d9565b600a55565b61326e30611ee0565b8181540190556000600080516020615783833981519152604051806132993095829190602083019252565b0390a361ffff166000526007602052604060002090565b90610e29565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b6040513d6000823e3d90fd5b1561331b57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b91908260409103126103e157604051604081018181106001600160401b03821117610c88576040526020808294805161338f81610987565b8452015191611d4683610987565b908181039161014083126103e1576040918251936133ba85610ca8565b608081126103e15760809084516133d081610c8d565b84516133db816107e6565b815260208501516020820152858501516133f4816107e6565b86820152606085015160608201528652607f1901126103e15761010061344e92845161341f81610c8d565b6080820151815260a0820151602082015260c08201518682015260e08201516060820152602087015201613357565b9082015290565b91908260409103126103e1576020825192015190565b919261066494936134e96040613500946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b6101408401526001600160a01b0316610160830152565b6101a09081610180820152019061062e565b6040519061351f82610cc3565b6002825261060f60f31b6020830152565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b60608051808352602080930192608080936000915b8483106135985750505050505090565b909192939495846101a060019289516135b382825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152808601516001600160a01b03168287015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019701959493019190613588565b949160606136a26136f59661ffff6136d6976106649c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061062e565b9380516080890152602081015160a08901528260408201511660c089015201511660e0860152848203610100860152613530565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613573565b929194939093613714303314612c2b565b85516001600160a01b0316946001600160a01b0394858716613b61575b87516137c5975061374d9082906001600160a01b031630612a68565b875161376390611505906001600160a01b031681565b825160408051631fd177af60e11b8152306004808301919091526001600160a01b03909316602482015260448101949094526000606485018190526084850181905260a48501526101409991949093909290918a9183918290819060c4820190565b03915afa9889156107dd57600099613b32575b5050885160208281015183850151855163efa84c6d60e01b81529b929a9386938d936001600160a01b039092169284928392613819929130918d860161346b565b03915a90600091f19889156107dd57600099613b12575b5081516001600160a01b03161680613a0e575b5081890190613872611505613864611505611505865160018060a01b031690565b92516001600160a01b031690565b600090613a08575088905b803b156103e1578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107dd576138dd9261150592611505926139f5575b50516001600160a01b031690565b946138ec8782015161ffff1690565b9661395060a08301519a61394061391f60606139108685015160018060a01b031690565b9301516001600160a01b031690565b9160008561392b610d1e565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b6139ae61395b610d2b565b91600083526000818401526000858401526000606084015261397b613512565b608084015283516060909401516001600160a01b03169061399a610d4a565b9485526001600160a01b0390911690840152565b863b156103e1576000986139d793519a8b998a988997633a2544b560e01b895230908901613660565b03925af180156107dd576139e85750565b806115a66103f192610c75565b806115a6613a0292610c75565b386138cf565b9061387d565b8983018051845163095ea7b360e01b8082526001600160a01b0390921687820190815260006020820181905292949193928c9285928390036040019183915af19081156107dd57613ab9938b938d93613af5575b508551600090613a8e90613a8090611505906001600160a01b031681565b93516001600160a01b031690565b88519283526001600160a01b0316898301908152602081019490945290948593849291839160400190565b03925af180156107dd571561384357613ae790883d8a11613aee575b613adf8183610cde565b810190613151565b5038613843565b503d613ad5565b613b0b90853d8711613aee57613adf8183610cde565b5038613a62565b613b2a919950833d8511610a9257610a838183610cde565b509738613830565b613b52929950803d10613b5a575b613b4a8183610cde565b81019061339d565b9638806137d8565b503d613b40565b600d54613bb197602091613b7d906001600160a01b0316611505565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529098899190829081906044820190565b03915afa9687156107dd576137c597613bd291600091613bd7575b50613314565b613731565b613bef915060203d8111613aee57613adf8183610cde565b38613bcc565b519060ff821682036103e157565b81601f820112156103e1578051906001600160401b038211610c88576040805193602091613c36838660051b0187610cde565b84865282860191836101a0809702860101948186116103e1578401925b858410613c64575050505050505090565b86848303126103e157848791613c78610d57565b613c8187613146565b8152613c8e838801613146565b83820152613c9d868801613146565b868201526060613cae818901612c69565b908201526080613cbf818901612c7f565b9082015260a0613cd0818901613146565b9082015260c0613ce1818901612c7f565b9082015260e0613cf2818901612c7f565b9082015261010080880151908201526101208088015190820152610140613d1a818901613bf5565b9082015261016080880151908201526101808088015190820152815201930192613c53565b90916101a0828403126103e157613d5582612c69565b92602083015192613d6860408201612c7f565b92613d7560608301612c74565b92613d8260808401612c74565b9260a0810151906001600160401b03918281116103e15783613da5918301612cd9565b9360c08201518381116103e15784613dbe918401612d8d565b93613dcc8160e08501612d31565b936101608401519081116103e15761018091612ead918501613c03565b969593613e289060c094613e36946103f1989460018060a01b03168b5260208b015260408a0152600160608a01526101408060808b0152890190612eb3565b9087820360a0890152612f15565b940190612ee2565b8051821015613e525760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613e6f57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613ecf60209295949560408552604085019061062e565b9416910152565b60009060033d11613ee357565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613f5157818401948551938411613f59573d85010160208487010111613f51575061066492910160200190610cde565b949350505050565b50949350505050565b9060005b82518110156141f5576040613f8781613f7f8487613e3e565b510151151590565b15613fa9575080613fa3613f9d60019386613e3e565b51614272565b01613f66565b6060613fd361030461ffff613fcc84613fc2888b613e3e565b51015161ffff1690565b1614613e68565b613fe260a0613f7f8588613e3e565b61400060c0613ff18689613e3e565b5101516001600160a01b031690565b916140d161401360e0613ff1888b613e3e565b936140c3610100614024898c613e3e565b5101518a6101206140358b83613e3e565b5101516140516101406140488d85613e3e565b51015160ff1690565b9061018061406f8d6101606140668288613e3e565b51015195613e3e565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610cde565b6140f46140e96115056115056080613ff18a8d613e3e565b91613fc2878a613e3e565b90803b156103e1576141226000929183928751948580948193631221baf960e31b835260049a8b8401613eb4565b03925af190816141e2575b5061414c57600161413c613ed6565b6308c379a01461419a575b614157575b505050600190613fa3565b614174614170614165612fd6565b92613f7f878a613e3e565b1590565b1561414c576141856131f7916141fa565b925162461bcd60e51b81529283928301610653565b6141a2613ef4565b806141ae575b50614147565b600091506141c361417084613f7f898c613e3e565b156141a857845162461bcd60e51b81529081906131f790828701610653565b806115a66141ef92610c75565b3861412d565b509050565b604481511061424b576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e157602482015161066492604401612c8a565b5060405161425881610cc3565b600a8152695553444f3a206461746160b01b602082015290565b8051156143e957608081015161429290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610120840151906142c561014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af190816143d6575b50614355576001614345613ed6565b6308c379a014614399575b614358575b50565b6143706141706020614368612fd6565b930151151590565b15614355576143816131f7916141fa565b60405162461bcd60e51b815291829160048301610653565b6143a1613ef4565b806143ad575b50614350565b6020830151600092506143a75760405162461bcd60e51b81529081906131f79060048301610653565b806115a66143e392610c75565b38614336565b608081015161440290611505906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361443c61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161432b565b156144b957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201612cbf565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61066495931681528160208201520191614532565b90601f811161457c57505050565b600091825260208220906020601f850160051c830194106145b8575b601f0160051c01915b8281106145ad57505050565b8181556001016145a1565b9092508290614598565b9290916146345a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061462e826146206145ff60a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f198101845283610cde565b306156e5565b939015614643575b5050505050565b61464c94614656565b388080808061463c565b91936146f37fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614701939561ffff815160208301209616958660005260056020526146ba83610e8c60208b6040600020826040519483868095519384920161060b565b556001600160401b036146df604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561472657565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916147a19060609461ffff6001600160401b039499989799168552608060208601526080850191614532565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b94919598979061137b6148076040996147ff61480d9761482a993691610d92565b943691610d92565b9761508b565b928451968794859463040a7bb160e41b86523090600487016149a1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361486d57509190565b905061049291925060403d8111610a9257610a838183610cde565b939694916148b69061066499979461ffff6001600160401b039416875260c0602088015260c0870191614532565b961660408401526060830152608082015260a0818503910152614532565b9196979298959493909430330361495c576148f0908530615482565b60405181815290946001600160a01b03169390849061ffff85169060008051602061576383398151915290602090a3833b156103e157600098899561494c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614888565b0393f180156107dd576139e85750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610664959361ffff6149d09316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff6149f38461568a565b1680614afc5750505060ff614a078261568a565b161580614af1575b614a189061518f565b614a2a614a248261563a565b916156d5565b90916001600160a01b039182841615614ae7575b614a72906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116615112565b9183169283156132c35760008051602061576383398151915291614aa761ffff92614aa261326087600a546128d9565b611ee0565b84815401905584600060008051602061578383398151915260405180614ad289829190602083019252565b0390a360405193845216918060208101612a10565b61dead9350614a3e565b508051602914614a0f565b600103614b0c576103f193614de3565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614b5857565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614bbe61066497959361ffff614bcc9416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614c1a9193929561ffff81166000526001602052614c21604060002060405194858092611122565b0384610cde565b825115614c8857614c33855182614ce6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e1576000966139d791604051998a988997889662c5803160e81b885260048801614b99565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614d4b575b11614d0757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614d00565b98979692936001600160401b03614d8760e0989461ffff614db39995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b930152565b6001600160401b03614dd86040939695949660608452606084019061062e565b951660208201520152565b9091614dee84615243565b9091614e1f614e1887612191614e128b61ffff166000526007602052604060002090565b8c610e29565b5460ff1690565b91614e556001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116615112565b9288888b8315614f51575b505050853b15614f065794614ea7969461462e948a94614620948d99600014614eff5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614d55565b9015614ef4575090614eef61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614db8565b0390a2565b926103f19492614656565b1692614e88565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614701915050565b906121916132b6926132b089614f6b614f80979b30615432565b9961ffff166000526007602052604060002090565b88888b614e60565b60065460ff1615614fd55760228251106113825761ffff60226103f193015191166000526002602052614fc8604060002060008052602052604060002090565b5490611349821515614fdd565b50516113f457565b15614fe457565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561503057565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561510d57046001600160401b03908181116150c8571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b615075565b81810292918115918404141715610af057565b7f0000000000000000000000000000000000000000000000000000000000000000801561510d57810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261066481610ca8565b1561519657565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615233815180926020868601910161060b565b8101036051810184520182610cde565b9061525b600160ff6152548561568a565b161461518f565b6152648261563a565b9061526e836156d5565b9060498451106152df5760498401519360518151106152a3576152a060518201519161529a8151613015565b906155b6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036153cb575b801561537c578161535184615344600095611ee0565b546129ed828210156153db565b5561535f83600a5403600a55565b60405183815260008051602061578383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6153d6833384612b93565b61532e565b156153e257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156132c357600a5490828201809211610af05760009261547360209260008051602061578383398151915294600a55611ee0565b818154019055604051908152a3565b6106649183916001600160a01b0381163081141590816154ae575b501561299957610966833383612b93565b90503314153861549d565b156154c057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156154fd57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61554a82615543816128bd565b10156154b9565b61555782825110156154f6565b8161556f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106155a35750508252601f01601f191660405290565b909283518152602080910193019061558b565b6155c382615543816128bd565b6155d881516155d1846128cb565b11156154f6565b816155f0575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106156275750508252601f01601f191660405290565b909283518152602080910193019061560f565b602181511061564d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061569a576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b60298151106152a3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c885783926040526096875282602088019560a036883760208451940192f1903d9060968211615739575b6000908286523e9190565b6096915061572e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122019cb0164f52dcb8edb7c75611db08ded1173ded2907c8aca2aaa668e7cc6df4e64736f6c63430008120033"; + +type USDOLeverageDestinationModuleConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: USDOLeverageDestinationModuleConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class USDOLeverageDestinationModule__factory extends ContractFactory { + constructor(...args: USDOLeverageDestinationModuleConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "USDOLeverageDestinationModule"; + } + + override deploy( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ); + } + override attach(address: string): USDOLeverageDestinationModule { + return super.attach(address) as USDOLeverageDestinationModule; + } + override connect(signer: Signer): USDOLeverageDestinationModule__factory { + return super.connect(signer) as USDOLeverageDestinationModule__factory; + } + static readonly contractName: "USDOLeverageDestinationModule"; + + public readonly contractName: "USDOLeverageDestinationModule"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): USDOLeverageDestinationModuleInterface { + return new utils.Interface(_abi) as USDOLeverageDestinationModuleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): USDOLeverageDestinationModule { + return new Contract( + address, + _abi, + signerOrProvider + ) as USDOLeverageDestinationModule; + } +} diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageModule__factory.ts index 8184b98c..6310bbee 100644 --- a/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageModule__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOLeverageModule__factory.ts @@ -87,63 +87,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -918,19 +861,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1026,68 +956,21 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [ - { - internalType: "uint16", - name: "_srcChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "_srcAddress", - type: "bytes", - }, - ], - name: "isTrustedRemote", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { internalType: "address", - name: "module", + name: "from", type: "address", }, { - internalType: "uint16", - name: "_srcChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "_srcAddress", - type: "bytes", - }, - { - internalType: "uint64", - name: "_nonce", - type: "uint64", - }, - { - internalType: "bytes", - name: "_payload", - type: "bytes", + internalType: "uint256", + name: "collateralAmount", + type: "uint256", }, - ], - name: "leverageUp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ { internalType: "uint256", - name: "amount", + name: "borrowAmount", type: "uint256", }, { @@ -1112,6 +995,48 @@ const _abi = [ name: "swapData", type: "tuple", }, + { + components: [ + { + internalType: "uint256", + name: "srcExtraGasLimit", + type: "uint256", + }, + { + internalType: "uint16", + name: "lzSrcChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "dstAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "bytes", + name: "srcAirdropAdapterParam", + type: "bytes", + }, + { + internalType: "address", + name: "refundAddress", + type: "address", + }, + ], + internalType: "struct IUSDOBase.ILeverageLZData", + name: "lzData", + type: "tuple", + }, { components: [ { @@ -1139,62 +1064,111 @@ const _abi = [ name: "externalData", type: "tuple", }, + { + internalType: "bytes", + name: "airdropAdapterParams", + type: "bytes", + }, { components: [ { - internalType: "uint256", - name: "srcExtraGasLimit", - type: "uint256", + internalType: "bool", + name: "permitAll", + type: "bool", }, { - internalType: "uint16", - name: "lzSrcChainId", - type: "uint16", + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", }, { internalType: "uint16", - name: "lzDstChainId", + name: "actionType", type: "uint16", }, { internalType: "address", - name: "zroPaymentAddress", + name: "target", type: "address", }, { - internalType: "bytes", - name: "dstAirdropAdapterParam", - type: "bytes", + internalType: "bool", + name: "permitBorrow", + type: "bool", }, { - internalType: "bytes", - name: "srcAirdropAdapterParam", - type: "bytes", + internalType: "address", + name: "owner", + type: "address", }, { internalType: "address", - name: "refundAddress", + 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", + }, ], - internalType: "struct IUSDOBase.ILeverageLZData", - name: "lzData", - type: "tuple", + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", }, + ], + name: "initMultiHopBuy", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ { - internalType: "address", - name: "leverageFor", - type: "address", + internalType: "uint16", + name: "_srcChainId", + type: "uint16", }, { - internalType: "uint256", - name: "airdropAmount", - type: "uint256", + internalType: "bytes", + name: "_srcAddress", + type: "bytes", }, ], - name: "leverageUpInternal", - outputs: [], - stateMutability: "payable", + name: "isTrustedRemote", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", type: "function", }, { @@ -1238,19 +1212,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1974,7 +1935,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61010060409080825234620004ee57606081620059b78038038091620000268285620004f3565b833981010312620004ee5780516001600160a01b039182821691829003620004ee57602080820151918483168303620004ee5785015193808516809503620004ee57620000726200052d565b906200007d6200052d565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003f557600b54916001968784811c94168015620004e3575b89851014620004cf578190601f948581116200047b575b5089908583116001146200041557889262000409575b5050600019600383901b1c191690871b17600b555b8051928311620003f557600c548681811c91168015620003ea575b88821014620003d65790818389959493116200037e575b50839183116001146200031357600494929186918362000307575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002fd57908291899391620002b2575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d555161545890816200055f82396080518181816104cd01528181610790015281816108d801528181610a4701528181610c100152818161150c01528181611fe601528181612179015281816128c60152818161419901526146f3015260a051816116d0015260c0518181816119380152818161490a01528181614b2801528181614cc40152614d49015260e051816124000152f35b80929350858092503d8311620002f5575b620002cf8183620004f3565b81010312620002f1575161ffff81168103620002f15787919061ffff620001c5565b5080fd5b503d620002c3565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200036557509683600498106200034b575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200033c565b8289015184558b978b9690940193928301920162000327565b9091929350600c86528786208380860160051c8201928a8710620003cc575b9189918b97969594930160051c01915b828110620003bd57505062000162565b8881558a9650899101620003ad565b925081926200039d565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200046457505084116200044a575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200043b565b8385015186558d9790950194938401930162000428565b909150600b88528988208580850160051c8201928c8610620004c5575b918b91869594930160051c01915b828110620004b657505062000105565b8a81558594508b9101620004a6565b9250819262000498565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200051757604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005175760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103f057806301ffc9a7146103eb57806306fdde03146103e657806307e0db17146103e1578063095ea7b3146103dc5780630df37483146103d757806310ddb137146103d257806318160ddd1461036957806323b872dd146103cd578063313ce567146103c8578063365260b4146103c357806339509351146103be5780633d8b38f6146103b95780633f1f4fa4146103b457806342d65a8d146103af57806344770515146103aa5780634c42899a146103aa5780635b8c41e6146103a55780635c975abb146103a057806366ad5c8a1461039b578063695ef6bf1461039657806370a0823114610391578063715018a61461038c5780637533d7881461038757806376203b4814610382578063796fd43a1461037d578063857749b0146103785780638cfd8f5c146103735780638da5cb5b1461036e5780639358928b14610369578063940a1dc014610364578063950c8a741461035f57806395d89b411461035a5780639bb1bec6146103555780639bdb9812146103505780639d3f4d1a1461034b5780639f38369a14610346578063a457c2d714610341578063a4c51df51461033c578063a6c3d16514610337578063a9059cbb14610332578063b01127dc1461032d578063b353aaa714610328578063ba03a8d714610323578063baf3292d1461031e578063c446183414610319578063cbed8b9c14610314578063ce8849ed1461030f578063d1deba1f1461030a578063dbd01de114610305578063dd62ed3e14610300578063de406577146102fb578063df2a5b3b146102f6578063e6a20ae6146102f1578063eab45d9c146102ec578063eaffd49a146102e7578063eb8d72b7146102e2578063ec6d062b146102dd578063ed629c5c146102d8578063f2fde38b146102d3578063f5ecbdbc146102ce5763fc0c546a0361000e57612930565b61285c565b6127a7565b612784565b61274c565b612623565b61259a565b612538565b61251c565b61242f565b6123ea565b6123a0565b612377565b61223a565b612211565b612125565b612108565b612098565b612060565b611fd0565b611f20565b611df7565b611c95565b611bfe565b611b52565b611aaf565b611a91565b611a46565b611867565b6117c3565b61179a565b61177c565b610939565b611753565b6116f4565b6116b6565b6113c9565b611232565b6111db565b6110a7565b61106a565b610f87565b610ef3565b610ed0565b610e7c565b610c77565b610bf6565b610bbd565b610b4d565b610ac5565b6109bd565b610997565b610957565b6108af565b610870565b61083b565b610767565b610687565b6105ca565b6104b6565b61ffff81160361040157565b600080fd5b3590610411826103f5565b565b9181601f84011215610401578235916001600160401b038311610401576020838186019501011161040157565b6001600160401b0381160361040157565b9060806003198301126104015760043561046a816103f5565b916001600160401b0390602435828111610401578161048b91600401610413565b9390939260443561049b81610440565b92606435918211610401576104b291600401610413565b9091565b34610401576104c436610451565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105855761054a61055292610019976105436105296105248a61ffff166000526001602052604060002090565b6111c0565b805190818414918261057b575b5081610558575b506140a2565b3691610da8565b923691610da8565b926144b8565b9050610565368486610da8565b602081519101209060208151910120143861053d565b1515915038610536565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104015760203660031901126104015760043563ffffffff60e01b811680910361040157602090631f7ecdf760e01b811490811561060f575b506040519015158152f35b6301ffc9a760e01b14905038610604565b600091031261040157565b60005b83811061063e5750506000910152565b818101518382015260200161062e565b906020916106678151809281855285808601910161062b565b601f01601f1916010190565b90602061068492818152019061064e565b90565b34610401576000806003193601126107645760405181600b546106a9816110f0565b8084529060019081811690811561073c57506001146106e3575b6106df846106d381880382610d12565b60405191829182610673565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061072957505050816106df936106d392820101936106c3565b805485850187015292850192810161070d565b6106df96506106d39450602092508593915060ff191682840152151560051b820101936106c3565b80fd5b34610401576000602036600319011261076457600435610786816103f5565b61078e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107fd576107f1575080f35b6107fa90610ca9565b80f35b612dba565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361040157565b60e4359061041182610812565b359061041182610812565b346104015760403660031901126104015761086560043561085b81610812565b6024359033612b64565b602060405160018152f35b346104015760403660031901126104015761ffff600435610890816103f5565b61089861294b565b166000526003602052602435604060002055600080f35b346104015760006020366003190112610764576004356108ce816103f5565b6108d661294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561080257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107fd576107f1575080f35b34610401576000366003190112610401576020600a54604051908152f35b346104015760603660031901126104015761086560043561097781610812565b60243561098381610812565b60443591610992833383612c65565b612a95565b3461040157600036600319011261040157602060405160128152f35b8015150361040157565b346104015760a0366003190112610401576004356109da816103f5565b606435906109e7826109b3565b608435906001600160401b03821161040157610a0c6105436040933690600401610413565b90610a43610a26610a1e604435614cc2565b602435614d7e565b928451958694859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107fd576000908192610a94575b50604080519182526020820192909252f35b9050610ab7915060403d8111610abe575b610aaf8183610d12565b810190613879565b9038610a82565b503d610aa5565b3461040157604036600319011261040157600435610ae281610812565b336000526009602052610af9816040600020612049565b546024358101809111610b10576108659133612b64565b6129a3565b90604060031983011261040157600435610b2e816103f5565b91602435906001600160401b038211610401576104b291600401610413565b3461040157602061ffff610b9a610b6336610b15565b9390911660005260018452610b85610b8c60406000206040519283809261112a565b0382610d12565b848151910120923691610da8565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104015760203660031901126104015761ffff600435610bdd816103f5565b1660005260036020526020604060002054604051908152f35b3461040157610c0436610b15565b9190610c0e61294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561040157604051928380926342d65a8d60e01b825281610c656000988997889460048501614449565b03925af180156107fd576107f1575080f35b3461040157600036600319011261040157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbc57604052565b610c93565b608081019081106001600160401b03821117610cbc57604052565b606081019081106001600160401b03821117610cbc57604052565b604081019081106001600160401b03821117610cbc57604052565b601f909101601f19168101906001600160401b03821190821017610cbc57604052565b6040519060e082016001600160401b03811183821017610cbc57604052565b6040519061041182610cc1565b6040519060a082016001600160401b03811183821017610cbc57604052565b6040519061041182610cf7565b6001600160401b038111610cbc57601f01601f191660200190565b929192610db482610d8d565b91610dc26040519384610d12565b829481845281830111610401578281602093846000960137010152565b9080601f830112156104015781602061068493359101610da8565b90606060031983011261040157600435610e13816103f5565b91602435906001600160401b03821161040157610e3291600401610ddf565b9060443561068481610440565b602090610e5992826040519483868095519384920161062b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610401576020610ec761ffff610eb983610e9636610dfa565b94909116600052600582526040600020826040519483868095519384920161062b565b820190815203019020610e65565b54604051908152f35b3461040157600036600319011261040157602060ff601154166040519015158152f35b3461040157610f0136610451565b9192949390303303610f255761054a610f1f92610019973691610da8565b926148ab565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126104015790565b60a036600319011261040157600435610f9f81610812565b602435610fab816103f5565b604435916084356001600160401b03811161040157602061ffff610fe2600080516020615363833981519152933690600401610f79565b936110558535610ff181610812565b61100f61054386890135986110058a610812565b6040810190612e26565b611019818a614c73565b61102e611027606435614d47565b5085614f3c565b9761103a891515614a16565b61104c6110468a614cc2565b8c614d7e565b9234938b614155565b6040519485526001600160a01b0316941692a4005b346104015760203660031901126104015760043561108781610812565b60018060a01b031660005260086020526020604060002054604051908152f35b3461040157600080600319360112610764576110c161294b565b80546001600160a01b03198116825581906001600160a01b03166000805160206153c38339815191528280a380f35b90600182811c92168015611120575b602083101461110a57565b634e487b7160e01b600052602260045260246000fd5b91607f16916110ff565b906000929180549161113b836110f0565b91828252600193848116908160001461119d575060011461115d575b50505050565b90919394506000526020928360002092846000945b838610611189575050505001019038808080611157565b805485870183015294019385908201611172565b9294505050602093945060ff191683830152151560051b01019038808080611157565b906104116111d4926040519384809261112a565b0383610d12565b346104015760203660031901126104015761ffff6004356111fb816103f5565b1660005260016020526106df610b8561121e60406000206040519283809261112a565b60405191829160208352602083019061064e565b60e03660031901126104015760043561124a81610812565b602435611256816103f5565b604435916001600160401b03906084358281116104015761127b903690600401610413565b91909260a43561128a81610440565b60c435828111610401576112a2903690600401610f79565b90866112da8335966112b388610812565b6112d26112c860208701359661100588610812565b9a90923691610da8565b983691610da8565b9360ff6006541660001461134757936020959361104c846113156000805160206153638339815191529a958561ffff9a611055991691614366565b61132a611323606435614d47565b5088614f3c565b9a6113368c1515614a16565b8d6113408d614cc2565b9033614df9565b50508293919251611375576000805160206153638339815191529460209461ffff9461104c61105594611315565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b600319610100368201126104015760043590602435906113e882610812565b604435906001600160401b038083116104015760e0836004019284360301126104015760643590811161040157611423903690600401610f79565b926080366083190112610401576001600160a01b03943382871603611688575b61145961144f86612d49565b8716301415612d53565b6020916114698387013583613099565b61147c611477600d54610806565b610806565b936114ce84604488019661148f88612d9b565b90611498612d3d565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107fd576004946114f26114f792889460009161165b575b50612dc6565b614d47565b5098604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107fd5761160d976115a3611601966115fb966116069a61162e575b506115588c33614f3c565b506115958c60848601978761158561157b6115766105438d85612e26565b613fef565b5095915050614cc2565b9660405197889633908801612fa6565b03601f198101835282610d12565b6115c26115af88612d9b565b6115bc6105438787612e26565b906142dd565b6115f06115ce88612d9b565b946115ea60646115e361147760c48801612d49565b9501612d49565b94612e26565b959034963691610da8565b93614155565b612d9b565b61ffff1690565b604051918252339182919060008051602061536383398151915290602090a4005b61164d90823d8411611654575b6116458183610d12565b810190612e11565b503861154d565b503d61163b565b61167b9150853d8711611681575b6116738183610d12565b810190612da5565b386114ec565b503d611669565b6116a68161169e336116998661202f565b612049565b541015612cf5565b6116b1813384612c65565b611443565b3461040157600036600319011261040157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610401576040366003190112610401576020610ec7600435611716816103f5565b61ffff60243591611726836103f5565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610401576000366003190112610401576000546040516001600160a01b039091168152602090f35b34610401576000366003190112610401576020601254604051908152f35b34610401576000366003190112610401576004546040516001600160a01b039091168152602090f35b34610401576000806003193601126107645760405181600c546117e5816110f0565b8084529060019081811690811561073c575060011461180e576106df846106d381880382610d12565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061185457505050816106df936106d392820101936106c3565b8054858501870152928501928101611838565b346104015760a03660031901126104015760043561188481610812565b602435611890816103f5565b6001600160401b03604435818111610401576118b0903690600401610ddf565b90606435926118be84610440565b608435828111610401576118d6903690600401610ddf565b926118e23330146130f4565b6001600160a01b03861660009081526014602052604090205460ff1661190790613139565b8084518501602001602086019061191d916132c3565b9b965090919b9450600160a09d93949d1b60019003169b8c997f000000000000000000000000000000000000000000000000000000000000000091169061196391613045565b9a8b809b8a82883061197490612015565b549c61197f9361367d565b61198830612015565b549b6040519485946020860198632c0449f760e21b8a5260248701956119ad96613401565b03601f19810182526119bf9082610d12565b515a92600093928493f4926119d2613495565b93159761ffff976000805160206153a383398151915299611a10575b50505050505050611a0b6040519283921694829190602083019252565b0390a3005b611a2a96611a1d9161308c565b1015611a36575b8561454c565b388080808088816119ee565b611a41898b306134e0565b611a24565b3461040157602060ff611a8561ffff610eb984611a6236610dfa565b94909116600052600782526040600020826040519483868095519384920161062b565b54166040519015158152f35b34610401576000366003190112610401576020601354604051908152f35b346104015760203660031901126104015761ffff600435611acf816103f5565b166000526001602052610b85611aef60406000206040519283809261112a565b805115611b0d576106d381611b076106df935161306e565b90615156565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461040157604036600319011261040157600435611b6f81610812565b60243590336000526009602052611b8a816040600020612049565b5491808310611bab57611b9f92039033612b64565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104015760e036600319011261040157600435611c1b816103f5565b6001600160401b039060643582811161040157611c3c903690600401610413565b608492919235611c4b81610440565b60a43591611c58836109b3565b60c43595861161040157611c73611c83963690600401610413565b95909460443590602435906146a3565b60408051928352602083019190915290f35b3461040157611ca336610b15565b90611cac61294b565b60405192602092808385870137611cd86034868381013060601b88820152036014810188520186610d12565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cbc57611d1583611d0f86546110f0565b86614464565b80601f8411600114611d73575091808092611d629695948a9b6000805160206153838339815191529b94611d68575b50501b916000199060031b1c19161790555b60405193849384614449565b0390a180f35b015192503880611d44565b91939498601f198416611d8b87600052602060002090565b938a905b828210611de057505091600080516020615383833981519152999a95939185611d6298969410611dc7575b505050811b019055611d56565b015160001960f88460031b161c19169055388080611dba565b808886978294978701518155019601940190611d8f565b3461040157604036600319011261040157610865600435611e1781610812565b6024359033612a95565b60809060431901126104015760405190611e3a82610cc1565b81604435611e4781610812565b8152606435611e5581610812565b6020820152608435611e6681610812565b6040820152606060a43591611e7a83610812565b0152565b91909160e08184031261040157611e93610d35565b9281358452611ea460208301610406565b6020850152611eb560408301610406565b6040850152611ec660608301610830565b60608501526001600160401b039160808101358381116104015782611eec918301610ddf565b608086015260a081013592831161040157611f0e60c092611f19948301610ddf565b60a086015201610830565b60c0830152565b60031961012036820112610401576001600160401b0390602435908282116104015760609082360301126104015760405190611f5b82610cdc565b8060040135611f6981610812565b825260248101356020830152604481013590838211610401576004611f919236920101610ddf565b6040820152611f9f36611e21565b60c43592831161040157611fba610019933690600401611e7e565b611fc2610823565b916101043593600435613b1e565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461040157604036600319011261040157602060ff611a8560243561208481610812565b600435600052600f84526040600020612049565b34610401576020366003190112610401577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356120d881610812565b6120e061294b565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346104015760003660031901126104015760206040516127108152f35b3461040157608036600319011261040157600435612142816103f5565b60243561214e816103f5565b6064356001600160401b0381116104015761216d903690600401610413565b909261217761294b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561040157600080946121ee604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612e8a565b03925af180156107fd576121fe57005b8061220b61001992610ca9565b80610620565b3461040157600036600319011261040157600e546040516001600160a01b039091168152602090f35b61224336610451565b9161ffff8694929616600052600560205261227781604060002060206040518092878b833787820190815203019020610e65565b5491821561232657612315848361230e7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006122fa846122f58e8a8f6123219f908f6122db906122ce6122ef9436908d610da8565b6020815191012014614616565b61ffff166000526005602052604060002090565b916145fd565b610e65565b5561230636878d610da8565b933691610da8565b91886148ab565b6040519586958661466c565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461040157600036600319011261040157600d546040516001600160a01b039091168152602090f35b34610401576040366003190112610401576020610ec76004356123c281610812565b602435906123cf82610812565b6001600160a01b031660009081526009845260409020612049565b34610401576000366003190112610401576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104015760603660031901126104015760043561244c816103f5565b602435612458816103f5565b6044359161246461294b565b82156124df576123217f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124b98560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461040157600036600319011261040157602060405160018152f35b34610401576020366003190112610401577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612578816109b3565b61258061294b565b151560ff196006541660ff821617600655604051908152a1005b3461040157610100366003190112610401576004356125b8816103f5565b6001600160401b0390602435828111610401576125d9903690600401610413565b9190604435906125e882610440565b6084356125f481610812565b60c4359586116104015761260f610019963690600401610413565b94909360e4359660a435946064359361479a565b346104015761263136610b15565b919061263b61294b565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cbc576126778761267185546110f0565b85614464565b8590601f88116001146126cc5750918680879893611d629560008051602061540383398151915299936126c1575b501b906000198460031b1c191617905560405193849384614449565b8801359250386126a5565b90601f1988166126e185600052602060002090565b9288905b828210612735575050918893916000805160206154038339815191529899611d6296941061271b575b505082811b019055611d56565b870135600019600386901b60f8161c19169055388061270e565b808685968294968c013581550195019301906126e5565b3461040157604036600319011261040157602060ff611a8560243561277081610812565b600435600052601084526040600020612049565b3461040157600036600319011261040157602060ff600654166040519015158152f35b34610401576020366003190112610401576004356127c481610812565b6127cc61294b565b6001600160a01b03908116801561280857600080546001600160a01b03198116831782559092166000805160206153c38339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461040157608036600319011261040157600435612879816103f5565b60243590612886826103f5565b612891604435610812565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107fd576106df9160009161290f575b5060405191829182610673565b61292a913d8091833e6129228183610d12565b810190614424565b38612902565b34610401576000366003190112610401576020604051308152f35b6000546001600160a01b0316330361295f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b1057565b6051019081605111610b1057565b91908201809211610b1057565b156129e957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a4157565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612b1157612af6826000805160206153e383398151915294612b0c941696612acf8815156129e2565b612af084612adc83612015565b54612ae982821015612a3a565b0391612015565b55612015565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c14578216938415612bc45780612bb37f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594611699612b0c9561202f565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612c85816040600020612049565b549260018401612c955750505050565b808410612cb057612ca7930391612b64565b38808080611157565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612cfc57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60843561068481610812565b3561068481610812565b15612d5a57565b60405162461bcd60e51b81526020600482015260196024820152781554d113ce881d1bdad95b881bdd5d081b9bdd081d985b1a59603a1b6044820152606490fd5b35610684816103f5565b908160209103126104015751610684816109b3565b6040513d6000823e3d90fd5b15612dcd57565b60405162461bcd60e51b81526020600482015260116024820152701513d19517d5539055551213d492569151607a1b6044820152606490fd5b5190610411826103f5565b908160209103126104015751610684816103f5565b903590601e198136030182121561040157018035906001600160401b0382116104015760200191813603831361040157565b9035601e1982360301811215610401570160208101919035906001600160401b03821161040157813603831361040157565b908060209392818452848401376000828201840152601f01601f1916010190565b6060608435612eb981610812565b6001600160a01b0390811683528060a435612ed381610812565b1660208401528060c435612ee681610812565b16604084015260e435612ef881610812565b16910152565b9061068490823581526020830135612f15816103f5565b61ffff80911660208301526040840135612f2e816103f5565b1660408201526060830135612f4281610812565b6001600160a01b0316606082015260c080612f92612f77612f666080880188612e58565b60e0608088015260e0870191612e8a565b612f8460a0880188612e58565b9086830360a0880152612e8a565b94013591612f9f83610812565b0190611746565b929361301e61300b61014096611e7a95613039959b9a999b6103078952602089015260018060401b031660408801526101608060608901528135612fe981610812565b6001600160a01b03169088015260208101356101808801526040810190612e58565b60606101a08801526101c0870191612e8a565b9061302b60808601612eab565b848203610100860152612efe565b95610120830190611746565b81810292918115918404141715610b1057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610b1057565b605019810191908211610b1057565b91908203918211610b1057565b906101f48281029081048303610b105761271090048203918211610b1057106130be57565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156130fb57565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561314057565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b519061041182610812565b81601f8201121561040157805161319f81610d8d565b926131ad6040519485610d12565b8184526020828401011161040157610684916020808501910161062b565b9190826080910312610401576040516131e381610cc1565b606080829480516131f381610812565b8452602081015161320381610812565b6020850152604081015161321681610812565b6040850152015191611e7a83610812565b91909160e0818403126104015761323c610d35565b928151845261324d60208301612e06565b602085015261325e60408301612e06565b604085015261326f6060830161317e565b606085015260808201516001600160401b0392908381116104015782613296918301613189565b608086015260a0810151928311610401576132b860c092611f19948301613189565b60a08601520161317e565b91610160838303126104015782516132da816103f5565b9260208101519260408201516132ef81610440565b606083015190936001600160401b03939091848111610401578101606081850312610401576040519061332182610cdc565b805161332c81610812565b8252602081015160208301526040810151908682116104015761335191869101613189565b60408201529361336484608084016131cb565b936101008301519182116104015761337d918301613227565b9161014061338e610120840161317e565b92015190565b908151815261ffff806020840151166020830152604083015116604082015260c060018060a01b03806060850151166060840152816133f76133e5608087015160e0608088015260e087019061064e565b60a087015186820360a088015261064e565b9401511691015290565b9261010094611e7a9361348a9399989799865260606134546040610120938460208b015260018060a01b039485825116908b015260208101516101408b01520151826101608a015261018089019061064e565b93828151166040890152826020820151168289015282604082015116608089015201511660a086015284820360c0860152613394565b9560e0830190611746565b3d156134c0573d906134a682610d8d565b916134b46040519384610d12565b82523d6000602084013e565b606090565b6001600160a01b039091168152602081019190915260400190565b61356c916000806040519361351a8561350c6020998a83019763a9059cbb60e01b8952602484016134c5565b03601f198101875286610d12565b60018060a01b0316926040519461353086610cf7565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613566613495565b916135e8565b8051908161357957505050565b8280613589938301019101612da5565b156135915750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561364a57508151156135fc575090565b3b156136055790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561365d5750805190602001fd5b60405162461bcd60e51b81529081906136799060048301610673565b0390fd5b9291909261ffff8116600052600760205260ff6136b18360406000206020604051809282610eb98c8481519384920161062b565b5416156136be5750505050565b301561373657612ca7936137236122f592856136e76136e261372998600a546129d5565b600a55565b6136f030612015565b81815401905560006000805160206153e38339815191526040518061371b3095829190602083019252565b0390a3610ba9565b90610e3f565b805460ff19166001179055565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b919082604091031261040157604080519081016001600160401b03811182821017610cbc57604052602080829480516137b3816109b3565b8452015191611e7a836109b3565b90818103916101408312610401576040918251936137de85610cdc565b608081126104015760809084516137f481610cc1565b84516137ff81610812565b8152602085015160208201528585015161381881610812565b86820152606085015160608201528652607f1901126104015761010061387292845161384381610cc1565b6080820151815260a0820151602082015260c08201518682015260e0820151606082015260208701520161377b565b9082015290565b9190826040910312610401576020825192015190565b9192610684949361390d604061391e946060815160018060a01b03808251168a52602082015160208b01528482015116848a01520151606088015260606020820151805160808a0152602081015160a08a01528381015160c08a0152015160e088015201516101008601906020809180511515845201511515910152565b610140840152610160830190611746565b6101a09081610180820152019061064e565b6040519061393d82610cf7565b6002825261060f60f31b6020830152565b9060a06080610684938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061064e565b60608051808352602080930192608080936000915b8483106139b65750505050505090565b909192939495846101a060019289516139d182825115159052565b808401511515828501526040818101511515908301528087015161ffff1682880152613a038682015187840190611746565b60a081810151151590830152613a2160c08083015190840190611746565b613a3360e08083015190840190611746565b610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520197019594930191906139a6565b94916060613abd613b109661ffff613af1976106849c9b9660018060a01b0396878092168d521660208c01521660408a015261018080848b015289019061064e565b9380516080890152602081015160a08901528260408201511660c089015201511660e086015284820361010086015261394e565b83516101208401526020909301516001600160a01b0316610140830152565b610160818303910152613991565b9390929194613b31611477600d54610806565b93613b3c8751610806565b60408051633a304d8b60e21b815260006004808301919091526001600160a01b03939093166024820152602097929391928890829060449082905afa80156107fd57613b8f91600091613f5d5750612dc6565b613ba388613b9d8b51610806565b30612b64565b613bb36114776114778b51610806565b97613bbe8251610806565b8351631fd177af60e11b8152308682019081526001600160a01b03909216602083015260408201929092526000606082018190526080820181905260a082015290986101409182918b918290819060c00103915afa80156107fd57613c62998492600092613f30575b5050613c396114776114778d51610806565b89840151916000848601519385519d8e958694859363efa84c6d60e01b855230918d860161388f565b03925af19788156107fd57600098613f10575b5080516001600160a01b0390613c8a90610806565b1680613e39575b5081890190613cb3611477613cac6114776114778651610806565b9251610806565b600090613e33575088905b803b15610401578351630c46aac760e31b8152308682018181526020810191909152604081018c9052909260009284928390036060019183915af180156107fd57613d17926114779261147792613e20575b5051610806565b94613d268782015161ffff1690565b96613d7d60a08301519a613d6d613d4c6060613d4486850151610806565b930151610806565b91600085613d58610d54565b9e8f528e01526001600160a01b0316868d0152565b6001600160a01b031660608b0152565b613dd9613d88610d61565b916000835260008184015260008584015260006060840152613da8613930565b6080840152613dbc60608551950151610806565b90613dc5610d80565b9485526001600160a01b0390911690840152565b863b1561040157600098613e0293519a8b998a988997633a2544b560e01b895230908901613a7b565b03925af180156107fd57613e135750565b8061220b61041192610ca9565b8061220b613e2d92610ca9565b38613d10565b90613cbe565b828a0190613e478251610806565b91898551809381600081613e7e63095ea7b360e01b998a83528d83016020600091939293604081019460018060a01b031681520152565b03925af19081156107fd57613ec7938b938d93613ef3575b506000613eb3613eac6114776114778a51610806565b9351610806565b9188519687958694859384528c84016134c5565b03925af180156107fd5715613c9157613eec90883d8a11611681576116738183610d12565b5038613c91565b613f0990853d8711611681576116738183610d12565b5038613e96565b613f28919850823d8411610abe57610aaf8183610d12565b509638613c75565b613f4f9250803d10613f56575b613f478183610d12565b8101906137c1565b3880613c27565b503d613f3d565b61167b9150893d8b11611681576116738183610d12565b15613f7b57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15613fbc57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115614097575b501561405a57600283015193602284015193600261ffff8716600181148015614051575b61402d90613f74565b614038871515613fb5565b146140405750565b925090506056604283015192015190565b50808214614024565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138614000565b156140a957565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261412261068497959361ffff6141309416865260c0602087015260c086019061064e565b90848203604086015261064e565b6001600160a01b0391821660608401529316608082015280830360a09091015261064e565b9461417e9193929561ffff8116600052600160205261418560406000206040519485809261112a565b0384610d12565b8251156141ec576141978551826143b5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561040157600096613e0291604051998a988997889662c5803160e81b8852600488016140fd565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b1561425157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561429a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106143225761ffff60226104119301519116600052600260205260406000206103076000526020526040600020549061431b82151561424a565b1015614293565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b9190602281511061432257602261ffff9101519216600052600260205261439b60406000206001600052602052604060002090565b54908101809111610b10576104119161431b82151561424a565b61ffff16600052600360205260406000205490811561441a575b116143d657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506143cf565b906020828203126104015781516001600160401b038111610401576106849201613189565b60409061ffff61068495931681528160208201520191612e8a565b90601f811161447257505050565b600091825260208220906020601f850160051c830194106144ae575b601f0160051c01915b8281106144a357505050565b818155600101614497565b909250829061448e565b92909161452a5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614524826145166144f560a483018a61064e565b6001600160401b03881660648401528281036023190160848401528861064e565b03601f198101845283610d12565b30615305565b939015614539575b5050505050565b6145429461454c565b3880808080614532565b91936145ea7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956145f8939561ffff815160208301209616958660005260056020526145b083610eb960208b6040600020826040519483868095519384920161062b565b556145cd604051978897885260a0602089015260a088019061064e565b6001600160401b039092166040870152858203606087015261064e565b90838203608085015261064e565b0390a1565b6020919283604051948593843782019081520301902090565b1561461d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff61468f9398979698168452608060208501526080840191612e8a565b6001600160401b0390951660408201520152565b9491959897906113406146cc6040996146c46146d2976146ef993691610da8565b943691610da8565b97614cc2565b928451968794859463040a7bb160e41b8652309060048701614867565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107fd57600090819361473257509190565b90506104b291925060403d8111610abe57610aaf8183610d12565b9396949161068498969361ffff6147729316865260c0602087015260c0860191612e8a565b6001600160401b0390961660408401526060830152608082015280840360a090910152612e8a565b91969792989594939094303303614822576147b69085306150a2565b60405181815290946001600160a01b03169390849061ffff8516906000805160206153a383398151915290602090a3833b15610401576000988995614812936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a0161474d565b0393f180156107fd57613e135750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9192610684959361ffff6148969316845260018060a01b0316602084015260a0604084015260a083019061064e565b9215156060820152608081840391015261064e565b92919060ff6148b9846152aa565b16806149c25750505060ff6148cd826152aa565b1615806149b7575b6148de90614db2565b6148f06148ea8261525a565b916152f5565b90916001600160a01b0391828416156149ad575b614938907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316613045565b918316928315613736576000805160206153a38339815191529161496d61ffff926149686136e287600a546129d5565b612015565b8481540190558460006000805160206153e38339815191526040518061499889829190602083019252565b0390a360405193845216918060208101612b0c565b61dead9350614904565b5080516029146148d5565b6001036149d25761041193614aeb565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b15614a1d57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9897969293614a8860e0979361ffff614abd9894168c5260208c61010091829101528c019061064e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261064e565b930152565b614ada6040929594939560608352606083019061064e565b94600180841b031660208201520152565b9091614af684614e63565b9091614b18614b11876122f5614b0b8b610ba9565b8c610e3f565b5460ff1690565b916001600160401b0391614b4f907f0000000000000000000000000000000000000000000000000000000000000000908416613045565b9288888b8315614c4b575b505050853b15614c005794614ba19694614524948a94614516948d99600014614bf95750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614a5e565b9015614bee575090614be961ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614ac2565b0390a2565b92610411949261454c565b1692614b82565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506145f8915050565b906122f56137299261372389614c65614c6b979b30615052565b99610ba9565b88888b614b5a565b60065460ff1615614cba5760228251106143225761ffff6022610411930151911660005260026020526040600020600080526020526040600020549061431b82151561424a565b505161137557565b7f0000000000000000000000000000000000000000000000000000000000000000908115614d42576001600160401b03919004818111614d00571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b613058565b7f00000000000000000000000000000000000000000000000000000000000000008015614d4257810690818103908111610b105791565b60405160006020820152602181019190915260c09190911b6001600160c01b03191660418201526029815261068481610cdc565b15614db957565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261068494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152614e53815180926020868601910161062b565b8101036051810184520182610d12565b90614e7b600160ff614e74856152aa565b1614614db2565b614e848261525a565b90614e8e836152f5565b906049845110614eff576049840151936051815110614ec357614ec0605182015191614eba815161307d565b906151d6565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614feb575b8015614f9c5781614f7184614f64600095612015565b54612ae982821015614ffb565b55614f7f83600a5403600a55565b6040518381526000805160206153e383398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614ff6833384612c65565b614f4e565b1561500257565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561373657600a5490828201809211610b10576000926150936020926000805160206153e383398151915294600a55612015565b818154019055604051908152a3565b6106849183916001600160a01b0381163081141590816150ce575b5015612a9557610992833383612c65565b9050331415386150bd565b156150e057565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561511d57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b61516a82615163816129b9565b10156150d9565b6151778282511015615116565b8161518f575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106151c35750508252601f01601f191660405290565b90928351815260208091019301906151ab565b6151e382615163816129b9565b6151f881516151f1846129c7565b1115615116565b81615210575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106152475750508252601f01601f191660405290565b909283518152602080910193019061522f565b602181511061526d57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106152ba576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614ec3576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbc5783926040526096875282602088019560a036883760208451940192f1903d9060968211615359575b6000908286523e9190565b6096915061534e56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba26469706673582212205a58beaaeade69043873c04550af59601a94c42f114100a013d207bef2ab9b3364736f6c63430008120033"; + "0x61010060409080825234620004d45760608162004d178038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d55516147d290816200054582396080518181816104a201528181610765015281816108a101528181610a1b01528181610cec015281816114bf01528181611cb901528181611e13015281816125db0152818161340001526139e6015260a0518161174b015260c051818181613c2c01528181613ec4015281816140810152614108015260e051816120d00152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633bdd4a43146103895780633d8b38f6146103845780633f1f4fa41461037f57806342d65a8d1461037a57806344770515146103755780634c42899a146103755780635b8c41e6146103705780635c975abb1461036b57806366ad5c8a14610366578063695ef6bf1461036157806370a082311461035c578063715018a6146103575780637533d7881461035257806376203b481461034d578063796fd43a14610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612645565b612571565b6124aa565b612487565b61243d565b6122f3565b61226a565b612208565b6121ec565b6120ff565b6120ba565b612060565b612037565b611ed4565b611eab565b611dbf565b611da2565b611d32565b611ce8565b611ca3565b611c79565b611af6565b611a63565b6119a5565b611902565b6118b7565b611813565b6117ea565b610902565b6117c1565b61176f565b611731565b6113f2565b61125c565b611205565b6110bf565b611082565b610f9f565b610f19565b610ef6565b610e8f565b610d53565b610cd2565b610c99565b610c3d565b610b64565b610a99565b610991565b610960565b610920565b610878565b610839565b610804565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b6111ea565b8051908184149182610550575b508161052d575b50613309565b3691610dd9565b923691610dd9565b926137ba565b905061053a368486610dd9565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161111a565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610d9d565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610d85565b80f35b613047565b5080fd5b6001600160a01b038116036103d157565b600435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761082e600435610824816107db565b60243590336128b2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610859816103c5565b610861612660565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073957600435610897816103c5565b61089f612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761082e600435610940816107db565b60243561094c816107db565b6044359161095b8333836129c6565b6127aa565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261097c565b346103d15760a03660031901126103d1576004356109ae816103c5565b606435906109bb8261097c565b608435906001600160401b0382116103d1576109e061051860409336906004016103e3565b90610a176109fa6109f260443561407f565b60243561413d565b928451958694859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a68575b50604080519182526020820192909252f35b9050610a8b915060403d8111610a92575b610a838183610d9d565b810190613b6b565b9038610a56565b503d610a79565b346103d15760403660031901126103d157600435610ab6816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610af05761082e91336128b2565b6126b8565b908160609103126103d15790565b908160e09103126103d15790565b60809060a31901126103d15760a490565b60809060831901126103d157608490565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b6101603660031901126103d157610b796107ec565b6001600160401b03906064358281116103d157610b9a903690600401610af5565b906084358381116103d157610bb3903690600401610b03565b610bbc36610b11565b90610124358581116103d157610bd69036906004016103e3565b929091610144359687116103d157610bf5610019973690600401610b33565b9690956044359060243590612dfb565b9060406003198301126103d157600435610c1e816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610c8a610c5336610c05565b9390911660005260018452610c75610c7c604060002060405192838092611154565b0382610d9d565b848151910120923691610dd9565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610cb9816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610ce036610c05565b9190610cea612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610d41600098899788946004850161374b565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610d9857604052565b610d6f565b90601f801991011681019081106001600160401b03821117610d9857604052565b6001600160401b038111610d9857601f01601f191660200190565b929192610de582610dbe565b91610df36040519384610d9d565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610e28816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610e5993600401359101610dd9565b9160443590811681036103d15790565b602090610e83928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610eed61ffff610ecc83610ea936610e10565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610f2736610426565b9192949390303303610f4b5761051f610f4592610019973691610dd9565b92613bc5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60a03660031901126103d157600435610fb7816107db565b602435610fc3816103c5565b604435916084356001600160401b0381116103d157602061ffff610ffa60008051602061475d833981519152933690600401610af5565b9361106d8535611009816107db565b611027610518868901359861101d8a6107db565b60408101906130a1565b611031818a614030565b61104661103f606435614106565b5085614310565b97611052891515613da2565b61106461105e8a61407f565b8c61413d565b9234938b6133bc565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561109f816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d157600080600319360112610739576110d9612660565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561114a575b602083101461113457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611129565b90600092918054916111658361111a565b9182825260019384811690816000146111c75750600114611187575b50505050565b90919394506000526020928360002092846000945b8386106111b3575050505001019038808080611181565b80548587018301529401938590820161119c565b9294505050602093945060ff191683830152151560051b01019038808080611181565b906103e16111fe9260405193848092611154565b0383610d9d565b346103d15760203660031901126103d15761ffff600435611225816103c5565b1660005260016020526106b4610c75611248604060002060405192838092611154565b604051918291602083526020830190610623565b60e03660031901126103d157600435611274816107db565b602435611280816103c5565b604435916001600160401b03906084358281116103d1576112a59036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d1576112ce903690600401610af5565b906113058235956112de876107db565b6112fd6112f360208601359561101d876107db565b9990923691610dd9565b973691610dd9565b928760ff6006541660001461137057936020959361106461106d9461133e60008051602061475d8339815191529a958561ffff9a61362f565b61135361134c606435614106565b5088614310565b9a61135f8c1515613da2565b8d6113698d61407f565b90336141ca565b5050829391925161139e5760008051602061475d8339815191529460209461ffff9461106461106d9461133e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6101003660031901126103d15760243560043561140e826107db565b6001600160401b03906044358281116103d15761142f903690600401610b03565b916064359081116103d157611448903690600401610af5565b9061145236610b22565b6001600160a01b039490919033818716036116de575b61147e61147485612df1565b8716301415612ff4565b60209361148e8582013584613180565b848761149986612df1565b1661161f575b6114aa600494614106565b5097604051948580926303408e4760e41b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9586156107d2576115556115ca966115478a6115bf96856105189a6115c59a6115d19e6115f2575b506115148433614310565b5061153961152f61152a608085019e8f866130a1565b613256565b509691505061407f565b98604051998a9788016130d3565b03601f198101845283610d9d565b604081019461157961156687612de7565b61157361051884866130a1565b90613567565b61158286612de7565b926115b46115a161159560c08601612df1565b6001600160a01b031690565b926115ae60608601612df1565b946130a1565b959034963691610dd9565b936133bc565b612de7565b61ffff1690565b604051918252339182919060008051602061475d83398151915290602090a4005b61161190873d8911611618575b6116098183610d9d565b81019061308c565b5038611509565b503d6115ff565b600d546116859190611639906001600160a01b0316611595565b61164560408a01612de7565b9061164f88612df1565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107d2576004946116a96114aa9289946000916116b1575b50613053565b94505061149f565b6116d19150853d87116116d7575b6116c98183610d9d565b810190613032565b386116a3565b503d6116bf565b61172182611719336117028560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b541015612fb7565b61172c8233836129c6565b611468565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610eed600435611791816103c5565b61ffff602435916117a1836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c546118358161111a565b80845290600190818116908115610711575060011461185e576106b4846106a881880382610d9d565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106118a457505050816106b4936106a89282010193610698565b8054858501870152928501928101611888565b346103d157602060ff6118f661ffff610ecc846118d336610e10565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611922816103c5565b166000526001602052610c75611942604060002060405192838092611154565b805115611960576106a88161195a6106b49351613162565b90614550565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356119c2816107db565b602435903360005260096020526119ef8160406000209060018060a01b0316600052602052604060002090565b5491808310611a1057611a04920390336128b2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611a80816103c5565b6001600160401b03906064358281116103d157611aa19036906004016103e3565b611aac929192610410565b60a43591611ab98361097c565b60c4359586116103d157611ad4611ae49636906004016103e3565b9590946044359060243590613996565b60408051928352602083019190915290f35b346103d157611b0436610c05565b90611b0d612660565b60405192602092808385870137611b396034868381013060601b88820152036014810188520186610d9d565b60009361ffff8316855260019081815260408620918751916001600160401b038311610d9857611b7383611b6d865461111a565b86613766565b80601f8411600114611be3575091808092611bd29695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611bd8575b50501b916000199060031b1c19161790555b6040519384938461374b565b0390a180f35b015192503880611bb4565b91939498601f198416611bfb87600052602060002090565b938a905b828210611c62575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611bd298969410611c49575b505050811b019055611bc6565b015160001960f88460031b161c19169055388080611c3c565b808886978294978701518155019601940190611bff565b346103d15760403660031901126103d15761082e600435611c99816107db565b60243590336127aa565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6118f6602435611d0c816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611d72816107db565b611d7a612660565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611ddc816103c5565b602435611de8816103c5565b6064356001600160401b0381116103d157611e079036906004016103e3565b9092611e11612660565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611e88604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a8f565b03925af180156107d257611e9857005b80611ea561001992610d85565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611edd36610426565b9161ffff86949296166000526005602052611f2481604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611fe657611fd58483611fce7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611fba84611fa28e8a8f611fe19f908f611f8890611f7b611f9c9436908d610dd9565b6020815191012014613909565b61ffff166000526005602052604060002090565b916138f0565b906001600160401b0316600052602052604060002090565b55611fc636878d610dd9565b933691610dd9565b9188613bc5565b6040519586958661395f565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610eed600435612082816107db565b6024359061208f826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d15760043561211c816103c5565b602435612128816103c5565b60443591612134612660565b82156121af57611fe17f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806121898560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356122488161097c565b612250612660565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612288816103c5565b6001600160401b03906024358281116103d1576122a99036906004016103e3565b91906044359084821682036103d1576084356122c4816107db565b60c4359586116103d1576122df6100199636906004016103e3565b94909360e4359660a4359460643593613a8c565b346103d15761230136610c05565b919061230b612660565b60009161ffff81168352600160209080825260408520916001600160401b038711610d98576123448761233e855461111a565b85613766565b8590601f88116001146123ab5750918680879893611bd2957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936123a0575b501b906000198460031b1c19161790556040519384938461374b565b880135925038612384565b90601f1988166123c085600052602060002090565b9288905b828210612426575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611bd296941061240c575b505082811b019055611bc6565b870135600019600386901b60f8161c1916905538806123ff565b808685968294968c013581550195019301906123c4565b346103d15760403660031901126103d157602060ff6118f6602435612461816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356124c7816107db565b6124cf612660565b6001600160a01b03908116801561251d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561258e816103c5565b6024359061259b826103c5565b6125a66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612624575b5060405191829182610648565b61263f913d8091833e6126378183610d9d565b8101906136ed565b38612617565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361267457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610af057565b6051019081605111610af057565b91908201809211610af057565b156126fe57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561275657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561285f576128448260008051602061477d8339815191529461285a9416966127e48815156126f7565b6001600160a01b03811660009081526008602052604090206128299085905461280f8282101561274f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b03808216929190831561297557821693841561292557806129147f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461170261285a9560018060a01b03166000526009602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129fe5750505050565b808410612a1957612a109303916128b2565b38808080611181565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b9035601e19823603018112156103d15701602081359101916001600160401b0382116103d15781360383136103d157565b908060209392818452848401376000828201840152601f01601f1916010190565b906060612ae4610659938035612ac5816107db565b6001600160a01b03168452602081810135908501526040810190612a5e565b9190928160408201520191612a8f565b9061065990823581526020830135612b0b816103c5565b61ffff80911660208301526040840135612b24816103c5565b1660408201526060830135612b38816107db565b6001600160a01b0316606082015260c080612b88612b6d612b5c6080880188612a5e565b60e0608088015260e0870191612a8f565b612b7a60a0880188612a5e565b9086830360a0880152612a8f565b94013591612b95836107db565b6001600160a01b03909216910152565b60609081813591612bb5836107db565b6001600160a01b039283168552826020820135612bd1816107db565b166020860152826040820135612be6816107db565b1660408601520135612bf7816107db565b16910152565b359060ff821682036103d157565b9a9998959093948b93959897929861030485526020958686015260409960018060a01b03168a8601526001600160401b0380606098168887015260809116818601526101a09686612c78612c6960a0958b878b01528b8a0190612ab0565b60c096898203888b0152612af4565b612c8760e097888a0190612ba5565b61016097888183039101528a815201999a6000975b8a8910612cb85750505050505050505050506101809150930152565b909192939495969798999a8a80828f612cdc600195612cd683610986565b15159052565b612cf2612cea878301610986565b151583880152565b612d08612d00888301610986565b151583890152565b612d20612d168983016103d6565b61ffff16838a0152565b612d3d612d2e8a83016107f9565b6001600160a01b0316838b0152565b612d53612d4b8b8301610986565b1515838c0152565b612d70612d618c83016107f9565b6001600160a01b0316838d0152565b612d8d612d7e8d83016107f9565b6001600160a01b0316838e0152565b61010080820135908301526101208082013590830152612dbd610140612db4818401612bfd565b60ff1690840152565b8c8101358d8301526101808091013590820152019d01990197969594939291909b9a99989b612c9c565b35610659816103c5565b35610659816107db565b939890929497899796986020870135612e1690858789612f1d565b6001600160a01b0386169a8b95612e2c90614106565b5094612e3790614106565b5097612e44368b8e610dd9565b612e4d90613256565b50979050612e5b915061407f565b98612e659061407f565b604051998a99612e789960208c01612c0b565b03601f1981018252612e8a9082610d9d565b6020830193612e9885612de7565b612ea3368584610dd9565b612eac916135f1565b612eb585612de7565b93612ec260c08201612df1565b6001600160a01b031690606001612ed890612df1565b9134943690612ee692610dd9565b92612ef0956133bc565b612ef990612de7565b60405160008152339161ffff169060008051602061475d83398151915290602090a4565b909291906001600160a01b038116338103612f3f575b50506103e19250613180565b6000908152600960209081526040808320338452909152902084905410612f76576103e193612f6f9133906129c6565b3880612f33565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b15612fbe57565b60405162461bcd60e51b815260206004820152600e60248201526d155114d3ce88185c1c1c9bdd985b60921b6044820152606490fd5b15612ffb57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d157516106598161097c565b6040513d6000823e3d90fd5b1561305a57565b60405162461bcd60e51b815260206004820152600a6024820152690aaa6889e7440c2eae8d60b31b6044820152606490fd5b908160209103126103d15751610659816103c5565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b92909361311761310c613124946001600160401b03610120989b9a999b6103078952166020880152610140806040890152870190612ab0565b926060860190612ba5565b83820360e0850152612af4565b6001600160a01b039095166101008201520152565b81810292918115918404141715610af057565b634e487b7160e01b600052601260045260246000fd5b601319810191908211610af057565b605019810191908211610af057565b906101f48281029081048303610af05761271090048203918211610af057106131a557565b60405162461bcd60e51b815260206004820152600e60248201526d5553444f3a20736c69707061676560901b6044820152606490fd5b156131e257565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561322357565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132fe575b50156132c157600283015193602284015193600261ffff87166001811480156132b8575b613294906131db565b61329f87151561321c565b146132a75750565b925090506056604283015192015190565b5080821461328b565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138613267565b1561331057565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261338961065997959361ffff6133979416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133e59193929561ffff811660005260016020526133ec604060002060405194858092611154565b0384610d9d565b825115613471576133fe85518261367e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661345391604051998a988997889662c5803160e81b885260048801613364565b03925af180156107d2576134645750565b80611ea56103e192610d85565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134d657565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561352257565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610307600052602052604060002054906135a58215156134cf565b101561351b565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135ac5761ffff60226103e1930151911660005260026020526040600020610304600052602052604060002054906135a58215156134cf565b919060228151106135ac57602261ffff9101519216600052600260205261366460406000206001600052602052604060002090565b54908101809111610af0576103e1916135a58215156134cf565b61ffff1660005260036020526040600020549081156136e3575b1161369f57565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613698565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161371f81610dbe565b9261372d6040519485610d9d565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a8f565b90601f811161377457505050565b600091825260208220906020601f850160051c830194106137b0575b601f0160051c01915b8281106137a557505050565b818155600101613799565b9092508290613790565b92909161381e5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613818826115476137f760a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b306146ff565b93901561382d575b5050505050565b61383694613840565b3880808080613826565b91936138dd7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138eb939561ffff815160208301209616958660005260056020526138a483610ecc60208b60406000208260405194838680955193849201610600565b556001600160401b036138c9604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561391057565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161398b9060609461ffff6001600160401b039499989799168552608060208601526080850191612a8f565b951660408201520152565b9491959897906113696139bf6040996139b76139c5976139e2993691610dd9565b943691610dd9565b9761407f565b928451968794859463040a7bb160e41b8652309060048701613b81565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a2557509190565b905061048791925060403d8111610a9257610a838183610d9d565b93969491613a6e9061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a8f565b961660408401526060830152608082015260a0818503910152612a8f565b91969792989594939094303303613b2657613aa890853061449c565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b16936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a40565b0393f180156107d2576134645750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bb09316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613bd3846146a4565b1680613d4d5750505060ff613be7826146a4565b161580613d42575b613bf890614183565b613c0a613c0482614654565b916146ef565b90916001600160a01b039182841615613d38575b613c52906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613139565b918316928315613cf3577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cb361ffff92613c99613c9487600a546126ea565b600a55565b6001600160a01b0316600090815260086020526040902090565b84815401905584600060008051602061477d83398151915260405180613cde89829190602083019252565b0390a36040519384521691806020810161285a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c1e565b508051602914613bef565b600103613d5d576103e193613e78565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613da957565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e1c60e0989461ffff613e489995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b930152565b6001600160401b03613e6d60409396959496606084526060840190610623565b951660208201520152565b9091613e8384614237565b9091613eb4613ead87611fa2613ea78b61ffff166000526007602052604060002090565b8c610e69565b5460ff1690565b91613eea6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613139565b9288888b8315613fe6575b505050853b15613f9b5794613f3c9694613818948a94611547948d99600014613f945750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613dea565b9015613f89575090613f8461ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e4d565b0390a2565b926103e19492613840565b1692613f1d565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138eb915050565b90611fa261401b9261401589614000614028979b30614439565b9961ffff166000526007602052604060002090565b90610e69565b805460ff19166001179055565b88888b613ef5565b60065460ff16156140775760228251106135ac5761ffff60226103e193015191166000526002602052604060002060008052602052604060002054906135a58215156134cf565b505161139e57565b7f000000000000000000000000000000000000000000000000000000000000000090811561410157046001600160401b03908181116140bc571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b61314c565b7f0000000000000000000000000000000000000000000000000000000000000000801561410157810690818103908111610af05791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610d985760405290565b1561418a57565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142278151809260208686019101610600565b8101036051810184520182610d9d565b9061424f600160ff614248856146a4565b1614614183565b61425882614654565b90614262836146ef565b9060498451106142d35760498401519360518151106142975761429460518201519161428e8151613171565b906145d0565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b0381163381036143d2575b801561438357816143588461434b60009560018060a01b03166000526008602052604060002090565b5461280f828210156143e2565b5561436683600a5403600a55565b60405183815260008051602061477d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6143dd8333846129c6565b614322565b156143e957565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613cf357600a5490828201809211610af05760009261448d60209260008051602061477d83398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b0381163081141590816144c8575b50156127aa5761095b8333836129c6565b9050331415386144b7565b156144da57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561451757565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145648261455d816126ce565b10156144d3565b6145718282511015614510565b81614589575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106145bd5750508252601f01601f191660405290565b90928351815260208091019301906145a5565b6145dd8261455d816126ce565b6145f281516145eb846126dc565b1115614510565b8161460a575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146415750508252601f01601f191660405290565b9092835181526020809101930190614629565b602181511061466757602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106146b4576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614297576029015190565b6040519392909160009160c08601916001600160401b03831187841017610d985783926040526096875282602088019560a036883760208451940192f1903d9060968211614753575b6000908286523e9190565b6096915061474856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cc227ceba903e0e4b7ac4348a112a3843a08f0e5ace294f83033ab46679fd1764736f6c63430008120033"; type USDOLeverageModuleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketDestinationModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketDestinationModule__factory.ts new file mode 100644 index 00000000..17f49ed1 --- /dev/null +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketDestinationModule__factory.ts @@ -0,0 +1,1995 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + USDOMarketDestinationModule, + USDOMarketDestinationModuleInterface, +} from "../../../usd0/modules/USDOMarketDestinationModule"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_lzEndpoint", + type: "address", + }, + { + internalType: "contract IYieldBoxBase", + name: "_yieldBox", + type: "address", + }, + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + ], + name: "CallOFTReceivedSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "_reason", + type: "bytes", + }, + ], + name: "MessageFailed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "NonContractAddress", + 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: false, + internalType: "bool", + name: "oldState", + type: "bool", + }, + { + indexed: false, + internalType: "bool", + name: "newState", + type: "bool", + }, + ], + name: "PausedUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "ReceiveFromChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_payloadHash", + type: "bytes32", + }, + ], + name: "RetryMessageSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_from", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "SendToChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetBurnerStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "_type", + type: "uint16", + }, + { + indexed: false, + internalType: "uint256", + name: "_minDstGas", + type: "uint256", + }, + ], + name: "SetMinDstGas", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetMinterStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "precrime", + type: "address", + }, + ], + name: "SetPrecrime", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "SetTrustedRemote", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "SetTrustedRemoteAddress", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "SetUseCustomAdapterParams", + 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: "DEFAULT_PAYLOAD_SIZE_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "NO_EXTRA_GAS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND_AND_CALL", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + 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: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedBurner", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedMinter", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "_from", + type: "bytes32", + }, + { + internalType: "address", + name: "_to", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint256", + name: "_gasForCall", + type: "uint256", + }, + ], + name: "callOnOFTReceived", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "circulatingSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cluster", + outputs: [ + { + internalType: "contract ICluster", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "conservator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "creditedPackets", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendAndCallFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "failedMessages", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "forceResumeReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + ], + name: "getConfig", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + ], + name: "getTrustedRemoteAddress", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "isTrustedRemote", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address", + }, + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "lend", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + components: [ + { + internalType: "bool", + name: "repay", + type: "bool", + }, + { + internalType: "uint256", + name: "depositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + internalType: "address", + name: "marketHelper", + type: "address", + }, + { + internalType: "address", + name: "market", + type: "address", + }, + { + internalType: "bool", + name: "removeCollateral", + type: "bool", + }, + { + internalType: "uint256", + name: "removeCollateralAmount", + type: "uint256", + }, + { + components: [ + { + internalType: "bool", + name: "lock", + type: "bool", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "uint128", + name: "lockDuration", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + internalType: "uint256", + name: "fraction", + type: "uint256", + }, + ], + internalType: + "struct ITapiocaOptionLiquidityProvision.IOptionsLockData", + name: "lockData", + type: "tuple", + }, + { + components: [ + { + internalType: "bool", + name: "participate", + type: "bool", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "uint256", + name: "tOLPTokenId", + type: "uint256", + }, + ], + internalType: + "struct ITapiocaOptionsBroker.IOptionsParticipateData", + name: "participateData", + type: "tuple", + }, + ], + internalType: "struct IUSDOBase.ILendOrRepayParams", + name: "lendParams", + type: "tuple", + }, + { + components: [ + { + internalType: "bool", + name: "permitAll", + type: "bool", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", + }, + { + internalType: "uint16", + name: "actionType", + type: "uint16", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "permitBorrow", + type: "bool", + }, + { + 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", + }, + ], + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", + }, + { + components: [ + { + internalType: "bool", + name: "withdraw", + type: "bool", + }, + { + internalType: "uint256", + name: "withdrawLzFeeAmount", + type: "uint256", + }, + { + internalType: "bool", + name: "withdrawOnOtherChain", + type: "bool", + }, + { + internalType: "uint16", + name: "withdrawLzChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "withdrawAdapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonData.IWithdrawParams", + name: "withdrawParams", + type: "tuple", + }, + { + internalType: "uint256", + name: "airdropAmount", + type: "uint256", + }, + ], + name: "lendInternal", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "lzEndpoint", + outputs: [ + { + internalType: "contract ILayerZeroEndpoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "lzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "minDstGasLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "nonblockingLzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "payloadSizeLimitLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "precrime", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "remove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "retryMessage", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendFrom", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + { + internalType: "bytes", + name: "_config", + type: "bytes", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "_packetType", + type: "uint16", + }, + { + internalType: "uint256", + name: "_minGas", + type: "uint256", + }, + ], + name: "setMinDstGas", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + ], + name: "setPayloadSizeLimit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_precrime", + type: "address", + }, + ], + name: "setPrecrime", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setReceiveVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setSendVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "setTrustedRemote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "setTrustedRemoteAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "setUseCustomAdapterParams", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "sharedDecimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + 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", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "trustedRemoteLookup", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "useCustomAdapterParams", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "yieldBox", + outputs: [ + { + internalType: "contract IYieldBoxBase", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x61010060409080825234620004d45760608162005e7a8038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161593590816200054582396080518181816104ad0152818161077001528181610cda01528181610e6e0152818161102f015281816120e90152818161225d015281816129ea015281816149370152614d9e015260a05181611730015260c051818181610b0301528181614b6b01528181614f8c015281816151ea0152615284015260e051816124df0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103d057806301ffc9a7146103cb57806306fdde03146103c657806307e0db17146103c1578063095ea7b3146103bc5780630df37483146103b7578063100b6523146103b257806310ddb137146103ad57806318160ddd1461034957806323b872dd146103a8578063313ce567146103a3578063365260b41461039e57806339509351146103995780633d8b38f6146103945780633f1f4fa41461038f57806342d65a8d1461038a57806344770515146103855780634c42899a146103855780635b8c41e6146103805780635c975abb1461037b57806366ad5c8a14610376578063695ef6bf1461037157806370a082311461036c578063715018a6146103675780637533d7881461036257806376203b481461035d578063857749b0146103585780638cfd8f5c146103535780638da5cb5b1461034e5780639358928b1461034957806394f0093314610344578063950c8a741461033f57806395d89b411461033a57806398185308146103355780639bdb9812146103305780639f38369a1461032b578063a457c2d714610326578063a4c51df514610321578063a6c3d1651461031c578063a9059cbb14610317578063b353aaa714610312578063ba03a8d71461030d578063baf3292d14610308578063c446183414610303578063cbed8b9c146102fe578063ce8849ed146102f9578063d1deba1f146102f4578063dbd01de1146102ef578063dd62ed3e146102ea578063de406577146102e5578063df2a5b3b146102e0578063e6a20ae6146102db578063eab45d9c146102d6578063eaffd49a146102d1578063eb8d72b7146102cc578063ec6d062b146102c7578063ed629c5c146102c2578063f2fde38b146102bd578063f5ecbdbc146102b85763fc0c546a0361000e57612a54565b612980565b6128b9565b612896565b61284c565b612702565b612679565b612617565b6125fb565b61250e565b6124c9565b61246f565b612446565b6122fb565b6122d2565b612209565b6121ec565b61217c565b612132565b6120d3565b6120a9565b611f26565b611e8f565b611dd1565b611d2e565b611ce3565b611c1b565b611b77565b611b4e565b611a70565b610d3b565b6117a6565b611754565b611716565b6114f8565b6114a1565b61135b565b61131e565b61123b565b6111a7565b611184565b61111d565b611096565b611015565b610fdc565b610f80565b610eec565b610de4565b610d99565b610d59565b610cb1565b610a74565b610851565b61081c565b610747565b610667565b6105aa565b610496565b61ffff8116036103e157565b600080fd5b35906103f1826103d5565b565b9181601f840112156103e1578235916001600160401b0383116103e157602083818601950101116103e157565b6001600160401b038116036103e157565b9060806003198301126103e15760043561044a816103d5565b916001600160401b03906024358281116103e1578161046b916004016103f3565b9390939260443561047b81610420565b926064359182116103e157610492916004016103f3565b9091565b346103e1576104a436610431565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105655761052a61053292610019976105236105096105048a61ffff166000526001602052604060002090565b611486565b805190818414918261055b575b5081610538575b506145bb565b36916109b8565b9236916109b8565b926146cb565b90506105453684866109b8565b602081519101209060208151910120143861051d565b1515915038610516565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103e15760203660031901126103e15760043563ffffffff60e01b81168091036103e157602090631f7ecdf760e01b81149081156105ef575b506040519015158152f35b6301ffc9a760e01b149050386105e4565b60009103126103e157565b60005b83811061061e5750506000910152565b818101518382015260200161060e565b906020916106478151809281855285808601910161060b565b601f01601f1916010190565b90602061066492818152019061062e565b90565b346103e1576000806003193601126107445760405181600b54610689816113b6565b8084529060019081811690811561071c57506001146106c3575b6106bf846106b38188038261090f565b60405191829182610653565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061070957505050816106bf936106b392820101936106a3565b80548585018701529285019281016106ed565b6106bf96506106b39450602092508593915060ff191682840152151560051b820101936106a3565b80fd5b346103e1576000602036600319011261074457600435610766816103d5565b61076e612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107dd576107d1575080f35b6107da906108a6565b80f35b6137fd565b5080fd5b6001600160a01b038116036103e157565b608435906103f1826107e6565b60a435906103f1826107e6565b35906103f1826107e6565b346103e15760403660031901126103e15761084660043561083c816107e6565b6024359033612c98565b602060405160018152f35b346103e15760403660031901126103e15761ffff600435610871816103d5565b610879612a6f565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116108b957604052565b610890565b60a081019081106001600160401b038211176108b957604052565b606081019081106001600160401b038211176108b957604052565b604081019081106001600160401b038211176108b957604052565b90601f801991011681019081106001600160401b038211176108b957604052565b604051906101a082018281106001600160401b038211176108b957604052565b6040519061012082018281106001600160401b038211176108b957604052565b604051906103f1826108d9565b6040519061014082018281106001600160401b038211176108b957604052565b6001600160401b0381116108b957601f01601f191660200190565b9291926109c48261099d565b916109d2604051938461090f565b8294818452818301116103e1578281602093846000960137010152565b9080601f830112156103e157816020610664933591016109b8565b60a06003198201126103e157600435610a22816107e6565b91602435610a2f816103d5565b916001600160401b03916044358381116103e15782610a50916004016109ef565b92606435610a5d81610420565b926084359182116103e157610664916004016109ef565b346103e157610b29610a8536610a0a565b94909280949293610a97303314612e5b565b600560005260126020527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f26746546001600160a01b039790610adc908916868a1614612ea0565b610aef60208251830101602083016131ba565b9a949550926001600160401b039d9299919d7f0000000000000000000000000000000000000000000000000000000000000000911661526f565b97602081019889528a8988610b3d30612118565b549a610b8d610b89610b8284610b6a610b648661ffff166000526007602052604060002090565b896110f7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b610c68575b5050505030610ba090612118565b549960405193849360208501976394f0093360e01b8952169e8f936024860194610bc995613465565b03601f1981018252610bdb908261090f565b515a92600093928493f491610bee61352a565b92159661ffff966000805160206158c083398151915298610c2d575b5050505050505192610c286040519283921694829190602083019252565b0390a3005b610c4c95610c3a91613578565b865180911015610c57575b508861475f565b388080808080610c0a565b610c62908b30613585565b38610c45565b610ca893610c95610b6a92610c81610c9b96513061558f565b61ffff166000526007602052604060002090565b906110f7565b805460ff19166001179055565b8a89888e610b92565b346103e1576000602036600319011261074457600435610cd0816103d5565b610cd8612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107e257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107dd576107d1575080f35b346103e15760003660031901126103e1576020600a54604051908152f35b346103e15760603660031901126103e157610846600435610d79816107e6565b602435610d85816107e6565b60443591610d94833383612dc3565b612bc9565b346103e15760003660031901126103e157602060405160128152f35b801515036103e157565b602435906103f182610db5565b60c435906103f182610db5565b35906103f182610db5565b346103e15760a03660031901126103e157600435610e01816103d5565b60643590610e0e82610db5565b608435906001600160401b0382116103e157610e3361052360409336906004016103f3565b90610e6a610e4d610e456044356151e8565b6024356152b9565b928451958694859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107dd576000908192610ebb575b50604080519182526020820192909252f35b9050610ede915060403d8111610ee5575b610ed6818361090f565b810190614aaa565b9038610ea9565b503d610ecc565b346103e15760403660031901126103e157600435610f09816107e6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610f43576108469133612c98565b612ad7565b9060406003198301126103e157600435610f61816103d5565b91602435906001600160401b0382116103e157610492916004016103f3565b346103e157602061ffff610fcd610f9636610f48565b9390911660005260018452610fb8610fbf6040600020604051928380926113f0565b038261090f565b8481519101209236916109b8565b82815191012014604051908152f35b346103e15760203660031901126103e15761ffff600435610ffc816103d5565b1660005260036020526020604060002054604051908152f35b346103e15761102336610f48565b919061102d612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103e157604051928380926342d65a8d60e01b825281611084600098899788946004850161465c565b03925af180156107dd576107d1575080f35b346103e15760003660031901126103e157602060405160008152f35b9060606003198301126103e1576004356110cb816103d5565b91602435906001600160401b0382116103e1576110ea916004016109ef565b9060443561066481610420565b60209061111192826040519483868095519384920161060b565b82019081520301902090565b346103e157602061117b61ffff61115a83611137366110b2565b94909116600052600582526040600020826040519483868095519384920161060b565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103e15760003660031901126103e157602060ff601154166040519015158152f35b346103e1576111b536610431565b91929493903033036111d95761052a6111d3926100199736916109b8565b92614b04565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103e15790565b60a03660031901126103e157600435611253816107e6565b60243561125f816103d5565b604435916084356001600160401b0381116103e157602061ffff6112966000805160206158a083398151915293369060040161122d565b9361130985356112a5816107e6565b6112c361052386890135986112b98a6107e6565b60408101906148b5565b6112cd818a6150e5565b6112e26112db606435615282565b5085615479565b976112ee891515614cba565b6113006112fa8a6151e8565b8c6152b9565b9234938b614d5a565b6040519485526001600160a01b0316941692a4005b346103e15760203660031901126103e15760043561133b816107e6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103e15760008060031936011261074457611375612a6f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156113e6575b60208310146113d057565b634e487b7160e01b600052602260045260246000fd5b91607f16916113c5565b9060009291805491611401836113b6565b9182825260019384811690816000146114635750600114611423575b50505050565b90919394506000526020928360002092846000945b83861061144f57505050500101903880808061141d565b805485870183015294019385908201611438565b9294505050602093945060ff191683830152151560051b0101903880808061141d565b906103f161149a92604051938480926113f0565b038361090f565b346103e15760203660031901126103e15761ffff6004356114c1816103d5565b1660005260016020526106bf610fb86114e46040600020604051928380926113f0565b60405191829160208352602083019061062e565b60e03660031901126103e157600435611510816107e6565b60243561151c816103d5565b604435916001600160401b03906084358281116103e1576115419036906004016103f3565b91909260a4359161155183610420565b60c4358281116103e15761156990369060040161122d565b926115a0843595611579876107e6565b61159861158e6020880135976112b9896107e6565b99909236916109b8565b9736916109b8565b9460ff6006541660001461169557602286511061165057856020956113006113099461161e8c61160b61ffff9a8b60226000805160206158a08339815191529f0151931660005260028d52841661160560406000206001600052602052604060002090565b54612b09565b9061161782151561513a565b1015615186565b61163361162c606435615282565b5088615479565b9a61163f8c1515614cba565b8d6116498d6151e8565b9033615333565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516116c2576000805160206158a08339815191529460209461ffff946113006113099461161e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103e15760003660031901126103e157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103e15760403660031901126103e157602061117b600435611776816103d5565b61ffff60243591611786836103d5565b166000526002835260406000209061ffff16600052602052604060002090565b346103e15760003660031901126103e1576000546040516001600160a01b039091168152602090f35b6001600160801b038116036103e157565b60a0906101031901126103e157604051906117fa826108be565b816101043561180881610db5565b815261012435611817816107e6565b602082015261014435611829816117cf565b60408201526101643561183b816117cf565b6060820152608061018435910152565b6060906101a31901126103e15760405190611865826108d9565b816101a43561187381610db5565b81526101c435611882816107e6565b602082015260406101e435910152565b6001600160401b0381116108b95760051b60200190565b60ff8116036103e157565b35906103f1826118a9565b81601f820112156103e1578035906118d682611892565b926040906118e68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410611917575050505050505090565b86848303126103e15784879161192b610930565b61193487610dd9565b8152611941838801610dd9565b83820152611950868801610dd9565b8682015260606119618189016103e6565b908201526080611972818901610811565b9082015260a0611983818901610dd9565b9082015260c0611994818901610811565b9082015260e06119a5818901610811565b90820152610100808801359082015261012080880135908201526101406119cd8189016118b4565b9082015261016080880135908201526101808088013590820152815201930192611906565b919060a0838203126103e15760405190611a0b826108be565b81938035611a1881610db5565b8352602081013560208401526040810135611a3281610db5565b60408401526060810135611a45816103d5565b60608401526080810135916001600160401b0383116103e157608092611a6b92016109ef565b910152565b6102603660031901126103e157600435611a89816107e6565b6101e03660231901126103e157611a9e610950565b90611aa7610dbf565b825260443560208301526064356040830152611ac16107f7565b6060830152611ace610804565b6080830152611adb610dcc565b60a083015260e43560c0830152611af1366117e0565b60e0830152611aff3661184b565b6101008301526001600160401b0391610204358381116103e157611b279036906004016118bf565b610224359384116103e157611b436100199436906004016119f2565b91610244359361386d565b346103e15760003660031901126103e1576004546040516001600160a01b039091168152602090f35b346103e1576000806003193601126107445760405181600c54611b99816113b6565b8084529060019081811690811561071c5750600114611bc2576106bf846106b38188038261090f565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611c0857505050816106bf936106b392820101936106a3565b8054858501870152928501928101611bec565b346103e157611c4b611c2c36610a0a565b9350505050611c3c303314614313565b6020808251830101910161441e565b94508092919251611cd4575b508051611c7a90611c6e906001600160a01b031681565b6001600160a01b031690565b90813b156103e157604051639391dd6d60e01b815294600094869485938492611cb19291906001600160a01b0316600485016144d2565b03925af180156107dd57611cc157005b80611cce610019926108a6565b80610600565b611cdd90613c50565b38611c57565b346103e157602060ff611d2261ffff61115a84611cff366110b2565b94909116600052600782526040600020826040519483868095519384920161060b565b54166040519015158152f35b346103e15760203660031901126103e15761ffff600435611d4e816103d5565b166000526001602052610fb8611d6e6040600020604051928380926113f0565b805115611d8c576106b381611d866106bf935161355a565b90615693565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103e15760403660031901126103e157600435611dee816107e6565b60243590336000526009602052611e1b8160406000209060018060a01b0316600052602052604060002090565b5491808310611e3c57611e3092039033612c98565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103e15760e03660031901126103e157600435611eac816103d5565b6001600160401b03906064358281116103e157611ecd9036906004016103f3565b608492919235611edc81610420565b60a43591611ee983610db5565b60c4359586116103e157611f04611f149636906004016103f3565b95909460443590602435906148e7565b60408051928352602083019190915290f35b346103e157611f3436610f48565b90611f3d612a6f565b60405192602092808385870137611f696034868381013060601b8882015203601481018852018661090f565b60009361ffff8316855260019081815260408620918751916001600160401b0383116108b957611fa383611f9d86546113b6565b86614677565b80601f84116001146120135750918080926120029695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94612008575b50501b916000199060031b1c19161790555b6040519384938461465c565b0390a180f35b015192503880611fe4565b91939498601f19841661202b87600052602060002090565b938a905b828210612092575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a9593918561200298969410612079575b505050811b019055611ff6565b015160001960f88460031b161c1916905538808061206c565b80888697829497870151815501960194019061202f565b346103e15760403660031901126103e1576108466004356120c9816107e6565b6024359033612bc9565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103e15760403660031901126103e157602060ff611d22602435612156816107e6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103e15760203660031901126103e1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356121bc816107e6565b6121c4612a6f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103e15760003660031901126103e15760206040516127108152f35b346103e15760803660031901126103e157600435612226816103d5565b602435612232816103d5565b6064356001600160401b0381116103e1576122519036906004016103f3565b909261225b612a6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103e15760008094611cb1604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161463b565b346103e15760003660031901126103e157600e546040516001600160a01b039091168152602090f35b61230436610431565b9161ffff8694929616600052600560205261234b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156123f5576123e484836123dd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006123c984610b6a8e8a8f6123f09f908f6123af906123a26123c39436908d6109b8565b6020815191012014614828565b61ffff166000526005602052604060002090565b9161480f565b556123d536878d6109b8565b9336916109b8565b9188614b04565b6040519586958661487e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103e15760003660031901126103e157600d546040516001600160a01b039091168152602090f35b346103e15760403660031901126103e157602061117b600435612491816107e6565b6024359061249e826107e6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103e15760603660031901126103e15760043561252b816103d5565b602435612537816103d5565b60443591612543612a6f565b82156125be576123f07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806125988560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103e15760003660031901126103e157602060405160018152f35b346103e15760203660031901126103e1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561265781610db5565b61265f612a6f565b151560ff196006541660ff821617600655604051908152a1005b346103e1576101003660031901126103e157600435612697816103d5565b6001600160401b03906024358281116103e1576126b89036906004016103f3565b9190604435906126c782610420565b6084356126d3816107e6565b60c4359586116103e1576126ee6100199636906004016103f3565b94909360e4359660a43594606435936149dd565b346103e15761271036610f48565b919061271a612a6f565b60009161ffff81168352600160209080825260408520916001600160401b0387116108b9576127538761274d85546113b6565b85614677565b8590601f88116001146127ba5750918680879893612002957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936127af575b501b906000198460031b1c19161790556040519384938461465c565b880135925038612793565b90601f1988166127cf85600052602060002090565b9288905b828210612835575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab989961200296941061281b575b505082811b019055611ff6565b870135600019600386901b60f8161c19169055388061280e565b808685968294968c013581550195019301906127d3565b346103e15760403660031901126103e157602060ff611d22602435612870816107e6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103e15760003660031901126103e157602060ff600654166040519015158152f35b346103e15760203660031901126103e1576004356128d6816107e6565b6128de612a6f565b6001600160a01b03908116801561292c57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103e15760803660031901126103e15760043561299d816103d5565b602435906129aa826103d5565b6129b56044356107e6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107dd576106bf91600091612a33575b5060405191829182610653565b612a4e913d8091833e612a46818361090f565b810190614616565b38612a26565b346103e15760003660031901126103e1576020604051308152f35b6000546001600160a01b03163303612a8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612ad29133612c98565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4357565b6051019081605111610f4357565b91908201809211610f4357565b15612b1d57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612b7557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612c4557612c2a826000805160206158e083398151915294612c40941696612c03881515612b16565b612c2484612c1083612118565b54612c1d82821015612b6e565b0391612118565b55612118565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612d72578216938415612d225780612d117f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612cfa612c409560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612dfb5750505050565b808410612e1657612e0d930391612c98565b3880808061141d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612e6257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612ea757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103f1826103d5565b51906103f182610db5565b51906103f1826107e6565b91908260a09103126103e157604051612f1e816108be565b60808082948051612f2e81610db5565b84526020810151612f3e816107e6565b60208501526040810151612f51816117cf565b60408501526060810151612f64816117cf565b60608501520151910152565b91908260609103126103e157604051612f88816108d9565b60408082948051612f9881610db5565b84526020810151612fa8816107e6565b60208501520151910152565b51906103f1826118a9565b81601f820112156103e157805190612fd682611892565b92604090612fe68251958661090f565b83855260209182860191836101a0809702860101948186116103e1578401925b858410613017575050505050505090565b86848303126103e15784879161302b610930565b61303487612ef0565b8152613041838801612ef0565b83820152613050868801612ef0565b868201526060613061818901612ee5565b908201526080613072818901612efb565b9082015260a0613083818901612ef0565b9082015260c0613094818901612efb565b9082015260e06130a5818901612efb565b90820152610100808801519082015261012080880151908201526101406130cd818901612fb4565b9082015261016080880151908201526101808088015190820152815201930192613006565b909291926130ff8161099d565b9161310d604051938461090f565b8294828452828201116103e15760206103f193019061060b565b9080601f830112156103e1578151610664926020016130f2565b919060a0838203126103e1576040519061315a826108be565b8193805161316781610db5565b835260208101516020840152604081015161318181610db5565b60408401526060810151613194816103d5565b60608401526080810151916001600160401b0383116103e157608092611a6b9201613127565b9091818303906102a082126103e15782516131d4816103d5565b9360208401516131e3816107e6565b9360408101516131f281610420565b936101e08091605f1901126103e157613209610950565b9061321660608401612ef0565b82526080830151602083015260a0830151604083015261323860c08401612efb565b606083015261324960e08401612efb565b608083015261328b8461010092613261848701612ef0565b60a086015261012086015160c086015261327f826101408801612f06565b60e08601528501612f70565b9082015292610240820151926001600160401b03938481116103e157816132b3918501612fbf565b936102608401519081116103e157610280916132d0918501613141565b92015190565b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b90815180825260208080930193019160005b82811061335a575050505090565b90919293826101a0600192875161337382825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff1690830152610160818101519083015261018090810151908201520195019392910161334c565b9060a06080610664938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061062e565b9594939061024093613504613525946135169360018060a01b03168a528051151560208b0152602081015160408b0152604081015160608b01526134b8606082015160808c019060018060a01b03169052565b60808101516001600160a01b031660a08b015260a0810151151560c08b015260c081015160e08b015260e0810151906134f761010092838d01906132d6565b01516101a08a0190613316565b610260806102008a015288019061333a565b90868203610220880152613422565b930152565b3d15613555573d9061353b8261099d565b91613549604051938461090f565b82523d6000602084013e565b606090565b601319810191908211610f4357565b605019810191908211610f4357565b91908203918211610f4357565b60405163a9059cbb60e01b60208083019182526001600160a01b03949094166024830152604480830195909552938152919261361e929160009081906135cc60648661090f565b60018060a01b031692604051946135e2866108f4565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161361861352a565b916136a0565b80518061362a57505050565b818391810103126103e15781015161364181610db5565b156136495750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561370257508151156136b4575090565b3b156136bd5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156137155750805190602001fd5b60405162461bcd60e51b81529081906137319060048301610653565b0390fd5b926103f196919897956137bf6102409661379d60406137ca956137d5986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190604080918051151584526020810151602085015201511515910152565b8051151560e08801526020810151610100880152604001511515610120870152565b6101408501906132d6565b6101e0830190613316565b01906040908160018060a01b0391828151168552826020820151166020860152015116910152565b6040513d6000823e3d90fd5b908160209103126103e15751610664816107e6565b908160209103126103e1575190565b9260e0949161066497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613422565b9193909361387c303314612e5b565b8051613b1d575b506060840180519092906001600160a01b0316916020936138a985880194855190612ac7565b50865115613a45576040870194855115613939575b50516138d490611c6e906001600160a01b031681565b608087015190939060c0906001600160a01b031691519551970151843b156103e15760009661391a91604051998a98899788966303c592fd60e21b88526004880161382d565b03925af180156107dd5761392c575b50565b80611cce6103f1926108a6565b815160049190819061395590611c6e906001600160a01b031681565b6040516331d8733560e11b815293849182905afa9182156107dd576139b7928291600091613a18575b5060808b015188516040516305da91c960e31b81526001600160a01b039092166004830152602482015293849190829081906044820190565b03916001600160a01b03165afa9283156107dd576138d493611c6e93611c6e936000926139eb575b505088529250506138be565b613a0a9250803d10613a11575b613a02818361090f565b81019061381e565b38806139df565b503d6139f8565b613a389150823d8411613a3e575b613a30818361090f565b810190613809565b3861397e565b503d613a26565b5192945091613a5e90611c6e906001600160a01b031681565b91845191613a6a610970565b946000968787528782880152876040880152613a84610970565b96888852888389015260408801525197613a9c610970565b600181529889830152600160408a015260e0810151610100820151608090920151613ae9906001600160a01b0316613ad2610970565b8b81526001600160a01b0390911694810194909452565b886040840152863b15613b19579061391a92916040519a8b998a9889976339551beb60e21b895260048901613735565b8880fd5b613b2690613ee4565b38613883565b8051821015613b405760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613b5d57565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613bbd60209295949560408552604085019061062e565b9416910152565b60009060033d11613bd157565b905060046000803e60005160e01c90565b600060443d1061066457604051600319913d83016004833e81516001600160401b03918282113d602484011117613c3f57818401948551938411613c47573d85010160208487010111613c3f57506106649291016020019061090f565b949350505050565b50949350505050565b9060005b8251811015613edf576040613c7581613c6d8487613b2c565b510151151590565b15613c97575080613c91613c8b60019386613b2c565b516140d4565b01613c54565b6060613cc161030561ffff613cba84613cb0888b613b2c565b51015161ffff1690565b1614613b56565b613cd060a0613c6d8588613b2c565b613cee60c0613cdf8689613b2c565b5101516001600160a01b031690565b91613dbf613d0160e0613cdf888b613b2c565b93613db1610100613d12898c613b2c565b5101518a610120613d238b83613b2c565b510151613d3f610140613d368d85613b2c565b51015160ff1690565b90610180613d5d8d610160613d548288613b2c565b51015195613b2c565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f19810185528461090f565b613de2613dd7611c6e611c6e6080613cdf8a8d613b2c565b91613cb0878a613b2c565b90803b156103e157613e106000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081613ecc575b50613e3a576001613e2a613bc4565b6308c379a014613e84575b613e45575b505050600190613c91565b613e5e610b89613e5361352a565b92613c6d878a613b2c565b15613e3a57613e6f6137319161405c565b925162461bcd60e51b81529283928301610653565b613e8c613be2565b80613e98575b50613e35565b60009150613ead610b8984613c6d898c613b2c565b15613e9257845162461bcd60e51b815290819061373190828701610653565b80611cce613ed9926108a6565b38613e1b565b509050565b9060005b8251811015613edf576040613f0181613c6d8487613b2c565b15613f1d575080613f17613c8b60019386613b2c565b01613ee8565b6060613f3661030661ffff613cba84613cb0888b613b2c565b613f4560a0613c6d8588613b2c565b613f5460c0613cdf8689613b2c565b91613f67613d0160e0613cdf888b613b2c565b613f7f613dd7611c6e611c6e6080613cdf8a8d613b2c565b90803b156103e157613fad6000929183928751948580948193631221baf960e31b835260049a8b8401613ba2565b03925af19081614049575b50613fd7576001613fc7613bc4565b6308c379a014614001575b613fe2575b505050600190613f17565b613ff0610b89613e5361352a565b15613fd757613e6f6137319161405c565b614009613be2565b80614015575b50613fd2565b6000915061402a610b8984613c6d898c613b2c565b1561400f57845162461bcd60e51b815290819061373190828701610653565b80611cce614056926108a6565b38613fb8565b60448151106140ad576004810151810190602081602484019303126103e1576024810151906001600160401b0382116103e1570190806043830112156103e1576024820151610664926044016130f2565b506040516140ba816108f4565b600a8152695553444f3a206461746160b01b602082015290565b80511561424a5760808101516140f490611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101208401519061412761014086015160ff1690565b936101608601519361018087015190833b156103e15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081614237575b506139295760016141a7613bc4565b6308c379a0146141fa575b6141b95750565b6141d1610b8960206141c961352a565b930151151590565b15613929576141e26137319161405c565b60405162461bcd60e51b815291829160048301610653565b614202613be2565b8061420e575b506141b2565b6020830151600092506142085760405162461bcd60e51b81529081906137319060048301610653565b80611cce614244926108a6565b38614198565b608081015161426390611c6e906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b031691610100840151906101208501519361429d61014087015160ff1690565b936101608701519061018088015195843b156103e15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e4810161418d565b1561431a57565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b91906101c0838203126103e15761436661097d565b9261437081612ef0565b84526020810151602085015261438860408201612ef0565b6040850152606081015160608501526143a360808201612ef0565b608085015260a081015160a08501526143bf8260c08301612f70565b60c0850152610120916143d481848401612f70565b60e08601526101808201516001600160401b03908181116103e157826143fb918501613141565b6101008701526101a08301519081116103e1576144189201613141565b90830152565b918282039161010083126103e1578351614437816103d5565b9360606020820151614448816107e6565b94603f1901126103e15760405161445e816108d9565b604082015161446c816107e6565b8152606082015161447c816107e6565b6020820152608082015161448f816107e6565b60408201529260a0820151926001600160401b03938481116103e157816144b7918501614351565b9360c08401519081116103e15760e0916132d0918501612fbf565b6001600160a01b03918216815282518216602080830191909152830151821660408083019190915290920151166060820152610664919060a0608082015261451f60a08201835115159052565b602082015160c08201526040820151151560e0820152606082015161010090818301526145a560808401519161455c610120938486019015159052565b60a085015161014085015261457a60c0860151610160860190613316565b60e0850151906145906101c09283870190613316565b85015190610220850152610260840190613422565b92015190610240609f1982850301910152613422565b156145c257565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b906020828203126103e15781516001600160401b0381116103e1576106649201613127565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff6106649593168152816020820152019161463b565b90601f811161468557505050565b600091825260208220906020601f850160051c830194106146c1575b601f0160051c01915b8281106146b657505050565b8181556001016146aa565b90925082906146a1565b92909161473d5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906147378261472961470860a483018a61062e565b6001600160401b03881660648401528281036023190160848401528861062e565b03601f19810184528361090f565b30615842565b93901561474c575b5050505050565b6147559461475f565b3880808080614745565b91936147fc7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561480a939561ffff815160208301209616958660005260056020526147c38361115a60208b6040600020826040519483868095519384920161060b565b556001600160401b036147e8604051988998895260a060208a015260a089019061062e565b92166040870152858203606087015261062e565b90838203608085015261062e565b0390a1565b6020919283604051948593843782019081520301902090565b1561482f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916148aa9060609461ffff6001600160401b03949998979916855260806020860152608085019161463b565b951660408201520152565b903590601e19813603018212156103e157018035906001600160401b0382116103e1576020019181360383136103e157565b949195989790611649614910604099614908614916976149339936916109b8565b9436916109b8565b976151e8565b928451968794859463040a7bb160e41b8652309060048701614ac0565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107dd57600090819361497657509190565b905061049291925060403d8111610ee557610ed6818361090f565b939694916149bf9061066499979461ffff6001600160401b039416875260c0602088015260c087019161463b565b961660408401526060830152608082015260a081850391015261463b565b91969792989594939094303303614a65576149f99085306155df565b60405181815290946001600160a01b03169390849061ffff8516906000805160206158c083398151915290602090a3833b156103e1576000988995614a55936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01614991565b0393f180156107dd5761392c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103e1576020825192015190565b9192610664959361ffff614aef9316845260018060a01b0316602084015260a0604084015260a083019061062e565b9215156060820152608081840391015261062e565b92919060ff614b12846157e7565b1680614c655750505060ff614b26826157e7565b161580614c5a575b614b37906152ec565b614b49614b4382615797565b91615832565b90916001600160a01b039182841615614c50575b614b91906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661526f565b918316928315614c0b576000805160206158c083398151915291614bcb61ffff92614bc6614bc187600a54612b09565b600a55565b612118565b8481540190558460006000805160206158e083398151915260405180614bf689829190602083019252565b0390a360405193845216918060208101612c40565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350614b5d565b508051602914614b2e565b600103614c75576103f193614f47565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15614cc157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b92614d2761066497959361ffff614d359416865260c0602087015260c086019061062e565b90848203604086015261062e565b6001600160a01b0391821660608401529316608082015280830360a09091015261062e565b94614d839193929561ffff81166000526001602052614d8a6040600020604051948580926113f0565b038461090f565b825115614df157614d9c855182614e4f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103e15760009661391a91604051998a988997889662c5803160e81b885260048801614d02565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff166000526003602052604060002054908115614eb4575b11614e7057565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614e69565b98979692936001600160401b03614ef060e0989461ffff6135259995168d5260208d61010091829101528d019061062e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261062e565b6001600160401b03614f3c6040939695949660608452606084019061062e565b951660208201520152565b9091614f52846153a0565b9091614f7c610b8287610b6a614f768b61ffff166000526007602052604060002090565b8c6110f7565b91614fb26001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661526f565b9288888b83156150ae575b505050853b1561506357946150049694614737948a94614729948d9960001461505c5750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614ebe565b901561505157509061504c61ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614f1c565b0390a2565b926103f1949261475f565b1692614fe5565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d97509195508594505060208401925061480a915050565b90610b6a610c9b92610c95896150c86150dd979b3061558f565b9961ffff166000526007602052604060002090565b88888b614fbd565b60065460ff16156151325760228251106116505761ffff60226103f193015191166000526002602052615125604060002060008052602052604060002090565b549061161782151561513a565b50516116c257565b1561514157565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561518d57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561526a57046001600160401b0390818111615225571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6151d2565b81810292918115918404141715610f4357565b7f0000000000000000000000000000000000000000000000000000000000000000801561526a57810690818103908111610f435791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152610664816108d9565b156152f357565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261066494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152615390815180926020868601910161060b565b810103605181018452018261090f565b906153b8600160ff6153b1856157e7565b16146152ec565b6153c182615797565b906153cb83615832565b90604984511061543c576049840151936051815110615400576153fd6051820151916153f78151613569565b90615713565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615528575b80156154d957816154ae846154a1600095612118565b54612c1d82821015615538565b556154bc83600a5403600a55565b6040518381526000805160206158e083398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615533833384612dc3565b61548b565b1561553f57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215614c0b57600a5490828201809211610f43576000926155d06020926000805160206158e083398151915294600a55612118565b818154019055604051908152a3565b6106649183916001600160a01b03811630811415908161560b575b5015612bc957610d94833383612dc3565b9050331415386155fa565b1561561d57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561565a57565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6156a7826156a081612aed565b1015615616565b6156b48282511015615653565b816156cc575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106157005750508252601f01601f191660405290565b90928351815260208091019301906156e8565b615720826156a081612aed565b615735815161572e84612afb565b1115615653565b8161574d575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106157845750508252601f01601f191660405290565b909283518152602080910193019061576c565b60218151106157aa57602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106157f7576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615400576029015190565b6040519392909160009160c08601916001600160401b038311878410176108b95783926040526096875282602088019560a036883760208451940192f1903d9060968211615896575b6000908286523e9190565b6096915061588b56fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220aa56927203a9e7854bf7fd50f67fc6c4a0aef86bc68507d5cada8648507af73464736f6c63430008120033"; + +type USDOMarketDestinationModuleConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: USDOMarketDestinationModuleConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class USDOMarketDestinationModule__factory extends ContractFactory { + constructor(...args: USDOMarketDestinationModuleConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "USDOMarketDestinationModule"; + } + + override deploy( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ); + } + override attach(address: string): USDOMarketDestinationModule { + return super.attach(address) as USDOMarketDestinationModule; + } + override connect(signer: Signer): USDOMarketDestinationModule__factory { + return super.connect(signer) as USDOMarketDestinationModule__factory; + } + static readonly contractName: "USDOMarketDestinationModule"; + + public readonly contractName: "USDOMarketDestinationModule"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): USDOMarketDestinationModuleInterface { + return new utils.Interface(_abi) as USDOMarketDestinationModuleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): USDOMarketDestinationModule { + return new Contract( + address, + _abi, + signerOrProvider + ) as USDOMarketDestinationModule; + } +} diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketModule__factory.ts index 8e8fda7d..e56ed690 100644 --- a/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketModule__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOMarketModule__factory.ts @@ -87,63 +87,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -918,19 +861,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1050,254 +980,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address", - }, - { - internalType: "uint16", - name: "_srcChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "_srcAddress", - type: "bytes", - }, - { - internalType: "uint64", - name: "_nonce", - type: "uint64", - }, - { - internalType: "bytes", - name: "_payload", - type: "bytes", - }, - ], - name: "lend", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - components: [ - { - internalType: "bool", - name: "repay", - type: "bool", - }, - { - internalType: "uint256", - name: "depositAmount", - type: "uint256", - }, - { - internalType: "uint256", - name: "repayAmount", - type: "uint256", - }, - { - internalType: "address", - name: "marketHelper", - type: "address", - }, - { - internalType: "address", - name: "market", - type: "address", - }, - { - internalType: "bool", - name: "removeCollateral", - type: "bool", - }, - { - internalType: "uint256", - name: "removeCollateralAmount", - type: "uint256", - }, - { - components: [ - { - internalType: "bool", - name: "lock", - type: "bool", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "uint128", - name: "lockDuration", - type: "uint128", - }, - { - internalType: "uint128", - name: "amount", - type: "uint128", - }, - { - internalType: "uint256", - name: "fraction", - type: "uint256", - }, - ], - internalType: - "struct ITapiocaOptionLiquidityProvision.IOptionsLockData", - name: "lockData", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "participate", - type: "bool", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "uint256", - name: "tOLPTokenId", - type: "uint256", - }, - ], - internalType: - "struct ITapiocaOptionsBroker.IOptionsParticipateData", - name: "participateData", - type: "tuple", - }, - ], - internalType: "struct IUSDOBase.ILendOrRepayParams", - name: "lendParams", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "permitAll", - type: "bool", - }, - { - internalType: "bool", - name: "allowFailure", - type: "bool", - }, - { - internalType: "bool", - name: "approveOnYieldBox", - type: "bool", - }, - { - internalType: "uint16", - name: "actionType", - type: "uint16", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bool", - name: "permitBorrow", - type: "bool", - }, - { - 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", - }, - ], - internalType: "struct ICommonData.IApproval[]", - name: "approvals", - type: "tuple[]", - }, - { - components: [ - { - internalType: "bool", - name: "withdraw", - type: "bool", - }, - { - internalType: "uint256", - name: "withdrawLzFeeAmount", - type: "uint256", - }, - { - internalType: "bool", - name: "withdrawOnOtherChain", - type: "bool", - }, - { - internalType: "uint16", - name: "withdrawLzChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "withdrawAdapterParams", - type: "bytes", - }, - ], - internalType: "struct ICommonData.IWithdrawParams", - name: "withdrawParams", - type: "tuple", - }, - ], - name: "lendInternal", - outputs: [], - stateMutability: "payable", - type: "function", - }, { inputs: [], name: "lzEndpoint", @@ -1339,19 +1021,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1475,19 +1144,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "bytes", - name: "_payload", - type: "bytes", - }, - ], - name: "remove", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -1697,7 +1353,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -1990,7 +1646,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -2487,7 +2143,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61010060409080825234620004ee57606081620067b28038038091620000268285620004f3565b833981010312620004ee5780516001600160a01b039182821691829003620004ee57602080820151918483168303620004ee5785015193808516809503620004ee57620000726200052d565b906200007d6200052d565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003f557600b54916001968784811c94168015620004e3575b89851014620004cf578190601f948581116200047b575b5089908583116001146200041557889262000409575b5050600019600383901b1c191690871b17600b555b8051928311620003f557600c548681811c91168015620003ea575b88821014620003d65790818389959493116200037e575b50839183116001146200031357600494929186918362000307575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002fd57908291899391620002b2575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d555161625390816200055f82396080518181816104ed015281816107b001528181610ceb01528181610e80015281816110490152818161207e0152818161244801528181612c21015281816136ec01528181614e9b0152615465015260a0518161179e015260c051818181610b4f01528181615692015281816158f401528181615aac0152615b44015260e051816126a70152f35b80929350858092503d8311620002f5575b620002cf8183620004f3565b81010312620002f1575161ffff81168103620002f15787919061ffff620001c5565b5080fd5b503d620002c3565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200036557509683600498106200034b575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200033c565b8289015184558b978b9690940193928301920162000327565b9091929350600c86528786208380860160051c8201928a8710620003cc575b9189918b97969594930160051c01915b828110620003bd57505062000162565b8881558a9650899101620003ad565b925081926200039d565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200046457505084116200044a575b505050811b01600b5562000130565b015160001960f88460031b161c191690553880806200043b565b8385015186558d9790950194938401930162000428565b909150600b88528988208580850160051c8201928c8610620004c5575b918b91869594930160051c01915b828110620004b657505062000105565b8a81558594508b9101620004a6565b9250819262000498565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200051757604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005175760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f7578063100b6523146103f257806310ddb137146103ed57806318160ddd1461038457806323b872dd146103e8578063313ce567146103e3578063365260b4146103de57806339509351146103d95780633d8b38f6146103d45780633f1f4fa4146103cf57806342d65a8d146103ca57806344770515146103c55780634c42899a146103c557806358edef4c146103c05780635b8c41e6146103bb5780635c975abb146103b657806366ad5c8a146103b1578063695ef6bf146103ac57806370a08231146103a7578063715018a6146103a25780637533d7881461039d57806376203b4814610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a57806395d89b41146103755780639bdb9812146103705780639d3f4d1a1461036b5780639f38369a14610366578063a457c2d714610361578063a4c51df51461035c578063a6c3d16514610357578063a9059cbb14610352578063b02f69a21461034d578063b353aaa714610348578063ba03a8d714610343578063baf3292d1461033e578063bd147cd614610339578063c446183414610334578063cbed8b9c1461032f578063ce8849ed1461032a578063d1deba1f14610325578063dbd01de114610320578063dd62ed3e1461031b578063de40657714610316578063df2a5b3b14610311578063e6a20ae61461030c578063e78eb94614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612c8b565b612bb7565b612b02565b612adf565b612aa7565b61297e565b6128f5565b612893565b6127ee565b6127c3565b6126d6565b612691565b612647565b61261e565b6124e6565b6124bd565b6123f4565b6123d7565b61224b565b612130565b6120f8565b612068565b611fc1565b611ce6565b611b84565b611aed565b611a41565b61199e565b611980565b611935565b611891565b611868565b61184a565b610d4c565b611821565b6117c2565b611784565b6115ed565b611596565b611462565b611425565b611342565b61129d565b61127a565b611226565b6110cc565b6110b0565b61102f565b610ff6565b610f86565b610efe565b610df6565b610daa565b610d6a565b610cc2565b610a80565b6108c5565b610890565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b61157b565b805190818414918261059b575b5081610578575b50614da4565b3691610a2e565b923691610a2e565b926151f8565b9050610585368486610a2e565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c9816114ab565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610983565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a9061091a565b80f35b613548565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b6064359061043182610832565b60e4359061043182610832565b610104359061043182610832565b6084359061043182610832565b60a4359061043182610832565b359061043182610832565b34610421576040366003190112610421576108ba6004356108b081610832565b6024359033612ecf565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108e581610415565b6108ed612ca6565b166000526003602052602435604060002055600080f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161092d57604052565b610904565b60a081019081106001600160401b0382111761092d57604052565b606081019081106001600160401b0382111761092d57604052565b604081019081106001600160401b0382111761092d57604052565b601f909101601f19168101906001600160401b0382119082101761092d57604052565b6040519061012082016001600160401b0381118382101761092d57604052565b604051906101a082016001600160401b0381118382101761092d57604052565b6040519061014082016001600160401b0381118382101761092d57604052565b604051906104318261094d565b6001600160401b03811161092d57601f01601f191660200190565b929192610a3a82610a13565b91610a486040519384610983565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610a2e565b346104215760a036600319011261042157600435610a9d81610832565b602435610aa981610415565b6001600160401b039160443583811161042157610aca903690600401610a65565b9060643590610ad882610460565b60843591858311610421578492610af3903690600401610a65565b610afe3330146137f2565b6001600160a01b03831660009081526014602052604090205460ff16610b2390614561565b805181016020016020820190610b38916146a1565b97965097945099925090600160a01b60019003169a7f0000000000000000000000000000000000000000000000000000000000000000911690610b7a91615b2f565b8260208a0197889283528c30610b8f906120ad565b549883610b9b8d610fe2565b610ba590886111e9565b90610baf9161120f565b5460ff161560008051602061619e8339815191529d61ffff9d6000978897610c1394610c85575b505050610c05610be5306120ad565b549b6040519485936020850197635e8a3e6b60e11b895260248601614742565b03601f198101835282610983565b51915af493610c20613e74565b9415610c4a575b5050505050505192610c456040519283921694829190602083019252565b0390a3005b610c6995610c579161487e565b865180911015610c74575b508861528c565b388080808080610c27565b610c7f908b306148a6565b38610c62565b610ca8610ca2610cba94610c9d610cad955130615e4d565b610fe2565b8c6111e9565b61120f565b805460ff19166001179055565b8f8d8a610bd6565b34610421576000602036600319011261078457600435610ce181610415565b610ce9612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b34610421576060366003190112610421576108ba600435610d8a81610832565b602435610d9681610832565b60443591610da5833383612fd5565b612e00565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b610124359061043182610dc6565b60c4359061043182610dc6565b359061043182610dc6565b346104215760a036600319011261042157600435610e1381610415565b60643590610e2082610dc6565b608435906001600160401b03821161042157610e456105636040933690600401610433565b90610e7c610e5f610e57604435615aaa565b602435615b79565b928451958694859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ecd575b50604080519182526020820192909252f35b9050610ef0915060403d8111610ef7575b610ee88183610983565b8101906155d9565b9038610ebb565b503d610ede565b3461042157604036600319011261042157600435610f1b81610832565b336000526009602052610f328160406000206120e1565b546024358101809111610f49576108ba9133612ecf565b612d0e565b90604060031983011261042157600435610f6781610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610fd3610f9c36610f4e565b9390911660005260018452610fbe610fc56040600020604051928380926114e5565b0382610983565b848151910120923691610a2e565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff60043561101681610415565b1660005260036020526020604060002054604051908152f35b346104215761103d36610f4e565b9190611047612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b82528161109e6000988997889460048501615189565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b34610421576020366003190112610421576004356001600160401b038111610421576110ff611119913690600401610a65565b61110a3033146137f2565b60208082518301019101613b64565b809192945051611195575b5061113a6111356111358551610826565b610826565b803b1561042157604051639391dd6d60e01b81529360009385938492869284926111729290916001600160a01b031660048501613c7e565b03925af1801561081d5761118257005b8061118f6100199261091a565b80610640565b61119e90613ea4565b38611124565b906060600319830112610421576004356111bd81610415565b91602435906001600160401b038211610421576111dc91600401610a65565b906044356106a481610460565b60209061120392826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b3461042157602061127161ffff61126383611240366111a4565b94909116600052600582526040600020826040519483868095519384920161064b565b82019081520301902061120f565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b34610421576112ab36610471565b91929493903033036112cf5761056a6112c992610019973691610a2e565b92615633565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126104215760a490565b908160609103126104215790565b60a03660031901126104215760043561135a81610832565b60243561136681610415565b604435916084356001600160401b03811161042157602061ffff61139d60008051602061615e833981519152933690600401611334565b9361141085356113ac81610832565b6113ca61056386890135986113c08a610832565b60408101906153e3565b6113d4818a615a45565b6113e96113e2606435615b42565b5085615d37565b976113f58915156157e8565b6114076114018a615aaa565b8c615b79565b9234938b614e57565b6040519485526001600160a01b0316941692a4005b346104215760203660031901126104215760043561144281610832565b60018060a01b031660005260086020526020604060002054604051908152f35b34610421576000806003193601126107845761147c612ca6565b80546001600160a01b03198116825581906001600160a01b03166000805160206161be8339815191528280a380f35b90600182811c921680156114db575b60208310146114c557565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ba565b90600092918054916114f6836114ab565b9182825260019384811690816000146115585750600114611518575b50505050565b90919394506000526020928360002092846000945b838610611544575050505001019038808080611512565b80548587018301529401938590820161152d565b9294505050602093945060ff191683830152151560051b01019038808080611512565b9061043161158f92604051938480926114e5565b0383610983565b346104215760203660031901126104215761ffff6004356115b681610415565b1660005260016020526106ff610fbe6115d96040600020604051928380926114e5565b60405191829160208352602083019061066e565b60e03660031901126104215760043561160581610832565b60243561161181610415565b604435916001600160401b039060843582811161042157611636903690600401610433565b91909260a43561164581610460565b60c4358281116104215761165d903690600401611334565b908661169583359661166e88610832565b61168d6116836020870135966113c088610832565b9a90923691610a2e565b983691610a2e565b9360ff60065416600014611702579360209593611407846116d060008051602061615e8339815191529a958561ffff9a6114109916916150a6565b6116e56116de606435615b42565b5088615d37565b9a6116f18c15156157e8565b8d6116fb8d615aaa565b9033615bf4565b505082939192516117305760008051602061615e8339815191529460209461ffff94611407611410946116d0565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104215760403660031901126104215760206112716004356117e481610415565b61ffff602435916117f483610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b34610421576000806003193601126107845760405181600c546118b3816114ab565b8084529060019081811690811561075c57506001146118dc576106ff846106f381880382610983565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061192257505050816106ff936106f392820101936106e3565b8054858501870152928501928101611906565b3461042157602060ff61197461ffff61126384611951366111a4565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff6004356119be81610415565b166000526001602052610fbe6119de6040600020604051928380926114e5565b8051156119fc576106f3816119f66106ff9351614860565b90615f51565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611a5e81610832565b60243590336000526009602052611a798160406000206120e1565b5491808310611a9a57611a8e92039033612ecf565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611b0a81610415565b6001600160401b039060643582811161042157611b2b903690600401610433565b608492919235611b3a81610460565b60a43591611b4783610dc6565b60c43595861161042157611b62611b72963690600401610433565b9590946044359060243590615415565b60408051928352602083019190915290f35b3461042157611b9236610f4e565b90611b9b612ca6565b60405192602092808385870137611bc76034868381013060601b88820152036014810188520186610983565b61ffff8216600090815260018086526040822087519296909291906001600160401b03831161092d57611c0483611bfe86546114ab565b866151a4565b80601f8411600114611c62575091808092611c519695948a9b60008051602061617e8339815191529b94611c57575b50501b916000199060031b1c19161790555b60405193849384615189565b0390a180f35b015192503880611c33565b91939498601f198416611c7a87600052602060002090565b938a905b828210611ccf5750509160008051602061617e833981519152999a95939185611c5198969410611cb6575b505050811b019055611c45565b015160001960f88460031b161c19169055388080611ca9565b808886978294978701518155019601940190611c7e565b34610421576040366003190112610421576108ba600435611d0681610832565b6024359033612e00565b6001600160801b0381160361042157565b60a0906101631901126104215760405190611d3b82610932565b8161016435611d4981610dc6565b815261018435611d5881610832565b60208201526101a435611d6a81611d10565b60408201526101c435611d7c81611d10565b606082015260806101e435910152565b60a0906101031901126104215760405190611da682610932565b8161010435611db481610dc6565b815261012435611dc381610832565b602082015261014435611dd581611d10565b604082015261016435611de781611d10565b6060820152608061018435910152565b6060906102031901126104215760405190611e118261094d565b8161020435611e1f81610dc6565b815261022435611e2e81610832565b6020820152604061024435910152565b6060906101a31901126104215760405190611e588261094d565b816101a435611e6681610dc6565b81526101c435611e7581610832565b602082015260406101e435910152565b906101e060831983011261042157611f00611e9e6109a6565b92608435611eab81610dc6565b845260a435602085015260c4356040850152611ec5610850565b6060850152611ed261085d565b6080850152611edf610dd0565b60a08501526101443560c0850152611ef681611d21565b60e0850152611df7565b610100830152565b906101e060231983011261042157611f00611f216109a6565b92602435611f2e81610dc6565b845260443560208501526064356040850152611f4861086b565b6060850152611f55610878565b6080850152611f62610dde565b60a085015260e43560c0850152611f7881611d8c565b60e0850152611e3e565b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b908160a09103126104215790565b6102c036600319011261042157600435611fda81610832565b602435611fe681610832565b60443591611ff383610415565b611ffb610843565b9261200536611e85565b6001600160401b03946102643586811161042157612027903690600401611f82565b9290916102843588811161042157612043903690600401611fb3565b946102a43598891161042157612060610019993690600401610433565b9890976136a6565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b6001600160a01b0316600090815260096020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff61197460243561211c81610832565b600435600052600f845260406000206120e1565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b602060043561217081610832565b612178612ca6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b6001600160401b03811161092d5760051b60200190565b60ff81160361042157565b3590610431826121b7565b919060a08382031261042157604051906121e682610932565b819380356121f381610dc6565b835260208101356020840152604081013561220d81610dc6565b6040840152606081013561222081610415565b60608401526080810135916001600160401b038311610421576080926122469201610a65565b910152565b6102403660031901126104215760043561226481610832565b61226d36611f08565b6001600160401b0391906102043590838211610421573660238301121561042157816004013561229c816121a0565b9260406122ab81519586610983565b8285526020908186019060246101a08096028501019336851161042157602401915b8483106122fc5750505050505061022435938411610421576122f66100199436906004016121cd565b92614b13565b8583360312610421578386916123106109c6565b61231986610deb565b8152612326838701610deb565b83820152612335858701610deb565b858201526060612346818801610426565b908201526080612357818801610885565b9082015260a0612368818801610deb565b9082015260c0612379818801610885565b9082015260e061238a818801610885565b90820152610100808701359082015261012080870135908201526101406123b28188016121c2565b90820152610160808701359082015261018080870135908201528152019201916122cd565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561241181610415565b60243561241d81610415565b6064356001600160401b0381116104215761243c903690600401610433565b9092612446612ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104215760008094611172604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613101565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b6124ef36610471565b9161ffff8694929616600052600560205261252381604060002060206040518092878b83378782019081520301902061120f565b549182156125cd576125bc84836125b57fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006125a184610ca88e8a8f6125c89f908f6125879061257a61259b9436908d610a2e565b6020815191012014615356565b61ffff166000526005602052604060002090565b9161533d565b556125ad36878d610a2e565b933691610a2e565b9188615633565b604051958695866153ac565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b3461042157604036600319011261042157602061127160043561266981610832565b6024359061267682610832565b6001600160a01b0316600090815260098452604090206120e1565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610421576060366003190112610421576004356126f381610415565b6024356126ff81610415565b6044359161270b612ca6565b8215612786576125c87f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806127608560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b90816101c09103126104215790565b6101403660031901126104215760043561280781610832565b60243561281381610832565b6044359161282083610415565b612828610843565b6001600160401b0393906084358581116104215761284a903690600401610433565b9061285436611323565b92610104358881116104215761286e9036906004016127df565b94610124359889116104215761288b610019993690600401611f82565b989097613405565b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356128d381610dc6565b6128db612ca6565b151560ff196006541660ff821617600655604051908152a1005b34610421576101003660031901126104215760043561291381610415565b6001600160401b039060243582811161042157612934903690600401610433565b91906044359061294382610460565b60843561294f81610832565b60c4359586116104215761296a610019963690600401610433565b94909360e4359660a435946064359361550c565b346104215761298c36610f4e565b9190612996612ca6565b61ffff82166000908152600160208181526040832092949291906001600160401b03871161092d576129d2876129cc85546114ab565b856151a4565b8590601f8811600114612a275750918680879893611c51956000805160206161fe8339815191529993612a1c575b501b906000198460031b1c191617905560405193849384615189565b880135925038612a00565b90601f198816612a3c85600052602060002090565b9288905b828210612a90575050918893916000805160206161fe8339815191529899611c51969410612a76575b505082811b019055611c45565b870135600019600386901b60f8161c191690553880612a69565b808685968294968c01358155019501930190612a40565b3461042157604036600319011261042157602060ff611974602435612acb81610832565b6004356000526010845260406000206120e1565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612b1f81610832565b612b27612ca6565b6001600160a01b039081168015612b6357600080546001600160a01b03198116831782559092166000805160206161be8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612bd481610415565b60243590612be182610415565b612bec604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612c6a575b5060405191829182610693565b612c85913d8091833e612c7d8183610983565b810190615164565b38612c5d565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612cba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90612d099133612ecf565b600190565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610f4957565b6051019081605111610f4957565b91908201809211610f4957565b15612d5457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612dac57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612e7c57612e61826000805160206161de83398151915294612e77941696612e3a881515612d4d565b612e5b84612e47836120ad565b54612e5482821015612da5565b03916120ad565b556120ad565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612f84578216938415612f345780612f237f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612f1e612e77956120c7565b6120e1565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052612ff58160406000206120e1565b5492600184016130055750505050565b80841061302057613017930391612ecf565b38808080611512565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b356106a481610dc6565b1561307657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356130c681610dc6565b1515845260208101356130d881610832565b6001600160a01b031660208501520135910152565b9035609e1982360301811215610421570190565b908060209392818452848401376000828201840152601f01601f1916010190565b803561312d81610dc6565b1515825260208101356020830152604081013561314981610dc6565b1515604083015261ffff606082013561316181610415565b1660608301526080810135601e198236030181121561042157016020810190356001600160401b0381116104215780360382136104215760a0838160806106a49601520191613101565b9190808252602080920192916000905b8282106131c9575050505090565b90919293806131e36001926131dd88610deb565b15159052565b6131f96131f1848801610deb565b151582850152565b6132116040613209818901610deb565b151590830152565b61322b6060613221818901610426565b61ffff1690830152565b613244608061323b818901610885565b90830190611814565b61325460a0613209818901610deb565b61326460c061323b818901610885565b61327460e061323b818901610885565b610100808701359082015261012080870135908201526132a461014061329b8189016121c2565b60ff1690830152565b610160868101359082015261018080870135908201526101a09081019501939201906131bb565b9391926133f79160406106a49795610305885260018060a01b0380931660208901528281356132f981610832565b168289015282602082013561330d81610832565b166060890152013561331e81610832565b16608086015260e060a086015261333b60e086016131dd83610deb565b60208101356101008601526133e561335560408301610deb565b91613367610120938489019015159052565b606081013561014088015261338b61338160808301610deb565b1515610160890152565b6133dc6133c861018060a0840135818b01526133c06101a0966133b3888d0160c088016130b7565b6102008c019086016130b7565b8301836130ed565b6101c06102608a01526102a0890190613122565b928101906130ed565b85820360df1901610280870152613122565b9260c08185039101526131ab565b92819794989399959299969196600160a01b60019003958682169a8b92338414159a61346061ffff9b6134939a61348c9660008051602061615e8339815191529f9561346e966134aa575b506040519a8b95602087016132cb565b03601f198101875286610983565b6134838d61347d368985610a2e565b90614fdf565b34953691610a2e565b928b614e57565b60405160008152931694169180602081015b0390a4565b6134b382613065565b6134fa575b6134c460808301613065565b15613450576134f4906134da33612f1e836120c7565b54906134ed60a08501358093101561306f565b3390612fd5565b38613450565b61352361350a33612f1e846120c7565b5461351c60208501358092101561306f565b3383612fd5565b6134b8565b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b6080809180511515845260018060a01b036020820151166020850152600180831b0380604083015116604086015260608201511660608501520151910152565b8051151582526020808201516001600160a01b031690830152604090810151910152565b9061018061010061043193805115158452602081015160208501526040810151604085015260018060a01b03606082015116606085015261360160808201516080860190611814565b60a08181015115159085015260c081015160c085015261362960e082015160e0860190613554565b0151910190613594565b61030681526001600160a01b039182166020820152918116604083015290911660608201526001600160401b0390911660808201526106a49490939092613697929091906136859060a08701906135b8565b6102c0806102808701528501916131ab565b916102a0818403910152613122565b9590969298919897939760018060a01b039586881699338b036137c3575b60208101966136d38851615b42565b5088526040516303408e4760e41b81529960208b6004817f00000000000000000000000000000000000000000000000000000000000000008e165afa90811561081d5761346061377c998f96988f9960008051602061615e8339815191529f976137578f61348c9a61376799613795575b50613750815189615d37565b5051615aaa565b6040519c8d973360208a01613633565b6134838d613776368985610a2e565b90615068565b5160405190815292169361ffff169180602081016134a5565b6137b59060203d81116137bc575b6137ad8183610983565b810190613533565b5038613744565b503d6137a3565b6137ed6137d333612f1e8c6120c7565b546137e560208401918251111561306f565b51338b612fd5565b6136c4565b156137f957565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b519061043182610832565b519061043182610dc6565b9190826060910312610421576040516138658161094d565b6040808294805161387581610dc6565b8452602081015161388581610832565b60208501520151910152565b9092919261389e81610a13565b916138ac6040519384610983565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a492602001613891565b919060a08382031261042157604051906138f982610932565b8193805161390681610dc6565b835260208101516020840152604081015161392081610dc6565b6040840152606081015161393381610415565b60608401526080810151916001600160401b0383116104215760809261224692016138c6565b91906101c0838203126104215761396e6109e6565b9261397881613842565b84526020810151602085015261399060408201613842565b6040850152606081015160608501526139ab60808201613842565b608085015260a081015160a08501526139c78260c0830161384d565b60c0850152610120916139dc8184840161384d565b60e08601526101808201516001600160401b03908181116104215782613a039185016138e0565b6101008701526101a083015190811161042157613a2092016138e0565b90830152565b5190610431826121b7565b81601f8201121561042157805190613a48826121a0565b92604090613a5882519586610983565b83855260209182860191836101a080970286010194818611610421578401925b858410613a89575050505050505090565b868483031261042157848791613a9d6109c6565b613aa687613842565b8152613ab3838801613842565b83820152613ac2868801613842565b868201526060613ad3818901613528565b908201526080613ae4818901613837565b9082015260a0613af5818901613842565b9082015260c0613b06818901613837565b9082015260e0613b17818901613837565b9082015261010080880151908201526101208088015190820152610140613b3f818901613a26565b9082015261016080880151908201526101808088015190820152815201930192613a78565b8082039160e08312610421578151613b7b81610415565b9360606020840151613b8c81610832565b94603f19011261042157604051613ba28161094d565b6040840151613bb081610832565b81526060840151613bc081610832565b60208201526080840151613bd381610832565b604082015260a084015190936001600160401b039390918481116104215781613bfd918401613959565b9360c0830151908111610421576106a49201613a31565b80516001600160a01b03908116835260208083015182169084015260409182015116910152565b9060a060806106a4938051151584526020810151602085015260408101511515604085015261ffff6060820151166060850152015191816080820152019061066e565b6001600160a01b0390911681526106a49291613c9e906020830190613c14565b60a06080820152613cb460a08201835115159052565b602082015160c08201526040820151151560e082015260608201516101009081830152613d3a608084015191613cf1610120938486019015159052565b60a0850151610140850152613d0f60c0860151610160860190613594565b60e085015190613d256101c09283870190613594565b85015190610220850152610260840190613c3b565b92015190610240609f1982850301910152613c3b565b8051821015613d645760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b15613d8157565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff613de160209295949560408552604085019061066e565b9416910152565b60009060033d11613df557565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d602484011117613e6357818401948551938411613e6b573d85010160208487010111613e6357506106a492910160200190610983565b949350505050565b50949350505050565b3d15613e9f573d90613e8582610a13565b91613e936040519384610983565b82523d6000602084013e565b606090565b9060005b825181101561413b576040613ec981613ec18487613d50565b510151151590565b15613eeb575080613ee5613edf60019386613d50565b51614330565b01613ea8565b6060613f1561030561ffff613f0e84613f04888b613d50565b51015161ffff1690565b1614613d7a565b613f2460a0613ec18588613d50565b613f4260c0613f338689613d50565b5101516001600160a01b031690565b91614013613f5560e0613f33888b613d50565b93614005610100613f66898c613d50565b5101518a610120613f778b83613d50565b510151613f93610140613f8a8d85613d50565b51015160ff1690565b90610180613fb18d610160613fa88288613d50565b51015195613d50565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610983565b61403661402b6111356111356080613f338a8d613d50565b91613f04878a613d50565b90803b15610421576140646000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af19081614128575b5061408e57600161407e613de8565b6308c379a0146140e0575b614099575b505050600190613ee5565b6140b66140b26140a7613e74565b92613ec1878a613d50565b1590565b1561408e576140c76140dc916142b8565b925162461bcd60e51b81529283928301610693565b0390fd5b6140e8613e06565b806140f4575b50614089565b600091506141096140b284613ec1898c613d50565b156140ee57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6141359261091a565b3861406f565b509050565b9060005b825181101561413b57604061415d81613ec18487613d50565b15614179575080614173613edf60019386613d50565b01614144565b606061419261030661ffff613f0e84613f04888b613d50565b6141a160a0613ec18588613d50565b6141b060c0613f338689613d50565b916141c3613f5560e0613f33888b613d50565b6141db61402b6111356111356080613f338a8d613d50565b90803b15610421576142096000929183928751948580948193631221baf960e31b835260049a8b8401613dc6565b03925af190816142a5575b50614233576001614223613de8565b6308c379a01461425d575b61423e575b505050600190614173565b61424c6140b26140a7613e74565b15614233576140c76140dc916142b8565b614265613e06565b80614271575b5061422e565b600091506142866140b284613ec1898c613d50565b1561426b57845162461bcd60e51b81529081906140dc90828701610693565b8061118f6142b29261091a565b38614214565b604481511061430957600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a492604401613891565b5060405161431681610968565b600a8152695553444f3a206461746160b01b602082015290565b8051156144a05761434a6111356111356080840151610826565b61435760c0830151610826565b61436460e0840151610826565b916101208401519061437b61014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af1908161448d575b5061440b5760016143fb613de8565b6308c379a01461444f575b61440e575b50565b6144266140b2602061441e613e74565b930151151590565b1561440b576144376140dc916142b8565b60405162461bcd60e51b815291829160048301610693565b614457613e06565b80614463575b50614406565b60208301516000925061445d575b60405162461bcd60e51b81529081906140dc9060048301610693565b8061118f61449a9261091a565b386143ec565b6144b36111356111356080840151610826565b6144c060c0830151610826565b6144cd60e0840151610826565b9161010084015190610120850151936144eb61014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e481016143e1565b1561456857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260a0910312610421576040516145be81610932565b608080829480516145ce81610dc6565b845260208101516145de81610832565b602085015260408101516145f181611d10565b6040850152606081015161460481611d10565b60608501520151910152565b91906101e08382031261042157611f009061018061462c6109a6565b9461463681613842565b8652602081015160208701526040810151604087015261465860608201613837565b606087015261466960808201613837565b608087015261467a60a08201613842565b60a087015260c081015160c08701526146968360e083016145a6565b60e08701520161384d565b9190916102c0818403126104215780516146ba81610415565b9260208201516146c981610832565b9260408301516146d881610832565b9260608101516146e781610832565b9260808201516146f681610460565b926147048260a08501614610565b61028084015190936001600160401b03939091848111610421578161472a918401613a31565b936102a0830151908111610421576106a492016138e0565b6001600160a01b03909116815260209493916102408083019161476890888501906135b8565b610200830152835180915285610260830194019060005b81811061479d575050506106a4939450610220818403910152613c3b565b909194876101a060019288516147b582825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526147eb60808083015190840190611814565b60a08181015115159083015261480960c08083015190840190611814565b61481b60e08083015190840190611814565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201960192910161477f565b601319810191908211610f4957565b605019810191908211610f4957565b91908203918211610f4957565b6001600160a01b039091168152602081019190915260400190565b61492491600080604051936148d2856134606020998a83019763a9059cbb60e01b89526024840161488b565b60018060a01b031692604051946148e886610968565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161491e613e74565b916149a6565b80518061493057505050565b818391810103126104215781015161494781610dc6565b1561494f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b91929015614a0857508151156149ba575090565b3b156149c35790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156144715750805190602001fd5b604080918051151584526020810151602085015201511515910152565b926104319691989795614a9261024096614a886040614a9d95614aa8986102a08b019f60018060a01b03168b5260208b015280511515828b0152602081015160608b015201516080890190614a1b565b60e0870190614a1b565b610140850190613554565b6101e0830190613594565b0190613c14565b9081602091031261042157516106a481610832565b90816020910312610421575190565b9260e094916106a497969360018060a01b038092168652166020850152604084015260608301526080820152600160a08201528160c08201520190613c3b565b919290928051614d95575b506060830190614b2e8251610826565b92602092614b4184870195865190612cfe565b50855115614cc4576040860193845115614bca575b50611135611135614b679251610826565b9160c0614b776080880151610826565b9551945196015194833b1561042157614bac600096928793604051998a98899788966303c592fd60e21b885260048801614ad3565b03925af1801561081d57614bbd5750565b8061118f6104319261091a565b80600491614bde6111356111358651610826565b6040516331d8733560e11b815293849182905afa91821561081d57614c36928291600091614c97575b50614c1560808b0151610826565b89516040516305da91c960e31b81529586939284928392916004840161488b565b03916001600160a01b03165afa92831561081d57614b67936111359361113593600092614c6a575b50508752925050614b56565b614c899250803d10614c90575b614c818183610983565b810190614ac4565b3880614c5e565b503d614c77565b614cb79150823d8411614cbd575b614caf8183610983565b810190614aaf565b38614c07565b503d614ca5565b614cd79192506111356111359151610826565b90835190614ce3610a06565b936000958686528682870152866040870152614cfd610a06565b95878752878388015260408701525196614d15610a06565b6001815297888301526001604089015260e0810151614d5f614d406080610100850151940151610826565b614d48610a06565b8a81526001600160a01b0390911694810194909452565b876040840152853b15614d915791614bac918894936040519a8b998a9889976339551beb60e21b895260048901614a38565b8780fd5b614d9e90614140565b38614b1e565b15614dab57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92614e246106a497959361ffff614e329416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614e809193929561ffff81166000526001602052614e876040600020604051948580926114e5565b0384610983565b825115614eee57614e998551826150f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561042157600096614bac91604051998a988997889662c5803160e81b885260048801614dff565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614f5357565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614f9c57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103056000526020526040600020549061501d821515614f4c565b1015614f95565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b60228251106150245761ffff60226104319301519116600052600260205260406000206103066000526020526040600020549061501d821515614f4c565b9190602281511061502457602261ffff910151921660005260026020526150db60406000206001600052602052604060002090565b54908101809111610f49576104319161501d821515614f4c565b61ffff16600052600360205260406000205490811561515a575b1161511657565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b612710915061510f565b906020828203126104215781516001600160401b038111610421576106a492016138c6565b60409061ffff6106a495931681528160208201520191613101565b90601f81116151b257505050565b600091825260208220906020601f850160051c830194106151ee575b601f0160051c01915b8281106151e357505050565b8181556001016151d7565b90925082906151ce565b92909161526a5a604051633356ae4560e11b602082015261ffff8716602482015260806044820152906152648261525661523560a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610983565b30616100565b939015615279575b5050505050565b6152829461528c565b3880808080615272565b919361532a7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95615338939561ffff815160208301209616958660005260056020526152f08361126360208b6040600020826040519483868095519384920161064b565b5561530d604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b1561535d57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff6153cf9398979698168452608060208501526080840191613101565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b9491959897906116fb61543e60409961543661544497615461993691610a2e565b943691610a2e565b97615aaa565b928451968794859463040a7bb160e41b86523090600487016155ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d5760009081936154a457509190565b90506104d291925060403d8111610ef757610ee88183610983565b939694916106a498969361ffff6154e49316865260c0602087015260c0860191613101565b6001600160401b0390961660408401526060830152608082015280840360a090910152613101565b9196979298959493909430330361559457615528908530615e9d565b60405181815290946001600160a01b03169390849061ffff85169060008051602061619e83398151915290602090a3833b15610421576000988995615584936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016154bf565b0393f1801561081d57614bbd5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff61561e9316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff615641846160a5565b16806157945750505060ff615655826160a5565b161580615789575b61566690615bad565b61567861567282616055565b916160f0565b90916001600160a01b03918284161561577f575b6156c0907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316615b2f565b91831692831561573a5760008051602061619e833981519152916156fa61ffff926156f56156f087600a54612d40565b600a55565b6120ad565b8481540190558460006000805160206161de8339815191526040518061572589829190602083019252565b0390a360405193845216918060208101612e77565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061568c565b50805160291461565d565b6001036157a457610431936158bd565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156157ef57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361585a60e0979361ffff61588f9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b930152565b6158ac6040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916158c884615c5e565b90916158e46158dd87610ca8610ca28b610fe2565b5460ff1690565b916001600160401b039161591b907f0000000000000000000000000000000000000000000000000000000000000000908416615b2f565b9288888b8315615a17575b505050853b156159cc579461596d9694615264948a94615256948d996000146159c55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01615830565b90156159ba5750906159b561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615894565b0390a2565b92610431949261528c565b169261594e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250615338915050565b90610ca8610cad92615a3789615a31615a3d979b30615e4d565b99610fe2565b906111e9565b88888b615926565b60065460ff1615615a8c5760228251106150245761ffff6022610431930151911660005260026020526040600020600080526020526040600020549061501d821515614f4c565b505161173057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115615b2a576001600160401b03919004818111615ae8571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615a94565b81810292918115918404141715610f4957565b7f00000000000000000000000000000000000000000000000000000000000000008015615b2a57810690818103908111610f495791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a48161094d565b15615bb457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b166069830152615c4e815180926020868601910161064b565b8101036051810184520182610983565b90615c76600160ff615c6f856160a5565b1614615bad565b615c7f82616055565b90615c89836160f0565b906049845110615cfa576049840151936051815110615cbe57615cbb605182015191615cb5815161486f565b90615fd1565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615de6575b8015615d975781615d6c84615d5f6000956120ad565b54612e5482821015615df6565b55615d7a83600a5403600a55565b6040518381526000805160206161de83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b615df1833384612fd5565b615d49565b15615dfd57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561573a57600a5490828201809211610f4957600092615e8e6020926000805160206161de83398151915294600a556120ad565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615ec9575b5015612e0057610da5833383612fd5565b905033141538615eb8565b15615edb57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615f1857565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615f6582615f5e81612d24565b1015615ed4565b615f728282511015615f11565b81615f8a575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615fbe5750508252601f01601f191660405290565b9092835181526020809101930190615fa6565b615fde82615f5e81612d24565b615ff38151615fec84612d32565b1115615f11565b8161600b575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106160425750508252601f01601f191660405290565b909283518152602080910193019061602a565b602181511061606857602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106160b5576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110615cbe576029015190565b6040519392909160009160c08601916001600160401b0383118784101761092d5783926040526096875282602088019560a036883760208451940192f1903d9060968211616154575b6000908286523e9190565b6096915061614956fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122080a73f07412f4ee891301df8400b22e8798824fa57aa40e52aedf8d89231c60164736f6c63430008120033"; + "0x61010060409080825234620004d45760608162004d818038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161483c90816200054582396080518181816104a201528181610765015281816108bc01528181610a5101528181610c1201528181611b2501528181611c7f015281816124fb01528181613095015281816133e80152613a2c015260a05181611351015260c051818181613c7201528181613f05015281816140d80152614172015260e05181611f3c0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033e57806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b4814610352578063857749b01461034d5780638cfd8f5c146103485780638da5cb5b146103435780639358928b1461033e578063950c8a741461033957806395d89b41146103345780639bdb98121461032f5780639f38369a1461032a578063a457c2d714610325578063a4c51df514610320578063a6c3d1651461031b578063a9059cbb14610316578063b02f69a214610311578063b353aaa71461030c578063ba03a8d714610307578063baf3292d14610302578063c4461834146102fd578063cbed8b9c146102f8578063ce8849ed146102f3578063d1deba1f146102ee578063dbd01de1146102e9578063dd62ed3e146102e4578063de406577146102df578063df2a5b3b146102da578063e6a20ae6146102d5578063e78eb946146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612565565b612491565b6123ca565b6123a7565b61235d565b612213565b61218a565b612128565b612083565b612058565b611f6b565b611f26565b611ecc565b611ea3565b611d40565b611d17565b611c2b565b611c0e565b611b9e565b611b54565b611b0f565b611a68565b61187f565b6116fc565b611669565b6115ab565b611508565b6114bd565b611419565b6113f0565b61091d565b6113c7565b611375565b611337565b6111a1565b61114a565b611004565b610fc7565b610ee4565b610e3f565b610e1c565b610db5565b610c79565b610bf8565b610bbf565b610b63565b610acf565b6109c7565b61097b565b61093b565b610893565b610854565b61081f565b61073c565b61065c565b61059f565b61048b565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b608435906001600160401b03821682036103d157565b9060806003198301126103d15760043561043f816103c5565b916001600160401b03906024358281116103d15781610460916004016103e3565b9390939260443581811681036103d157926064359182116103d157610487916004016103e3565b9091565b346103d15761049936610426565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361055a5761051f61052792610019976105186104fe6104f98a61ffff166000526001602052604060002090565b61112f565b8051908184149182610550575b508161052d575b506132f1565b3691610cff565b923691610cff565b926137c0565b905061053a368486610cff565b6020815191012090602081519101201438610512565b151591503861050b565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105e4575b506040519015158152f35b6301ffc9a760e01b149050386105d9565b60009103126103d157565b60005b8381106106135750506000910152565b8181015183820152602001610603565b9060209161063c81518092818552858086019101610600565b601f01601f1916010190565b906020610659928181520190610623565b90565b346103d1576000806003193601126107395760405181600b5461067e8161105f565b8084529060019081811690811561071157506001146106b8575b6106b4846106a881880382610cc3565b60405191829182610648565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106fe57505050816106b4936106a89282010193610698565b80548585018701529285019281016106e2565b6106b496506106a89450602092508593915060ff191682840152151560051b82010193610698565b80fd5b346103d157600060203660031901126107395760043561075b816103c5565b610763612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107d2576107c6575080f35b6107cf90610cab565b80f35b612f0f565b5080fd5b6001600160a01b038116036103d157565b606435906103e1826107db565b60e435906103e1826107db565b61010435906103e1826107db565b35906103e1826107db565b346103d15760403660031901126103d15761084960043561083f816107db565b60243590336127d2565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610874816103c5565b61087c612580565b166000526003602052602435604060002055600080f35b346103d15760006020366003190112610739576004356108b2816103c5565b6108ba612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107d2576107c6575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761084960043561095b816107db565b602435610967816107db565b604435916109768333836128fd565b6126ca565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b608435906103e182610997565b61012435906103e182610997565b35906103e182610997565b346103d15760a03660031901126103d1576004356109e4816103c5565b606435906109f182610997565b608435906001600160401b0382116103d157610a1661051860409336906004016103e3565b90610a4d610a30610a286044356140d6565b6024356141a7565b928451958694859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107d2576000908192610a9e575b50604080519182526020820192909252f35b9050610ac1915060403d8111610ac8575b610ab98183610cc3565b810190613bb1565b9038610a8c565b503d610aaf565b346103d15760403660031901126103d157600435610aec816107db565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610b265761084991336127d2565b6125d8565b9060406003198301126103d157600435610b44816103c5565b91602435906001600160401b0382116103d157610487916004016103e3565b346103d157602061ffff610bb0610b7936610b2b565b9390911660005260018452610b9b610ba2604060002060405192838092611099565b0382610cc3565b848151910120923691610cff565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610bdf816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610c0636610b2b565b9190610c10612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c676000988997889460048501613733565b03925af180156107d2576107c6575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cbe57604052565b610c95565b90601f801991011681019081106001600160401b03821117610cbe57604052565b6001600160401b038111610cbe57601f01601f191660200190565b929192610d0b82610ce4565b91610d196040519384610cc3565b8294818452818301116103d1578281602093846000960137010152565b60606003198201126103d157600435610d4e816103c5565b916024356001600160401b03928382116103d157806023830112156103d157816024610d7f93600401359101610cff565b9160443590811681036103d15790565b602090610da9928260405194838680955193849201610600565b82019081520301902090565b346103d1576020610e1361ffff610df283610dcf36610d36565b949091166000526005825260406000208260405194838680955193849201610600565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610e4d36610426565b9192949390303303610e715761051f610e6b92610019973691610cff565b92613c0b565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060a31901126103d15760a490565b908160609103126103d15790565b60a03660031901126103d157600435610efc816107db565b602435610f08816103c5565b604435916084356001600160401b0381116103d157602061ffff610f3f6000805160206147c7833981519152933690600401610ed6565b93610fb28535610f4e816107db565b610f6c6105188689013598610f628a6107db565b60408101906139aa565b610f76818a614071565b610f8b610f84606435614170565b508561437a565b97610f97891515613de8565b610fa9610fa38a6140d6565b8c6141a7565b9234938b6133a4565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d157600435610fe4816107db565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107395761101e612580565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561108f575b602083101461107957565b634e487b7160e01b600052602260045260246000fd5b91607f169161106e565b90600092918054916110aa8361105f565b91828252600193848116908160001461110c57506001146110cc575b50505050565b90919394506000526020928360002092846000945b8386106110f85750505050010190388080806110c6565b8054858701830152940193859082016110e1565b9294505050602093945060ff191683830152151560051b010190388080806110c6565b906103e16111439260405193848092611099565b0383610cc3565b346103d15760203660031901126103d15761ffff60043561116a816103c5565b1660005260016020526106b4610b9b61118d604060002060405192838092611099565b604051918291602083526020830190610623565b60e03660031901126103d1576004356111b9816107db565b6024356111c5816103c5565b604435916001600160401b03906084358281116103d1576111ea9036906004016103e3565b91909260a435818116918282036103d15760c4359081116103d157611213903690600401610ed6565b9061124a823595611223876107db565b611242611238602086013595610f62876107db565b9990923691610cff565b973691610cff565b928760ff600654166000146112b5579360209593610fa9610fb2946112836000805160206147c78339815191529a958561ffff9a613617565b611298611291606435614170565b508861437a565b9a6112a48c1515613de8565b8d6112ae8d6140d6565b9033614234565b505082939192516112e3576000805160206147c78339815191529460209461ffff94610fa9610fb294611283565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e13600435611397816103c5565b61ffff602435916113a7836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107395760405181600c5461143b8161105f565b808452906001908181169081156107115750600114611464576106b4846106a881880382610cc3565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b8284106114aa57505050816106b4936106a89282010193610698565b805485850187015292850192810161148e565b346103d157602060ff6114fc61ffff610df2846114d936610d36565b949091166000526007825260406000208260405194838680955193849201610600565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611528816103c5565b166000526001602052610b9b611548604060002060405192838092611099565b805115611566576106a8816115606106b493516137a2565b906145ba565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d1576004356115c8816107db565b602435903360005260096020526115f58160406000209060018060a01b0316600052602052604060002090565b54918083106116165761160a920390336127d2565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611686816103c5565b6001600160401b03906064358281116103d1576116a79036906004016103e3565b6116b2929192610410565b60a435916116bf83610997565b60c4359586116103d1576116da6116ea9636906004016103e3565b95909460443590602435906139dc565b60408051928352602083019190915290f35b346103d15761170a36610b2b565b90611713612580565b6040519260209280838587013761173f6034868381013060601b88820152036014810188520186610cc3565b60009361ffff8316855260019081815260408620918751916001600160401b038311610cbe5761177983611773865461105f565b8661374e565b80601f84116001146117e95750918080926117d89695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b946117de575b50501b916000199060031b1c19161790555b60405193849384613733565b0390a180f35b0151925038806117ba565b91939498601f19841661180187600052602060002090565b938a905b828210611868575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a959391856117d89896941061184f575b505050811b0190556117cc565b015160001960f88460031b161c19169055388080611842565b808886978294978701518155019601940190611805565b346103d15760403660031901126103d15761084960043561189f816107db565b60243590336126ca565b6101c435906001600160801b03821682036103d157565b60a0906101631901126103d1576040519060a082018281106001600160401b03821117610cbe5760405281610164356118f881610997565b815261018435611907816107db565b60208201526101a4356001600160801b03811681036103d157604082015261192d6118a9565b606082015260806101e435910152565b6060906102031901126103d15760405190606082018281106001600160401b03821117610cbe57604052816102043561197581610997565b815261022435611984816107db565b6020820152604061024435910152565b906101e06083198301126103d15760405161012081018181106001600160401b03821117610cbe57604052610100611a2482946119cf6109a1565b845260a435602085015260c43560408501526119e96107f9565b60608501526119f6610806565b6080850152611a036109ae565b60a08501526101443560c0850152611a1a816118c0565b60e085015261193d565b910152565b9181601f840112156103d1578235916001600160401b0383116103d1576020808501946101a085020101116103d157565b908160a09103126103d15790565b6102c03660031901126103d157600435611a81816107db565b602435611a8d816107db565b60443591611a9a836103c5565b611aa26107ec565b92611aac36611994565b6001600160401b0394610264358681116103d157611ace903690600401611a29565b929091610284358881116103d157611aea903690600401611a5a565b946102a4359889116103d157611b076100199936906004016103e3565b98909761304f565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760403660031901126103d157602060ff6114fc602435611b78816107db565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611bde816107db565b611be6612580565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d157600435611c48816103c5565b602435611c54816103c5565b6064356001600160401b0381116103d157611c739036906004016103e3565b9092611c7d612580565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d15760008094611cf4604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191612a31565b03925af180156107d257611d0457005b80611d1161001992610cab565b806105f5565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b611d4936610426565b9161ffff86949296166000526005602052611d9081604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611e5257611e418483611e3a7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611e2684611e0e8e8a8f611e4d9f908f611df490611de7611e089436908d610cff565b602081519101201461391d565b61ffff166000526005602052604060002090565b91613904565b906001600160401b0316600052602052604060002090565b55611e3236878d610cff565b933691610cff565b9188613c0b565b60405195869586613973565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e13600435611eee816107db565b60243590611efb826107db565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d157600435611f88816103c5565b602435611f94816103c5565b60443591611fa0612580565b821561201b57611e4d7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611ff58560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b90816101c09103126103d15790565b6101403660031901126103d15760043561209c816107db565b6024356120a8816107db565b604435916120b5836103c5565b6120bd6107ec565b6001600160401b0393906084358581116103d1576120df9036906004016103e3565b906120e936610ec5565b92610104358881116103d157612103903690600401612074565b94610124359889116103d157612120610019993690600401611a29565b989097612d58565b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4602060043561216881610997565b612170612580565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d1576004356121a8816103c5565b6001600160401b03906024358281116103d1576121c99036906004016103e3565b91906044359084821682036103d1576084356121e4816107db565b60c4359586116103d1576121ff6100199636906004016103e3565b94909360e4359660a4359460643593613ad2565b346103d15761222136610b2b565b919061222b612580565b60009161ffff81168352600160209080825260408520916001600160401b038711610cbe576122648761225e855461105f565b8561374e565b8590601f88116001146122cb57509186808798936117d8957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab99936122c0575b501b906000198460031b1c191617905560405193849384613733565b8801359250386122a4565b90601f1988166122e085600052602060002090565b9288905b828210612346575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab98996117d896941061232c575b505082811b0190556117cc565b870135600019600386901b60f8161c19169055388061231f565b808685968294968c013581550195019301906122e4565b346103d15760403660031901126103d157602060ff6114fc602435612381816107db565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d1576004356123e7816107db565b6123ef612580565b6001600160a01b03908116801561243d57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d1576004356124ae816103c5565b602435906124bb826103c5565b6124c66044356107db565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107d2576106b491600091612544575b5060405191829182610648565b61255f913d8091833e6125578183610cc3565b8101906136d5565b38612537565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361259457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2657565b6051019081605111610b2657565b91908201809211610b2657565b1561261e57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561267657565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b03808416929091831561277f57612764826000805160206147e78339815191529461277a941696612704881515612617565b6001600160a01b03811660009081526008602052604090206127499085905461272f8282101561266f565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156128ac57821693841561285c578061284b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461283461277a9560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b0380821660009081526009602090815260408083209386168352929052209091905492600184016129355750505050565b808410612950576129479303916127d2565b388080806110c6565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b3561065981610997565b156129a657565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b6040809180356129f681610997565b151584526020810135612a08816107db565b6001600160a01b031660208501520135910152565b9035609e19823603018112156103d1570190565b908060209392818452848401376000828201840152601f01601f1916010190565b8035612a5d81610997565b15158252602081013560208301526040810135612a7981610997565b1515604083015261ffff6060820135612a91816103c5565b1660608301526080810135601e19823603018112156103d15701602081359101906001600160401b0381116103d15780360382136103d15760a0838160806106599601520191612a31565b359060ff821682036103d157565b9190808252602080920192916000905b828210612b08575050505090565b9091929380612b22600192612b1c886109bc565b15159052565b612b38612b308488016109bc565b151582850152565b612b506040612b488189016109bc565b151590830152565b612b6a6060612b608189016103d6565b61ffff1690830152565b612b896080612b7a818901610814565b6001600160a01b031690830152565b612b9960a0612b488189016109bc565b612ba960c0612b7a818901610814565b612bb960e0612b7a818901610814565b61010080870135908201526101208087013590820152612be9610140612be0818901612adc565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612afa565b61030581526001600160a01b03918216602082015296959460e094612d539490939192612d4592604090828135612c46816107db565b16828d0152826020820135612c5a816107db565b1660608d01520135612c6b816107db565b1660808a0152612c886101008060a08c01528a01612b1c836109bc565b612d33610120916020810135838c0152612cb1612ca7604083016109bc565b15156101408d0152565b60608101356101608c0152612d2a8b612ccc608084016109bc565b94612cde610180968784019015159052565b610280612d1c6101a09760a087013589860152612d146101c094612d0786880160c08b016129e7565b61022087019089016129e7565b860186612a1d565b9201526102c08d0190612a52565b92810190612a1d565b89820360ff19016102a08b0152612a52565b9187830360c0890152612aea565b930152565b92819795929993989498969196600160a01b60019003958682169a8b92338414159a612dcb61ffff9b612dfe9a612df7966000805160206147c78339815191529f95612dd996612e15575b50612db7612db2368e8a610cff565b61323e565b50949150506040519b8c9660208801612c10565b03601f198101875286610cc3565b612dee8d612de8368985610cff565b9061354f565b34953691610cff565b928b6133a4565b60405160008152931694169180602081015b0390a4565b612e1e84612995565b612e78575b612e2f60808501612995565b15612da357612e7290612e58336128348360018060a01b03166000526009602052604060002090565b5490612e6b60a08701358093101561299f565b33906128fd565b38612da3565b612eb4612e9b336128348460018060a01b03166000526009602052604060002090565b54612ead60208701358092101561299f565b33836128fd565b612e23565b15612ec057565b60405162461bcd60e51b8152602060048201526012602482015271155114d3ce881b9bdd08185c1c1c9bdd995960721b6044820152606490fd5b908160209103126103d15751610659816103c5565b6040513d6000823e3d90fd5b979695929461302e89610280976001600160401b0361304096612d539996610306855260018060a01b0316602085015216604083015280511515606083015260208101516080830152604081015160a0830152612f87606082015160c084019060018060a01b03169052565b60808101516001600160a01b031660e083015260a081015115156101009283015260c08101516101208d015260e0810151805115156101408e015260208101516001600160a01b03166101608e015260408101516001600160801b039081166101808f01526060820151166101a08e0152608001516101c08d01520151805115156101e08c015260208101516001600160a01b03166102008c0152604001516102208b0152565b6102a0806102408b0152890191612aea565b90868203610260880152612a52565b9597939096949298919860018060a01b039586881699338b03613181575b602084019661307c8851614170565b5088526040516303408e4760e41b8152966020886004817f00000000000000000000000000000000000000000000000000000000000000008e165afa9081156107d257612dcb8a8f968f93966000805160206147c78339815191529f9761311561310a61313a9f8f613101612df79d612db2936131259d613153575b5089519061437a565b5036908c610cff565b5096915050516140d6565b9b6040519c8d9760208901612f1b565b612dee8d613134368985610cff565b906135d9565b5160405190815292169361ffff16918060208101612e10565b6131739060203d811161317a575b61316b8183610cc3565b810190612efa565b50386130f8565b503d613161565b6131be6131a4336128348c60018060a01b03166000526009602052604060002090565b546131b6602087019182511115612eb9565b51338b6128fd565b61306d565b156131ca57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561320b57565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b6000808251602281149081156132e6575b50156132a957600283015193602284015193600261ffff87166001811480156132a0575b61327c906131c3565b613287871515613204565b1461328f5750565b925090506056604283015192015190565b50808214613273565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b60429150113861324f565b156132f857565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9261337161065997959361ffff61337f9416865260c0602087015260c0860190610623565b908482036040860152610623565b6001600160a01b0391821660608401529316608082015280830360a090910152610623565b946133cd9193929561ffff811660005260016020526133d4604060002060405194858092611099565b0384610cc3565b825115613459576133e6855182613666565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661343b91604051998a988997889662c5803160e81b88526004880161334c565b03925af180156107d25761344c5750565b80611d116103e192610cab565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b156134be57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561350a57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103056000526020526040600020549061358d8215156134b7565b1015613503565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b60228251106135945761ffff60226103e19301519116600052600260205260406000206103066000526020526040600020549061358d8215156134b7565b9190602281511061359457602261ffff9101519216600052600260205261364c60406000206001600052602052604060002090565b54908101809111610b26576103e19161358d8215156134b7565b61ffff1660005260036020526040600020549081156136cb575b1161368757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613680565b6020818303126103d1578051906001600160401b0382116103d1570181601f820112156103d157805161370781610ce4565b926137156040519485610cc3565b818452602082840101116103d1576106599160208085019101610600565b60409061ffff61065995931681528160208201520191612a31565b90601f811161375c57505050565b600091825260208220906020601f850160051c83019410613798575b601f0160051c01915b82811061378d57505050565b818155600101613781565b9092508290613778565b601319810191908211610b2657565b605019810191908211610b2657565b9290916138325a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061382c8261381e6137fd60a483018a610623565b6001600160401b038816606484015282810360231901608484015288610623565b03601f198101845283610cc3565b30614769565b939015613841575b5050505050565b61384a94613854565b388080808061383a565b91936138f17fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956138ff939561ffff815160208301209616958660005260056020526138b883610df260208b60406000208260405194838680955193849201610600565b556001600160401b036138dd604051988998895260a060208a015260a0890190610623565b921660408701528582036060870152610623565b908382036080850152610623565b0390a1565b6020919283604051948593843782019081520301902090565b1561392457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9161399f9060609461ffff6001600160401b039499989799168552608060208601526080850191612a31565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b9491959897906112ae613a056040996139fd613a0b97613a28993691610cff565b943691610cff565b976140d6565b928451968794859463040a7bb160e41b8652309060048701613bc7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107d2576000908193613a6b57509190565b905061048791925060403d8111610ac857610ab98183610cc3565b93969491613ab49061065999979461ffff6001600160401b039416875260c0602088015260c0870191612a31565b961660408401526060830152608082015260a0818503910152612a31565b91969792989594939094303303613b6c57613aee908530614506565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103d1576000988995613b5c936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613a86565b0393f180156107d25761344c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610659959361ffff613bf69316845260018060a01b0316602084015260a0604084015260a0830190610623565b92151560608201526080818403910152610623565b92919060ff613c198461470e565b1680613d935750505060ff613c2d8261470e565b161580613d88575b613c3e906141ed565b613c50613c4a826146be565b91614759565b90916001600160a01b039182841615613d7e575b613c98906001600160401b037f0000000000000000000000000000000000000000000000000000000000000000911661415d565b918316928315613d39577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf91613cf961ffff92613cdf613cda87600a5461260a565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206147e783398151915260405180613d2489829190602083019252565b0390a36040519384521691806020810161277a565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613c64565b508051602914613c35565b600103613da3576103e193613eb9565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b15613def57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b03613e6260e0989461ffff612d539995168d5260208d61010091829101528d0190610623565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610623565b6001600160401b03613eae60409396959496606084526060840190610623565b951660208201520152565b9091613ec4846142a1565b9091613ef5613eee87611e0e613ee88b61ffff166000526007602052604060002090565b8c610d8f565b5460ff1690565b91613f2b6001600160401b0392837f0000000000000000000000000000000000000000000000000000000000000000911661415d565b9288888b8315614027575b505050853b15613fdc5794613f7d969461382c948a9461381e948d99600014613fd55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613e30565b9015613fca575090613fc561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684613e8e565b0390a2565b926103e19492613854565b1692613f5e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506138ff915050565b90611e0e61405c9261405689614041614069979b306144a3565b9961ffff166000526007602052604060002090565b90610d8f565b805460ff19166001179055565b88888b613f36565b60065460ff16156140b85760228251106135945761ffff60226103e1930151911660005260026020526040600020600080526020526040600020549061358d8215156134b7565b50516112e357565b634e487b7160e01b600052601260045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000090811561415857046001600160401b0390818111614113571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b6140c0565b81810292918115918404141715610b2657565b7f0000000000000000000000000000000000000000000000000000000000000000801561415857810690818103908111610b265791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610cbe5760405290565b156141f457565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b1660698301526142918151809260208686019101610600565b8101036051810184520182610cc3565b906142b9600160ff6142b28561470e565b16146141ed565b6142c2826146be565b906142cc83614759565b90604984511061433d576049840151936051815110614301576142fe6051820151916142f881516137b1565b9061463a565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b03811633810361443c575b80156143ed57816143c2846143b560009560018060a01b03166000526008602052604060002090565b5461272f8282101561444c565b556143d083600a5403600a55565b6040518381526000805160206147e783398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6144478333846128fd565b61438c565b1561445357565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b03811691908215613d3957600a5490828201809211610b26576000926144f76020926000805160206147e783398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106599183916001600160a01b038116308114159081614532575b50156126ca576109768333836128fd565b905033141538614521565b1561454457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561458157565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6145ce826145c7816125ee565b101561453d565b6145db828251101561457a565b816145f3575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106146275750508252601f01601f191660405290565b909283518152602080910193019061460f565b614647826145c7816125ee565b61465c8151614655846125fc565b111561457a565b81614674575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b8084106146ab5750508252601f01601f191660405290565b9092835181526020809101930190614693565b60218151106146d157602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b600181511061471e576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614301576029015190565b6040519392909160009160c08601916001600160401b03831187841017610cbe5783926040526096875282602088019560a036883760208451940192f1903d90609682116147bd575b6000908286523e9190565b609691506147b256fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4ccbe45cc23e303f3c84e7b6aa298e5acb1ae1c4dd689bde61adbf80546a7eb64736f6c63430008120033"; type USDOMarketModuleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsDestinationModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsDestinationModule__factory.ts new file mode 100644 index 00000000..97031de0 --- /dev/null +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsDestinationModule__factory.ts @@ -0,0 +1,1895 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + USDOOptionsDestinationModule, + USDOOptionsDestinationModuleInterface, +} from "../../../usd0/modules/USDOOptionsDestinationModule"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_lzEndpoint", + type: "address", + }, + { + internalType: "contract IYieldBoxBase", + name: "_yieldBox", + type: "address", + }, + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + ], + name: "CallOFTReceivedSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "_reason", + type: "bytes", + }, + ], + name: "MessageFailed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "NonContractAddress", + 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: false, + internalType: "bool", + name: "oldState", + type: "bool", + }, + { + indexed: false, + internalType: "bool", + name: "newState", + type: "bool", + }, + ], + name: "PausedUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "ReceiveFromChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + indexed: false, + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + indexed: false, + internalType: "bytes32", + name: "_payloadHash", + type: "bytes32", + }, + ], + name: "RetryMessageSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: true, + internalType: "address", + name: "_from", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "SendToChain", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetBurnerStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "_type", + type: "uint16", + }, + { + indexed: false, + internalType: "uint256", + name: "_minDstGas", + type: "uint256", + }, + ], + name: "SetMinDstGas", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_for", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "SetMinterStatus", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "precrime", + type: "address", + }, + ], + name: "SetPrecrime", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "SetTrustedRemote", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + indexed: false, + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "SetTrustedRemoteAddress", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "SetUseCustomAdapterParams", + 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: "DEFAULT_PAYLOAD_SIZE_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "NO_EXTRA_GAS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PT_SEND_AND_CALL", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + 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: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedBurner", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowedMinter", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "_from", + type: "bytes32", + }, + { + internalType: "address", + name: "_to", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint256", + name: "_gasForCall", + type: "uint256", + }, + ], + name: "callOnOFTReceived", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "circulatingSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cluster", + outputs: [ + { + internalType: "contract ICluster", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "conservator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "creditedPackets", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + 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: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendAndCallFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bool", + name: "_useZro", + type: "bool", + }, + { + internalType: "bytes", + name: "_adapterParams", + type: "bytes", + }, + ], + name: "estimateSendFee", + outputs: [ + { + internalType: "uint256", + name: "nativeFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "zroFee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "module", + type: "address", + }, + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "exercise", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "oTAPTokenID", + type: "uint256", + }, + { + internalType: "address", + name: "paymentToken", + type: "address", + }, + { + internalType: "uint256", + name: "tapAmount", + type: "uint256", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + components: [ + { + internalType: "bool", + name: "withdrawOnAnotherChain", + type: "bool", + }, + { + internalType: "address", + name: "tapOftAddress", + type: "address", + }, + { + internalType: "uint16", + name: "lzDstChainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "uint256", + name: "extraGas", + type: "uint256", + }, + ], + internalType: + "struct ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapData", + name: "tapSendData", + type: "tuple", + }, + { + internalType: "uint256", + name: "paymentTokenAmount", + type: "uint256", + }, + { + components: [ + { + internalType: "bool", + name: "permitAll", + type: "bool", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bool", + name: "yieldBoxTypeApproval", + type: "bool", + }, + { + internalType: "uint16", + name: "actionType", + type: "uint16", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "permitBorrow", + type: "bool", + }, + { + 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", + }, + ], + internalType: "struct ICommonData.IApproval[]", + name: "approvals", + type: "tuple[]", + }, + { + internalType: "uint256", + name: "airdropAmount", + type: "uint256", + }, + ], + name: "exerciseInternal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "failedMessages", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "forceResumeReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + ], + name: "getConfig", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + ], + name: "getTrustedRemoteAddress", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + 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: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + ], + name: "isTrustedRemote", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "lzEndpoint", + outputs: [ + { + internalType: "contract ILayerZeroEndpoint", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "lzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "minDstGasLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "nonblockingLzReceive", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "payloadSizeLimitLookup", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "precrime", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_srcAddress", + type: "bytes", + }, + { + internalType: "uint64", + name: "_nonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + ], + name: "retryMessage", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "_payload", + type: "bytes", + }, + { + internalType: "uint64", + name: "_dstGasForCall", + type: "uint64", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_from", + type: "address", + }, + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "bytes32", + name: "_toAddress", + type: "bytes32", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + { + components: [ + { + internalType: "address payable", + name: "refundAddress", + type: "address", + }, + { + internalType: "address", + name: "zroPaymentAddress", + type: "address", + }, + { + internalType: "bytes", + name: "adapterParams", + type: "bytes", + }, + ], + internalType: "struct ICommonOFT.LzCallParams", + name: "_callParams", + type: "tuple", + }, + ], + name: "sendFrom", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + { + internalType: "uint16", + name: "_chainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_configType", + type: "uint256", + }, + { + internalType: "bytes", + name: "_config", + type: "bytes", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint16", + name: "_packetType", + type: "uint16", + }, + { + internalType: "uint256", + name: "_minGas", + type: "uint256", + }, + ], + name: "setMinDstGas", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_dstChainId", + type: "uint16", + }, + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + ], + name: "setPayloadSizeLimit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_precrime", + type: "address", + }, + ], + name: "setPrecrime", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setReceiveVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_version", + type: "uint16", + }, + ], + name: "setSendVersion", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_srcChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_path", + type: "bytes", + }, + ], + name: "setTrustedRemote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_remoteChainId", + type: "uint16", + }, + { + internalType: "bytes", + name: "_remoteAddress", + type: "bytes", + }, + ], + name: "setTrustedRemoteAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "_useCustomAdapterParams", + type: "bool", + }, + ], + name: "setUseCustomAdapterParams", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "sharedDecimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + 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", + }, + { + inputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + name: "trustedRemoteLookup", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "useCustomAdapterParams", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "yieldBox", + outputs: [ + { + internalType: "contract IYieldBoxBase", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x61010060409080825234620004d457606081620056b78038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d5551615172908162000545823960805181818161049d015281816107600152818161088f01528181610a0901528181610bca01528181611f86015281816120fa015281816128aa0152818161418001526145e7015260a05181611a14015260c051818181611745015281816143b4015281816147d501528181614a390152614ad3015260e0518161239f0152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103c057806301ffc9a7146103bb57806306fdde03146103b657806307e0db17146103b1578063095ea7b3146103ac5780630df37483146103a757806310ddb137146103a257806318160ddd1461033457806323b872dd1461039d578063313ce56714610398578063365260b414610393578063395093511461038e5780633d8b38f6146103895780633f1f4fa41461038457806342d65a8d1461037f578063447705151461037a5780634c42899a1461037a5780635b8c41e6146103755780635c975abb1461037057806366ad5c8a1461036b578063695ef6bf1461036657806370a0823114610361578063715018a61461035c5780637533d7881461035757806376203b48146103525780637e6b6e5a1461034d57806381618d0514610348578063857749b0146103435780638cfd8f5c1461033e5780638da5cb5b146103395780639358928b14610334578063950c8a741461032f57806395d89b411461032a5780639bdb9812146103255780639f38369a14610320578063a457c2d71461031b578063a4c51df514610316578063a6c3d16514610311578063a9059cbb1461030c578063b353aaa714610307578063ba03a8d714610302578063baf3292d146102fd578063c4461834146102f8578063cbed8b9c146102f3578063ce8849ed146102ee578063d1deba1f146102e9578063dbd01de1146102e4578063dd62ed3e146102df578063de406577146102da578063df2a5b3b146102d5578063e6a20ae6146102d0578063eab45d9c146102cb578063eaffd49a146102c6578063eb8d72b7146102c1578063ec6d062b146102bc578063ed629c5c146102b7578063f2fde38b146102b2578063f5ecbdbc146102ad5763fc0c546a0361000e57612914565b612840565b612779565b612756565b61270c565b6125c2565b612539565b6124d7565b6124bb565b6123ce565b612389565b61232f565b612306565b6121bb565b612192565b6120a6565b612089565b612019565b611fcf565b611f70565b611f46565b611dc3565b611d2c565b611c6e565b611bcb565b611b80565b611adc565b611ab3565b6108f0565b611a8a565b611a38565b6119fa565b611646565b611566565b6111e8565b611191565b61104b565b61100e565b610f2b565b610e97565b610e74565b610e0d565b610c31565b610bb0565b610b77565b610b1b565b610a87565b61097f565b61094e565b61090e565b610866565b610827565b6107f2565b610737565b610657565b61059a565b610486565b61ffff8116036103d157565b600080fd5b35906103e1826103c5565b565b9181601f840112156103d1578235916001600160401b0383116103d157602083818601950101116103d157565b6001600160401b038116036103d157565b9060806003198301126103d15760043561043a816103c5565b916001600160401b03906024358281116103d1578161045b916004016103e3565b9390939260443561046b81610410565b926064359182116103d157610482916004016103e3565b9091565b346103d15761049436610421565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105555761051a61052292610019976105136104f96104f48a61ffff166000526001602052604060002090565b611176565b805190818414918261054b575b5081610528575b50613df3565b3691610d50565b923691610d50565b92613f14565b9050610535368486610d50565b602081519101209060208151910120143861050d565b1515915038610506565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103d15760203660031901126103d15760043563ffffffff60e01b81168091036103d157602090631f7ecdf760e01b81149081156105df575b506040519015158152f35b6301ffc9a760e01b149050386105d4565b60009103126103d157565b60005b83811061060e5750506000910152565b81810151838201526020016105fe565b90602091610637815180928185528580860191016105fb565b601f01601f1916010190565b90602061065492818152019061061e565b90565b346103d1576000806003193601126107345760405181600b54610679816110a6565b8084529060019081811690811561070c57506001146106b3575b6106af846106a381880382610ce7565b60405191829182610643565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106f957505050816106af936106a39282010193610693565b80548585018701529285019281016106dd565b6106af96506106a39450602092508593915060ff191682840152151560051b82010193610693565b80fd5b346103d1576000602036600319011261073457600435610756816103c5565b61075e61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107cd576107c1575080f35b6107ca90610c63565b80f35b61304a565b5080fd5b6001600160a01b038116036103d157565b35906103e1826107d6565b346103d15760403660031901126103d15761081c600435610812816107d6565b6024359033612b48565b602060405160018152f35b346103d15760403660031901126103d15761ffff600435610847816103c5565b61084f61292f565b166000526003602052602435604060002055600080f35b346103d1576000602036600319011261073457600435610885816103c5565b61088d61292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107d257602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107cd576107c1575080f35b346103d15760003660031901126103d1576020600a54604051908152f35b346103d15760603660031901126103d15761081c60043561092e816107d6565b60243561093a816107d6565b60443591610949833383612c73565b612a79565b346103d15760003660031901126103d157602060405160128152f35b801515036103d157565b35906103e18261096a565b346103d15760a03660031901126103d15760043561099c816103c5565b606435906109a98261096a565b608435906001600160401b0382116103d1576109ce61051360409336906004016103e3565b90610a056109e86109e0604435614a37565b602435614b08565b928451958694859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107cd576000908192610a56575b50604080519182526020820192909252f35b9050610a79915060403d8111610a80575b610a718183610ce7565b8101906142f3565b9038610a44565b503d610a67565b346103d15760403660031901126103d157600435610aa4816107d6565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ade5761081c9133612b48565b612987565b9060406003198301126103d157600435610afc816103c5565b91602435906001600160401b0382116103d157610482916004016103e3565b346103d157602061ffff610b68610b3136610ae3565b9390911660005260018452610b53610b5a6040600020604051928380926110e0565b0382610ce7565b848151910120923691610d50565b82815191012014604051908152f35b346103d15760203660031901126103d15761ffff600435610b97816103c5565b1660005260036020526020604060002054604051908152f35b346103d157610bbe36610ae3565b9190610bc861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103d157604051928380926342d65a8d60e01b825281610c1f6000988997889460048501613ea5565b03925af180156107cd576107c1575080f35b346103d15760003660031901126103d157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c7657604052565b610c4d565b60c081019081106001600160401b03821117610c7657604052565b606081019081106001600160401b03821117610c7657604052565b608081019081106001600160401b03821117610c7657604052565b604081019081106001600160401b03821117610c7657604052565b90601f801991011681019081106001600160401b03821117610c7657604052565b604051906101a082018281106001600160401b03821117610c7657604052565b604051906103e182610c96565b6001600160401b038111610c7657601f01601f191660200190565b929192610d5c82610d35565b91610d6a6040519384610ce7565b8294818452818301116103d1578281602093846000960137010152565b9080601f830112156103d15781602061065493359101610d50565b9060606003198301126103d157600435610dbb816103c5565b91602435906001600160401b0382116103d157610dda91600401610d87565b9060443561065481610410565b602090610e019282604051948386809551938492016105fb565b82019081520301902090565b346103d1576020610e6b61ffff610e4a83610e2736610da2565b9490911660005260058252604060002082604051948386809551938492016105fb565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103d15760003660031901126103d157602060ff601154166040519015158152f35b346103d157610ea536610421565b9192949390303303610ec95761051a610ec392610019973691610d50565b9261434d565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b908160609103126103d15790565b60a03660031901126103d157600435610f43816107d6565b602435610f4f816103c5565b604435916084356001600160401b0381116103d157602061ffff610f866000805160206150dd833981519152933690600401610f1d565b93610ff98535610f95816107d6565b610fb36105138689013598610fa98a6107d6565b60408101906140fe565b610fbd818a614934565b610fd2610fcb606435614ad1565b5085614cc8565b97610fde891515614503565b610ff0610fea8a614a37565b8c614b08565b9234938b6145a3565b6040519485526001600160a01b0316941692a4005b346103d15760203660031901126103d15760043561102b816107d6565b60018060a01b031660005260086020526020604060002054604051908152f35b346103d1576000806003193601126107345761106561292f565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c921680156110d6575b60208310146110c057565b634e487b7160e01b600052602260045260246000fd5b91607f16916110b5565b90600092918054916110f1836110a6565b9182825260019384811690816000146111535750600114611113575b50505050565b90919394506000526020928360002092846000945b83861061113f57505050500101903880808061110d565b805485870183015294019385908201611128565b9294505050602093945060ff191683830152151560051b0101903880808061110d565b906103e161118a92604051938480926110e0565b0383610ce7565b346103d15760203660031901126103d15761ffff6004356111b1816103c5565b1660005260016020526106af610b536111d46040600020604051928380926110e0565b60405191829160208352602083019061061e565b60e03660031901126103d157600435611200816107d6565b60243561120c816103c5565b604435916001600160401b03906084358281116103d1576112319036906004016103e3565b91909260a4359161124183610410565b60c4358281116103d157611259903690600401610f1d565b92611290843595611269876107d6565b61128861127e602088013597610fa9896107d6565b9990923691610d50565b973691610d50565b9460ff600654166000146113855760228651106113405785602095610ff0610ff99461130e8c6112fb61ffff9a8b60226000805160206150dd8339815191529f0151931660005260028d5284166112f560406000206001600052602052604060002090565b546129b9565b90611307821515614989565b10156149d5565b61132361131c606435614ad1565b5088614cc8565b9a61132f8c1515614503565b8d6113398d614a37565b9033614b82565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9480949350516113b2576000805160206150dd8339815191529460209461ffff94610ff0610ff99461130e565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610c765760051b60200190565b60ff8116036103d157565b35906103e18261141d565b81601f820112156103d15780359061144a82611406565b9260409061145a82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b85841061148b575050505050505090565b86848303126103d15784879161149f610d08565b6114a887610974565b81526114b5838801610974565b838201526114c4868801610974565b8682015260606114d58189016103d6565b9082015260806114e68189016107e7565b9082015260a06114f7818901610974565b9082015260c06115088189016107e7565b9082015260e06115198189016107e7565b9082015261010080880135908201526101208088013590820152610140611541818901611428565b908201526101608088013590820152610180808801359082015281520193019261147a565b346103d1576101c03660031901126103d157600435611584816107d6565b60443590611591826107d6565b60843561159d816107d6565b60c03660a31901126103d157604051926115b684610c7b565b60a4356115c28161096a565b845260c4356115d0816107d6565b602085015260e4356115e1816103c5565b6040850152610104356060850152610124356115fc816107d6565b60808501526101443560a085015261018435936001600160401b0385116103d15761162e610019953690600401611433565b926101a43594610164359360643591602435906134b3565b346103d15760a03660031901126103d1576116626004356107d6565b61166d6024356103c5565b6001600160401b036044358181116103d15761168d903690600401610d87565b611698606435610410565b6084358281116103d1576116b0903690600401610d87565b906116bc303314612d0b565b600760005260126020527f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc546001600160a01b039290611703908416600435851614612d50565b6117166020825183010160208301612f68565b9594509095929197611731602088015160018060a01b031690565b888116611940575b509061176b60009384937f00000000000000000000000000000000000000000000000000000000000000009116614abe565b60408a015261177930611fb5565b54966117cd6117c96117c26064356117aa6117a460243561ffff166000526007602052604060002090565b8a610de7565b906001600160401b0316600052602052604060002090565b5460ff1690565b1590565b6118f4575b6118578a6118496117e230611fb5565b548251909a906001600160a01b0316606084015160808501519197909490916001600160a01b03169660a0820151916040611826602083015160018060a01b031690565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01613181565b03601f198101835282610ce7565b51906004355af492611867613218565b93156118a6575b865160408089015190519081529087166001600160a01b03169061ffff60243516906000805160206150fd83398151915290602090a3005b6118ce946118b391613266565b6040870151809110156118d8575b5060643590602435613fa8565b388080808061186e565b86516118ee91906001600160a01b031630613273565b386118c1565b61190260408b015130614dde565b61193b61192e6064356117aa61192860243561ffff166000526007602052604060002090565b89610de7565b805460ff19166001179055565b6117d2565b600d54919361199d93929091602091611969906001600160a01b03165b6001600160a01b031690565b604051633a304d8b60e21b8152600060048201526001600160a01b0390921660248301529094859190829081906044820190565b03915afa9081156107cd576000946119c161176b93879687916119cb575b50613056565b9293509350611739565b6119ed915060203d6020116119f3575b6119e58183610ce7565b810190613035565b386119bb565b503d6119db565b346103d15760003660031901126103d157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103d15760403660031901126103d1576020610e6b600435611a5a816103c5565b61ffff60243591611a6a836103c5565b166000526002835260406000209061ffff16600052602052604060002090565b346103d15760003660031901126103d1576000546040516001600160a01b039091168152602090f35b346103d15760003660031901126103d1576004546040516001600160a01b039091168152602090f35b346103d1576000806003193601126107345760405181600c54611afe816110a6565b8084529060019081811690811561070c5750600114611b27576106af846106a381880382610ce7565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611b6d57505050816106af936106a39282010193610693565b8054858501870152928501928101611b51565b346103d157602060ff611bbf61ffff610e4a84611b9c36610da2565b9490911660005260078252604060002082604051948386809551938492016105fb565b54166040519015158152f35b346103d15760203660031901126103d15761ffff600435611beb816103c5565b166000526001602052610b53611c0b6040600020604051928380926110e0565b805115611c29576106a381611c236106af9351613248565b90614ee2565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103d15760403660031901126103d157600435611c8b816107d6565b60243590336000526009602052611cb88160406000209060018060a01b0316600052602052604060002090565b5491808310611cd957611ccd92039033612b48565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103d15760e03660031901126103d157600435611d49816103c5565b6001600160401b03906064358281116103d157611d6a9036906004016103e3565b608492919235611d7981610410565b60a43591611d868361096a565b60c4359586116103d157611da1611db19636906004016103e3565b9590946044359060243590614130565b60408051928352602083019190915290f35b346103d157611dd136610ae3565b90611dda61292f565b60405192602092808385870137611e066034868381013060601b88820152036014810188520186610ce7565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c7657611e4083611e3a86546110a6565b86613ec0565b80601f8411600114611eb0575091808092611e9f9695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b94611ea5575b50501b916000199060031b1c19161790555b60405193849384613ea5565b0390a180f35b015192503880611e81565b91939498601f198416611ec887600052602060002090565b938a905b828210611f2f575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611e9f98969410611f16575b505050811b019055611e93565b015160001960f88460031b161c19169055388080611f09565b808886978294978701518155019601940190611ecc565b346103d15760403660031901126103d15761081c600435611f66816107d6565b6024359033612a79565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b346103d15760403660031901126103d157602060ff611bbf602435611ff3816107d6565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103d15760203660031901126103d1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435612059816107d6565b61206161292f565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b346103d15760003660031901126103d15760206040516127108152f35b346103d15760803660031901126103d1576004356120c3816103c5565b6024356120cf816103c5565b6064356001600160401b0381116103d1576120ee9036906004016103e3565b90926120f861292f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103d1576000809461216f604051978896879586946332fb62e760e21b865261ffff80921660048701521660248501526044356044850152608060648501526084840191613e84565b03925af180156107cd5761217f57005b8061218c61001992610c63565b806105f0565b346103d15760003660031901126103d157600e546040516001600160a01b039091168152602090f35b6121c436610421565b9161ffff8694929616600052600560205261220b81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b549182156122b5576122a4848361229d7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000612289846117aa8e8a8f6122b09f908f61226f906122626122839436908d610d50565b6020815191012014614071565b61ffff166000526005602052604060002090565b91614058565b5561229536878d610d50565b933691610d50565b918861434d565b604051958695866140c7565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103d15760003660031901126103d157600d546040516001600160a01b039091168152602090f35b346103d15760403660031901126103d1576020610e6b600435612351816107d6565b6024359061235e826107d6565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103d15760603660031901126103d1576004356123eb816103c5565b6024356123f7816103c5565b6044359161240361292f565b821561247e576122b07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806124588560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103d15760003660031901126103d157602060405160018152f35b346103d15760203660031901126103d1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a460206004356125178161096a565b61251f61292f565b151560ff196006541660ff821617600655604051908152a1005b346103d1576101003660031901126103d157600435612557816103c5565b6001600160401b03906024358281116103d1576125789036906004016103e3565b91906044359061258782610410565b608435612593816107d6565b60c4359586116103d1576125ae6100199636906004016103e3565b94909360e4359660a4359460643593614226565b346103d1576125d036610ae3565b91906125da61292f565b60009161ffff81168352600160209080825260408520916001600160401b038711610c76576126138761260d85546110a6565b85613ec0565b8590601f881160011461267a5750918680879893611e9f957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab999361266f575b501b906000198460031b1c191617905560405193849384613ea5565b880135925038612653565b90601f19881661268f85600052602060002090565b9288905b8282106126f5575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611e9f9694106126db575b505082811b019055611e93565b870135600019600386901b60f8161c1916905538806126ce565b808685968294968c01358155019501930190612693565b346103d15760403660031901126103d157602060ff611bbf602435612730816107d6565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103d15760003660031901126103d157602060ff600654166040519015158152f35b346103d15760203660031901126103d157600435612796816107d6565b61279e61292f565b6001600160a01b0390811680156127ec57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103d15760803660031901126103d15760043561285d816103c5565b6024359061286a826103c5565b6128756044356107d6565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107cd576106af916000916128f3575b5060405191829182610643565b61290e913d8091833e6129068183610ce7565b810190613e4e565b386128e6565b346103d15760003660031901126103d1576020604051308152f35b6000546001600160a01b0316330361294357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ade57565b6051019081605111610ade57565b91908201809211610ade57565b156129cd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612a2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612af557612ada8260008051602061511d83398151915294612af0941696612ab38815156129c6565b612ad484612ac083611fb5565b54612acd82821015612a1e565b0391611fb5565b55611fb5565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b038082169291908315612c22578216938415612bd25780612bc17f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594612baa612af09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b038082166000908152600960209081526040808320938616835292905220909190549260018401612cab5750505050565b808410612cc657612cbd930391612b48565b3880808061110d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b15612d1257565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b15612d5757565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b51906103e1826103c5565b51906103e1826107d6565b51906103e18261096a565b91908260c09103126103d157604051612dce81610c7b565b60a08082948051612dde8161096a565b84526020810151612dee816107d6565b60208501526040810151612e01816103c5565b6040850152606081015160608501526080810151612e1e816107d6565b60808501520151910152565b51906103e18261141d565b81601f820112156103d157805190612e4c82611406565b92604090612e5c82519586610ce7565b83855260209182860191836101a0809702860101948186116103d1578401925b858410612e8d575050505050505090565b86848303126103d157848791612ea1610d08565b612eaa87612dab565b8152612eb7838801612dab565b83820152612ec6868801612dab565b868201526060612ed7818901612d95565b908201526080612ee8818901612da0565b9082015260a0612ef9818901612dab565b9082015260c0612f0a818901612da0565b9082015260e0612f1b818901612da0565b9082015261010080880151908201526101208088015190820152610140612f43818901612e2a565b9082015261016080880151908201526101808088015190820152815201930192612e7c565b918282039161020083126103d1578351612f81816103c5565b9360c06020820151612f9281610410565b94603f1901126103d157604051612fa881610c7b565b6040820151612fb6816107d6565b81526060820151612fc6816107d6565b60208201526080820151604082015260a0820151606082015260c0820151612fed816107d6565b608082015260e082015160a08201529261300b836101008401612db6565b926101c08301516001600160401b0381116103d1576101e09161302f918501612e35565b92015190565b908160209103126103d157516106548161096a565b6040513d6000823e3d90fd5b1561305d57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b90815180825260208080930193019160005b8281106130b9575050505090565b90919293826101a060019287516130d282825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526080818101516001600160a01b03169083015260a08181015115159083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101519083015261012080820151908301526101408082015160ff169083015261016081810151908301526101809081015190820152019501939291016130ab565b999897949161321396926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190613099565b930152565b3d15613243573d9061322982610d35565b916132376040519384610ce7565b82523d6000602084013e565b606090565b601319810191908211610ade57565b605019810191908211610ade57565b91908203918211610ade57565b91906132fd91600080604051936020968786019463a9059cbb60e01b865260018060a01b0380931660248801526044870152604486526132b286610cb1565b1692604051946132c186610ccc565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16132f7613218565b91613379565b8051908161330a57505050565b828061331a938301019101613035565b156133225750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b919290156133db575081511561338d575090565b3b156133965790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156133ee5750805190602001fd5b60405162461bcd60e51b815290819061340a9060048301610643565b0390fd5b1561341557565b60405162461bcd60e51b815260206004820152600f60248201526e1554d113ce881b9bdd081d985b1a59608a1b6044820152606490fd5b908160209103126103d1575190565b939061065495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061061e565b9194939697929590976134c730331461340e565b8051613720575b50604080516370a0823160e01b80825230600483015260209a92996001600160a01b0398808a169492939192918d81602481895afa9384156107cd578b918f600096613701575b50501691823b156103d1578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af180156107cd576136ee575b5089519182523060048301528a82602481865afa80156107cd5785926000916136c1575b5080821161368d575b50505050506135a28351151590565b1561366757828701516135bf9061195d906001600160a01b031681565b936135ce8785015161ffff1690565b91169261361b6135f460a06135ec608085015160018060a01b031690565b930151613dd3565b916135fd610d28565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156103d157613648600096519788968795869463695ef6bf60e01b8652306004870161345b565b03925af180156107cd5761365a575b50565b8061218c6103e192610c63565b91909501516103e195509293509161368891506001600160a01b031661195d565b613273565b61369691613266565b928084106136a5575b80613593565b6136b8936136b291613266565b91613273565b3880828161369f565b6136e191508c8d3d106136e7575b6136d98183610ce7565b81019061344c565b3861358a565b503d6136cf565b8061218c6136fb92610c63565b38613566565b613718929650803d106136e7576136d98183610ce7565b93388f613515565b61372990613853565b386134ce565b80518210156137435760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561376057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff6137c060209295949560408552604085019061061e565b9416910152565b60009060033d116137d457565b905060046000803e60005160e01c90565b600060443d1061065457604051600319913d83016004833e81516001600160401b03918282113d6024840111176138425781840194855193841161384a573d85010160208487010111613842575061065492910160200190610ce7565b949350505050565b50949350505050565b9060005b8251811015613ae257604061387881613870848761372f565b510151151590565b1561389a57508061389461388e6001938661372f565b51613b94565b01613857565b60606138c461030961ffff6138bd846138b3888b61372f565b51015161ffff1690565b1614613759565b6138d360a0613870858861372f565b6138f160c06138e2868961372f565b5101516001600160a01b031690565b916139c261390460e06138e2888b61372f565b936139b4610100613915898c61372f565b5101518a6101206139268b8361372f565b5101516139426101406139398d8561372f565b51015160ff1690565b906101806139608d610160613957828861372f565b5101519561372f565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610ce7565b6139e56139da61195d61195d60806138e28a8d61372f565b916138b3878a61372f565b90803b156103d157613a136000929183928751948580948193631221baf960e31b835260049a8b84016137a5565b03925af19081613acf575b50613a3d576001613a2d6137c7565b6308c379a014613a87575b613a48575b505050600190613894565b613a616117c9613a56613218565b92613870878a61372f565b15613a3d57613a7261340a91613b1c565b925162461bcd60e51b81529283928301610643565b613a8f6137e5565b80613a9b575b50613a38565b60009150613ab06117c984613870898c61372f565b15613a9557845162461bcd60e51b815290819061340a90828701610643565b8061218c613adc92610c63565b38613a1e565b509050565b90929192613af481610d35565b91613b026040519384610ce7565b8294828452828201116103d15760206103e19301906105fb565b6044815110613b6d576004810151810190602081602484019303126103d1576024810151906001600160401b0382116103d1570190806043830112156103d157602482015161065492604401613ae7565b50604051613b7a81610ccc565b600a8152695553444f3a206461746160b01b602082015290565b805115613d0a576080810151613bb49061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b03169161012084015190613be761014086015160ff1690565b936101608601519361018087015190833b156103d15760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613cf7575b50613657576001613c676137c7565b6308c379a014613cba575b613c795750565b613c916117c96020613c89613218565b930151151590565b1561365757613ca261340a91613b1c565b60405162461bcd60e51b815291829160048301610643565b613cc26137e5565b80613cce575b50613c72565b602083015160009250613cc85760405162461bcd60e51b815290819061340a9060048301610643565b8061218c613d0492610c63565b38613c58565b6080810151613d239061195d906001600160a01b031681565b60c08201516001600160a01b031660e08301516001600160a01b0316916101008401519061012085015193613d5d61014087015160ff1690565b936101608701519061018088015195843b156103d15760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613c4d565b60405190600160f01b602083015260228201526022815261065481610c96565b15613dfa57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b6020818303126103d1578051906001600160401b0382116103d157019080601f830112156103d157815161065492602001613ae7565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff61065495931681528160208201520191613e84565b90601f8111613ece57505050565b600091825260208220906020601f850160051c83019410613f0a575b601f0160051c01915b828110613eff57505050565b818155600101613ef3565b9092508290613eea565b929091613f865a604051633356ae4560e11b602082015261ffff871660248201526080604482015290613f8082613f72613f5160a483018a61061e565b6001600160401b03881660648401528281036023190160848401528861061e565b03601f198101845283610ce7565b30615091565b939015613f95575b5050505050565b613f9e94613fa8565b3880808080613f8e565b91936140457fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614053939561ffff8151602083012096169586600052600560205261400c83610e4a60208b604060002082604051948386809551938492016105fb565b556001600160401b03614031604051988998895260a060208a015260a089019061061e565b92166040870152858203606087015261061e565b90838203608085015261061e565b0390a1565b6020919283604051948593843782019081520301902090565b1561407857565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916140f39060609461ffff6001600160401b039499989799168552608060208601526080850191613e84565b951660408201520152565b903590601e19813603018212156103d157018035906001600160401b0382116103d1576020019181360383136103d157565b94919598979061133961415960409961415161415f9761417c993691610d50565b943691610d50565b97614a37565b928451968794859463040a7bb160e41b8652309060048701614309565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107cd5760009081936141bf57509190565b905061048291925060403d8111610a8057610a718183610ce7565b939694916142089061065499979461ffff6001600160401b039416875260c0602088015260c0870191613e84565b961660408401526060830152608082015260a0818503910152613e84565b919697929895949390943033036142ae57614242908530614e2e565b60405181815290946001600160a01b03169390849061ffff8516906000805160206150fd83398151915290602090a3833b156103d157600098899561429e936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a016141da565b0393f180156107cd5761365a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103d1576020825192015190565b9192610654959361ffff6143389316845260018060a01b0316602084015260a0604084015260a083019061061e565b9215156060820152608081840391015261061e565b92919060ff61435b84615036565b16806144ae5750505060ff61436f82615036565b1615806144a3575b61438090614b3b565b61439261438c82614fe6565b91615081565b90916001600160a01b039182841615614499575b6143da906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116614abe565b918316928315614454576000805160206150fd8339815191529161441461ffff9261440f61440a87600a546129b9565b600a55565b611fb5565b84815401905584600060008051602061511d8339815191526040518061443f89829190602083019252565b0390a360405193845216918060208101612af0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead93506143a6565b508051602914614377565b6001036144be576103e193614790565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b1561450a57565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b9261457061065497959361ffff61457e9416865260c0602087015260c086019061061e565b90848203604086015261061e565b6001600160a01b0391821660608401529316608082015280830360a09091015261061e565b946145cc9193929561ffff811660005260016020526145d36040600020604051948580926110e0565b0384610ce7565b82511561463a576145e5855182614698565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103d15760009661364891604051998a988997889662c5803160e81b88526004880161454b565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b61ffff1660005260036020526040600020549081156146fd575b116146b957565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b61271091506146b2565b98979692936001600160401b0361473960e0989461ffff6132139995168d5260208d61010091829101528d019061061e565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261061e565b6001600160401b036147856040939695949660608452606084019061061e565b951660208201520152565b909161479b84614bef565b90916147c56117c2876117aa6147bf8b61ffff166000526007602052604060002090565b8c610de7565b916147fb6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116614abe565b9288888b83156148f7575b505050853b156148ac579461484d9694613f80948a94613f72948d996000146148a55750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01614707565b901561489a57509061489561ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684614765565b0390a2565b926103e19492613fa8565b169261482e565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d975091955085945050602084019250614053915050565b906117aa61192e926149268961491161492c979b30614dde565b9961ffff166000526007602052604060002090565b90610de7565b88888b614806565b60065460ff16156149815760228251106113405761ffff60226103e193015191166000526002602052614974604060002060008052602052604060002090565b5490611307821515614989565b50516113b257565b1561499057565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b156149dc57565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115614ab957046001600160401b0390818111614a74571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b614a21565b81810292918115918404141715610ade57565b7f00000000000000000000000000000000000000000000000000000000000000008015614ab957810690818103908111610ade5791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b1660418201526029815261065481610c96565b15614b4257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261065494604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152614bdf81518092602086860191016105fb565b8101036051810184520182610ce7565b90614c07600160ff614c0085615036565b1614614b3b565b614c1082614fe6565b90614c1a83615081565b906049845110614c8b576049840151936051815110614c4f57614c4c605182015191614c468151613257565b90614f62565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103614d77575b8015614d285781614cfd84614cf0600095611fb5565b54612acd82821015614d87565b55614d0b83600a5403600a55565b60405183815260008051602061511d83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b614d82833384612c73565b614cda565b15614d8e57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561445457600a5490828201809211610ade57600092614e1f60209260008051602061511d83398151915294600a55611fb5565b818154019055604051908152a3565b6106549183916001600160a01b038116308114159081614e5a575b5015612a7957610949833383612c73565b905033141538614e49565b15614e6c57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15614ea957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b614ef682614eef8161299d565b1015614e65565b614f038282511015614ea2565b81614f1b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410614f4f5750508252601f01601f191660405290565b9092835181526020809101930190614f37565b614f6f82614eef8161299d565b614f848151614f7d846129ab565b1115614ea2565b81614f9c575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410614fd35750508252601f01601f191660405290565b9092835181526020809101930190614fbb565b6021815110614ff957602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615046576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110614c4f576029015190565b90929160008091604051956150a587610c7b565b6096875282602088019560a036883760208451940192f1903d90609682116150d3575b6000908286523e9190565b609691506150c856fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c597d0a890767bed96150dae6c67c42327c0e0bbeeea009020c143eaac822ce164736f6c63430008120033"; + +type USDOOptionsDestinationModuleConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: USDOOptionsDestinationModuleConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class USDOOptionsDestinationModule__factory extends ContractFactory { + constructor(...args: USDOOptionsDestinationModuleConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "USDOOptionsDestinationModule"; + } + + override deploy( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _lzEndpoint: PromiseOrValue, + _yieldBox: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _lzEndpoint, + _yieldBox, + _cluster, + overrides || {} + ); + } + override attach(address: string): USDOOptionsDestinationModule { + return super.attach(address) as USDOOptionsDestinationModule; + } + override connect(signer: Signer): USDOOptionsDestinationModule__factory { + return super.connect(signer) as USDOOptionsDestinationModule__factory; + } + static readonly contractName: "USDOOptionsDestinationModule"; + + public readonly contractName: "USDOOptionsDestinationModule"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): USDOOptionsDestinationModuleInterface { + return new utils.Interface(_abi) as USDOOptionsDestinationModuleInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): USDOOptionsDestinationModule { + return new Contract( + address, + _abi, + signerOrProvider + ) as USDOOptionsDestinationModule; + } +} diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsModule__factory.ts b/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsModule__factory.ts index b1d38be8..c165beb6 100644 --- a/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsModule__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/modules/USDOOptionsModule__factory.ts @@ -87,63 +87,6 @@ const _abi = [ name: "CallOFTReceivedSuccess", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "old", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_new", - type: "address", - }, - ], - name: "ConservatorUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "FlashMintFeeUpdated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "_old", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "_new", - type: "uint256", - }, - ], - name: "MaxFlashMintUpdated", - type: "event", - }, { anonymous: false, inputs: [ @@ -889,192 +832,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address", - }, - { - internalType: "uint16", - name: "_srcChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "_srcAddress", - type: "bytes", - }, - { - internalType: "uint64", - name: "_nonce", - type: "uint64", - }, - { - internalType: "bytes", - name: "_payload", - type: "bytes", - }, - ], - name: "exercise", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "uint256", - name: "oTAPTokenID", - type: "uint256", - }, - { - internalType: "address", - name: "paymentToken", - type: "address", - }, - { - internalType: "uint256", - name: "tapAmount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - components: [ - { - internalType: "bool", - name: "withdrawOnAnotherChain", - type: "bool", - }, - { - internalType: "address", - name: "tapOftAddress", - type: "address", - }, - { - internalType: "uint16", - name: "lzDstChainId", - type: "uint16", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zroPaymentAddress", - type: "address", - }, - { - internalType: "uint256", - name: "extraGas", - type: "uint256", - }, - ], - internalType: - "struct ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapData", - name: "tapSendData", - type: "tuple", - }, - { - internalType: "uint256", - name: "paymentTokenAmount", - type: "uint256", - }, - { - components: [ - { - internalType: "bool", - name: "permitAll", - type: "bool", - }, - { - internalType: "bool", - name: "allowFailure", - type: "bool", - }, - { - internalType: "bool", - name: "approveOnYieldBox", - type: "bool", - }, - { - internalType: "uint16", - name: "actionType", - type: "uint16", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bool", - name: "permitBorrow", - type: "bool", - }, - { - 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", - }, - ], - internalType: "struct ICommonData.IApproval[]", - name: "approvals", - type: "tuple[]", - }, - { - internalType: "uint256", - name: "airdropAmount", - type: "uint256", - }, - ], - name: "exerciseInternal", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -1189,7 +946,7 @@ const _abi = [ }, { internalType: "bool", - name: "approveOnYieldBox", + name: "yieldBoxTypeApproval", type: "bool", }, { @@ -1287,19 +1044,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "flashMintFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1460,19 +1204,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "maxFlashMint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1741,19 +1472,6 @@ const _abi = [ stateMutability: "payable", type: "function", }, - { - inputs: [ - { - internalType: "bytes", - name: "_payload", - type: "bytes", - }, - ], - name: "sendFromDestination", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -2048,123 +1766,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [ - { - internalType: "uint16", - name: "lzDstChainId", - type: "uint16", - }, - { - internalType: "bytes", - name: "airdropAdapterParams", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - components: [ - { - internalType: "address payable", - name: "refundAddress", - type: "address", - }, - { - internalType: "address", - name: "zroPaymentAddress", - type: "address", - }, - { - internalType: "bytes", - name: "adapterParams", - type: "bytes", - }, - ], - internalType: "struct ISendFrom.LzCallParams", - name: "sendFromData", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "permitAll", - type: "bool", - }, - { - internalType: "bool", - name: "allowFailure", - type: "bool", - }, - { - internalType: "bool", - name: "approveOnYieldBox", - type: "bool", - }, - { - internalType: "uint16", - name: "actionType", - type: "uint16", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bool", - name: "permitBorrow", - type: "bool", - }, - { - 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", - }, - ], - internalType: "struct ICommonData.IApproval[]", - name: "approvals", - type: "tuple[]", - }, - ], - name: "triggerSendFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, { inputs: [ { @@ -2217,7 +1818,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61010060409080825234620004fc576060816200635c803803809162000026828562000501565b833981010312620004fc5780516001600160a01b039182821691829003620004fc57602080820151918483168303620004fc5785015193808516809503620004fc57620000726200053b565b906200007d6200053b565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b03918282116200040357600b54916001968784811c94168015620004f1575b89851014620004dd578190601f9485811162000489575b5089908583116001146200042357889262000417575b5050600019600383901b1c191690871b17600b555b80519283116200040357600c548681811c91168015620003f8575b88821014620003e45790818389959493116200038c575b50839183116001146200032157600494929186918362000315575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa9081156200030b57908291899391620002c0575b5061ffff1693848252600f815282822033835281528282209460ff1995858782541617905582526010815282822090338352522091825416179055600a60125569152d02c7e14af680000060135560e052600d541617600d5551615def90816200056d82396080518181816104ed015281816107b0015281816108eb01528181610a6501528181610c2e01528181611b57015281816121fd015281816124670152818161264301528181612d8501528181614a5d0152615027015260a0518161196f015260c0518181816117660152818161213101528181615254015281816154b00152818161565a01526156f2015260e051816128bf0152f35b80929350858092503d831162000303575b620002dd818362000501565b81010312620002ff575161ffff81168103620002ff5787919061ffff620001c5565b5080fd5b503d620002d1565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b81811062000373575096836004981062000359575b505050811b01600c5562000192565b015160001960f88460031b161c191690553880806200034a565b8289015184558b978b9690940193928301920162000335565b9091929350600c86528786208380860160051c8201928a8710620003da575b9189918b97969594930160051c01915b828110620003cb57505062000162565b8881558a9650899101620003bb565b92508192620003ab565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d82821062000472575050841162000458575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000449565b8385015186558d9790950194938401930162000436565b909150600b88528988208580850160051c8201928c8610620004d3575b918b91869594930160051c01915b828110620004c457505062000105565b8a81558594508b9101620004b4565b92508192620004a6565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b038211908210176200052557604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620005255760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d35671461041057806301ffc9a71461040b57806306fdde031461040657806307e0db1714610401578063095ea7b3146103fc5780630df37483146103f757806310ddb137146103f257806318160ddd1461038457806323b872dd146103ed578063313ce567146103e8578063365260b4146103e357806339509351146103de5780633d8b38f6146103d95780633f1f4fa4146103d457806342d65a8d146103cf57806344770515146103ca5780634c42899a146103ca5780635b8c41e6146103c55780635c975abb146103c057806366ad5c8a146103bb578063695ef6bf146103b657806370a08231146103b1578063715018a6146103ac5780637533d788146103a757806376203b48146103a25780637e6b6e5a1461039d57806381618d0514610398578063857749b0146103935780638cfd8f5c1461038e5780638da5cb5b146103895780639358928b14610384578063940a1dc01461037f578063950c8a741461037a578063952168c51461037557806395d89b41146103705780639bdb98121461036b5780639d3f4d1a146103665780639f38369a14610361578063a457c2d71461035c578063a4c51df514610357578063a6c3d16514610352578063a9059cbb1461034d578063af2ee97514610348578063b353aaa714610343578063ba03a8d71461033e578063baf3292d14610339578063c056a8de14610334578063c44618341461032f578063cbed8b9c1461032a578063ce8849ed14610325578063d1deba1f14610320578063dbd01de11461031b578063dd62ed3e14610316578063de40657714610311578063df2a5b3b1461030c578063e6a20ae614610307578063eab45d9c14610302578063eaffd49a146102fd578063eb8d72b7146102f8578063ec6d062b146102f3578063ed629c5c146102ee578063f2fde38b146102e9578063f5ecbdbc146102e45763fc0c546a0361000e57612def565b612d1b565b612c66565b612c43565b612c0b565b612ae2565b612a59565b6129f7565b6129db565b6128ee565b6128a9565b61285f565b612836565b6126fe565b6126d5565b6125ef565b6125d2565b612329565b612295565b61225d565b6121e7565b6120cf565b6120a5565b611f43565b611eac565b611e00565b611d5d565b611d3f565b611cf4565b611c50565b611aa6565b611a4c565b611a2e565b61094c565b611a05565b611993565b611955565b611628565b611548565b611251565b6111fa565b6110c6565b611089565b610fa6565b610f01565b610ede565b610e8a565b610c95565b610c14565b610bdb565b610b6b565b610ae3565b6109db565b6109aa565b61096a565b6108c2565b610883565b61084e565b610787565b6106a7565b6105ea565b6104d6565b61ffff81160361042157565b600080fd5b359061043182610415565b565b9181601f84011215610421578235916001600160401b038311610421576020838186019501011161042157565b6001600160401b0381160361042157565b9060806003198301126104215760043561048a81610415565b916001600160401b039060243582811161042157816104ab91600401610433565b939093926044356104bb81610460565b92606435918211610421576104d291600401610433565b9091565b34610421576104e436610471565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105a55761056a61057292610019976105636105496105448a61ffff166000526001602052604060002090565b6111df565b805190818414918261059b575b5081610578575b50614966565b3691610db6565b923691610db6565b92614dba565b9050610585368486610db6565b602081519101209060208151910120143861055d565b1515915038610556565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346104215760203660031901126104215760043563ffffffff60e01b811680910361042157602090631f7ecdf760e01b811490811561062f575b506040519015158152f35b6301ffc9a760e01b14905038610624565b600091031261042157565b60005b83811061065e5750506000910152565b818101518382015260200161064e565b906020916106878151809281855285808601910161064b565b601f01601f1916010190565b9060206106a492818152019061066e565b90565b34610421576000806003193601126107845760405181600b546106c98161110f565b8084529060019081811690811561075c5750600114610703575b6106ff846106f381880382610d4b565b60405191829182610693565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b82841061074957505050816106ff936106f392820101936106e3565b805485850187015292850192810161072d565b6106ff96506106f39450602092508593915060ff191682840152151560051b820101936106e3565b80fd5b346104215760006020366003190112610784576004356107a681610415565b6107ae612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936307e0db1760e01b85521660048401525af1801561081d57610811575080f35b61081a90610cc7565b80f35b613211565b5080fd5b6001600160a01b031690565b6001600160a01b0381160361042157565b359061043182610832565b346104215760403660031901126104215761087860043561086e81610832565b6024359033613048565b602060405160018152f35b346104215760403660031901126104215761ffff6004356108a381610415565b6108ab612e0a565b166000526003602052602435604060002055600080f35b346104215760006020366003190112610784576004356108e181610415565b6108e9612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b1561082257602461ffff918360405195869485936310ddb13760e01b85521660048401525af1801561081d57610811575080f35b34610421576000366003190112610421576020600a54604051908152f35b346104215760603660031901126104215761087860043561098a81610832565b60243561099681610832565b604435916109a5833383613161565b612f79565b3461042157600036600319011261042157602060405160128152f35b8015150361042157565b3590610431826109c6565b346104215760a0366003190112610421576004356109f881610415565b60643590610a05826109c6565b608435906001600160401b03821161042157610a2a6105636040933690600401610433565b90610a61610a44610a3c604435615658565b602435615727565b928451958694859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561081d576000908192610ab2575b50604080519182526020820192909252f35b9050610ad5915060403d8111610adc575b610acd8183610d4b565b81019061519b565b9038610aa0565b503d610ac3565b3461042157604036600319011261042157600435610b0081610832565b336000526009602052610b17816040600020612246565b546024358101809111610b2e576108789133613048565b612e87565b90604060031983011261042157600435610b4c81610415565b91602435906001600160401b038211610421576104d291600401610433565b3461042157602061ffff610bb8610b8136610b33565b9390911660005260018452610ba3610baa604060002060405192838092611149565b0382610d4b565b848151910120923691610db6565b82815191012014604051908152f35b61ffff166000526007602052604060002090565b346104215760203660031901126104215761ffff600435610bfb81610415565b1660005260036020526020604060002054604051908152f35b3461042157610c2236610b33565b9190610c2c612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561042157604051928380926342d65a8d60e01b825281610c836000988997889460048501614d4b565b03925af1801561081d57610811575080f35b3461042157600036600319011261042157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610cda57604052565b610cb1565b60c081019081106001600160401b03821117610cda57604052565b606081019081106001600160401b03821117610cda57604052565b604081019081106001600160401b03821117610cda57604052565b608081019081106001600160401b03821117610cda57604052565b601f909101601f19168101906001600160401b03821190821017610cda57604052565b604051906101a082016001600160401b03811183821017610cda57604052565b6040519061043182610cfa565b6001600160401b038111610cda57601f01601f191660200190565b929192610dc282610d9b565b91610dd06040519384610d4b565b829481845281830111610421578281602093846000960137010152565b9080601f83011215610421578160206106a493359101610db6565b90606060031983011261042157600435610e2181610415565b91602435906001600160401b03821161042157610e4091600401610ded565b906044356106a481610460565b602090610e6792826040519483868095519384920161064b565b82019081520301902090565b9060018060401b0316600052602052604060002090565b34610421576020610ed561ffff610ec783610ea436610e08565b94909116600052600582526040600020826040519483868095519384920161064b565b820190815203019020610e73565b54604051908152f35b3461042157600036600319011261042157602060ff601154166040519015158152f35b3461042157610f0f36610471565b9192949390303303610f335761056a610f2d92610019973691610db6565b926151f5565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126104215760c490565b908160609103126104215790565b60a036600319011261042157600435610fbe81610832565b602435610fca81610415565b604435916084356001600160401b03811161042157602061ffff611001600080516020615cfa833981519152933690600401610f98565b93611074853561101081610832565b61102e61056386890135986110248a610832565b6040810190614fa5565b611038818a6155f3565b61104d6110466064356156f0565b50856158e5565b976110598915156153aa565b61106b6110658a615658565b8c615727565b9234938b614a19565b6040519485526001600160a01b0316941692a4005b34610421576020366003190112610421576004356110a681610832565b60018060a01b031660005260086020526020604060002054604051908152f35b3461042157600080600319360112610784576110e0612e0a565b80546001600160a01b03198116825581906001600160a01b0316600080516020615d5a8339815191528280a380f35b90600182811c9216801561113f575b602083101461112957565b634e487b7160e01b600052602260045260246000fd5b91607f169161111e565b906000929180549161115a8361110f565b9182825260019384811690816000146111bc575060011461117c575b50505050565b90919394506000526020928360002092846000945b8386106111a8575050505001019038808080611176565b805485870183015294019385908201611191565b9294505050602093945060ff191683830152151560051b01019038808080611176565b906104316111f39260405193848092611149565b0383610d4b565b346104215760203660031901126104215761ffff60043561121a81610415565b1660005260016020526106ff610ba361123d604060002060405192838092611149565b60405191829160208352602083019061066e565b60e03660031901126104215760043561126981610832565b60243561127581610415565b604435916001600160401b03906084358281116104215761129a903690600401610433565b91909260a4356112a981610460565b60c435828111610421576112c1903690600401610f98565b90866112f98335966112d288610832565b6112f16112e760208701359661102488610832565b9a90923691610db6565b983691610db6565b9360ff6006541660001461136657936020959361106b84611334600080516020615cfa8339815191529a958561ffff9a611074991691614c68565b6113496113426064356156f0565b50886158e5565b9a6113558c15156153aa565b8d61135f8d615658565b90336157a2565b5050829391925161139457600080516020615cfa8339815191529460209461ffff9461106b61107494611334565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b6001600160401b038111610cda5760051b60200190565b60ff81160361042157565b3590610431826113ff565b81601f820112156104215780359061142c826113e8565b9260409061143c82519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b85841061146d575050505050505090565b868483031261042157848791611481610d6e565b61148a876109d0565b81526114978388016109d0565b838201526114a68688016109d0565b8682015260606114b7818901610426565b9082015260806114c8818901610843565b9082015260a06114d98189016109d0565b9082015260c06114ea818901610843565b9082015260e06114fb818901610843565b908201526101008088013590820152610120808801359082015261014061152381890161140a565b908201526101608088013590820152610180808801359082015281520193019261145c565b34610421576101c03660031901126104215760043561156681610832565b6044359061157382610832565b60843561157f81610832565b60c03660a3190112610421576040519261159884610cdf565b60a4356115a4816109c6565b845260c4356115b281610832565b602085015260e4356115c381610415565b6040850152610104356060850152610124356115de81610832565b60808501526101443560a085015261018435936001600160401b03851161042157611610610019953690600401611415565b926101a43594610164359360643591602435906145af565b346104215760a036600319011261042157611644600435610832565b61164f602435610415565b6001600160401b036044358181116104215761166f903690600401610ded565b61167a606435610460565b6084359180831161042157611696611740933690600401610ded565b6116a13033146140bc565b6001600160a01b036004351660009081526014602052604090206116d0906116cb905b5460ff1690565b614101565b6116e360208251830101602083016141ba565b91979450959260206117016116fc600d9b959b54610826565b610826565b61170d828b0151610826565b604051633a304d8b60e21b8152600060048201526001600160a01b03909116602482015294859190829081906044820190565b03915afa90811561081d5760009461176461178c9387968791611926575b50613457565b7f000000000000000000000000000000000000000000000000000000000000000091166156dd565b604089015261179a3061222c565b54966117c56117c16116c46064356117bc6117b6602435610bc7565b8a610e4d565b610e73565b1590565b6118e9575b6118416117d63061222c565b54976118336117e58c51610826565b9460608d0151928d6117fa6080820151610826565b9660a08201519160406118106020830151610826565b91015192604051998a9860208a019c8d633f35b72d60e11b905260248b01614368565b03601f198101835282610d4b565b51906004355af4926118516139d3565b931561189d575b8560406118658251610826565b9101516040519081526001600160a01b039091169060243561ffff1690600080516020615d3a8339815191529080602081015b0390a3005b6118c5946118aa91614418565b6040860151809110156118cf575b5060643590602435614e4e565b3880808080611858565b6118e3906118dd8751610826565b30614425565b386118b8565b6118f760408a0151306159fb565b6119216119146064356117bc61190e602435610bc7565b89610e4d565b805460ff19166001179055565b6117ca565b611948915060203d60201161194e575b6119408183610d4b565b810190613442565b3861175e565b503d611936565b3461042157600036600319011261042157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610421576040366003190112610421576020610ed56004356119b581610415565b61ffff602435916119c583610415565b166000526002835260406000209061ffff16600052602052604060002090565b6001600160a01b03169052565b6001600160a01b03909116815260200190565b34610421576000366003190112610421576000546040516001600160a01b039091168152602090f35b34610421576000366003190112610421576020601254604051908152f35b34610421576000366003190112610421576004546040516001600160a01b039091168152602090f35b9181601f84011215610421578235916001600160401b038311610421576020808501946101a0850201011161042157565b60a036600319011261042157600435611abe81610415565b6001600160401b0360243581811161042157611ade903690600401610433565b909160643581811161042157611af8903690600401610f98565b9060843590811161042157611b11903690600401611a75565b9390611b26611b21368685610db6565b6148b3565b50915050611b3e611b386044356156f0565b50615658565b6040516303408e4760e41b8152909690926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d57611bf298611bb7611bdf956020958a95611bc595611be99a600091611c23575b506040519c8d96338b890161335e565b03601f198101885287610d4b565b611bd9611bd3368988610db6565b8a614c2a565b01613423565b9134943691610db6565b91339086614a19565b604051903391600080516020615cfa83398151915261ffff3393169180611c1e81906000602083019252565b0390a4005b611c439150893d8111611c49575b611c3b8183610d4b565b8101906131fc565b38611ba7565b503d611c31565b34610421576000806003193601126107845760405181600c54611c728161110f565b8084529060019081811690811561075c5750600114611c9b576106ff846106f381880382610d4b565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b828410611ce157505050816106ff936106f392820101936106e3565b8054858501870152928501928101611cc5565b3461042157602060ff611d3361ffff610ec784611d1036610e08565b94909116600052600782526040600020826040519483868095519384920161064b565b54166040519015158152f35b34610421576000366003190112610421576020601354604051908152f35b346104215760203660031901126104215761ffff600435611d7d81610415565b166000526001602052610ba3611d9d604060002060405192838092611149565b805115611dbb576106f381611db56106ff93516143fa565b90615aff565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b3461042157604036600319011261042157600435611e1d81610832565b60243590336000526009602052611e38816040600020612246565b5491808310611e5957611e4d92039033613048565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104215760e036600319011261042157600435611ec981610415565b6001600160401b039060643582811161042157611eea903690600401610433565b608492919235611ef981610460565b60a43591611f06836109c6565b60c43595861161042157611f21611f31963690600401610433565b9590946044359060243590614fd7565b60408051928352602083019190915290f35b3461042157611f5136610b33565b90611f5a612e0a565b60405192602092808385870137611f866034868381013060601b88820152036014810188520186610d4b565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311610cda57611fc383611fbd865461110f565b86614d66565b80601f84116001146120215750918080926120109695948a9b600080516020615d1a8339815191529b94612016575b50501b916000199060031b1c19161790555b60405193849384614d4b565b0390a180f35b015192503880611ff2565b91939498601f19841661203987600052602060002090565b938a905b82821061208e57505091600080516020615d1a833981519152999a9593918561201098969410612075575b505050811b019055612004565b015160001960f88460031b161c19169055388080612068565b80888697829497870151815501960194019061203d565b34610421576040366003190112610421576108786004356120c581610832565b6024359033612f79565b34610421576020366003190112610421576004356001600160401b0380821161042157612115612106612157933690600401610ded565b60208082518301019101613783565b95509692919360018060a09893981b03169680516121d8575b507f000000000000000000000000000000000000000000000000000000000000000091166156dd565b90303b156104215760405163695ef6bf60e01b815292600092849283918291612186918a8a8160048701613857565b0391305af1801561081d576121bf575b50600080516020615d3a83398151915261ffff6040519216918061189881906000602083019252565b806121cc6121d292610cc7565b80610640565b38612196565b6121e190613a03565b3861212e565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0316600090815260086020526040902090565b9060018060a01b0316600052602052604060002090565b3461042157604036600319011261042157602060ff611d3360243561228181610832565b600435600052600f84526040600020612246565b34610421576020366003190112610421577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356122d581610832565b6122dd612e0a565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c090600319011261042157600490565b60c0906101231901126104215761012490565b6102203660031901126104215761233f36612305565b61234836610f87565b9061235236612316565b6001600160401b03906101e43582811161042157612374903690600401611a75565b92610204359081116104215761238e903690600401610433565b959061239e6116fc600d54610826565b916123f26123ab8261342d565b9360209485916123bc838a01613423565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa801561081d5761240d916000916125bb5750613457565b61241687613423565b6001600160a01b0394903390861603612581575b6124366116fc89613423565b98604089013597612446896156f0565b50946124518b613423565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa801561081d57600080516020615cfa8339815191529b6118338f969a6125479b6125429a6124c761254d9f84908c996124f299612564575b506158e5565b506124e36124d9611b21368e8d610db6565b5095915050615658565b946040519788968a880161354d565b61250f6124fe8861342d565b612509368887610db6565b90614ba1565b61253c61253261252a6116fc6125248b61342d565b97613423565b938901613423565b9334963691610db6565b93614a19565b61342d565b94613423565b604051938452169261ffff16918060208101611c1e565b61257a908c8d3d10611c4957611c3b8183610d4b565b50386124c1565b6125b6612596336125918b613423565b612e62565b6125a760408b01358092101561349a565b336125b18b613423565b613161565b61242a565b6119489150853d871161194e576119408183610d4b565b346104215760003660031901126104215760206040516127108152f35b346104215760803660031901126104215760043561260c81610415565b60243561261881610415565b6064356001600160401b03811161042157612637903690600401610433565b9092612641612e0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561042157600080946126b8604051978896879586946332fb62e760e21b865261ffff8092166004870152166024850152604435604485015260806064850152608484019161321d565b03925af1801561081d576126c857005b806121cc61001992610cc7565b3461042157600036600319011261042157600e546040516001600160a01b039091168152602090f35b61270736610471565b9161ffff8694929616600052600560205261273b81604060002060206040518092878b833787820190815203019020610e73565b549182156127e5576127d484836127cd7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a60006127b9846117bc8e8a8f6127e09f908f61279f906127926127b39436908d610db6565b6020815191012014614f18565b61ffff166000526005602052604060002090565b91614eff565b556127c536878d610db6565b933691610db6565b91886151f5565b60405195869586614f6e565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b3461042157600036600319011261042157600d546040516001600160a01b039091168152602090f35b34610421576040366003190112610421576020610ed560043561288181610832565b6024359061288e82610832565b6001600160a01b031660009081526009845260409020612246565b34610421576000366003190112610421576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104215760603660031901126104215760043561290b81610415565b60243561291781610415565b60443591612923612e0a565b821561299e576127e07f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff83166000526002602052806129788560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b3461042157600036600319011261042157602060405160018152f35b34610421576020366003190112610421577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435612a37816109c6565b612a3f612e0a565b151560ff196006541660ff821617600655604051908152a1005b346104215761010036600319011261042157600435612a7781610415565b6001600160401b039060243582811161042157612a98903690600401610433565b919060443590612aa782610460565b608435612ab381610832565b60c43595861161042157612ace610019963690600401610433565b94909360e4359660a43594606435936150ce565b3461042157612af036610b33565b9190612afa612e0a565b61ffff82166000908152600160208181526040832092949291906001600160401b038711610cda57612b3687612b30855461110f565b85614d66565b8590601f8811600114612b8b575091868087989361201095600080516020615d9a8339815191529993612b80575b501b906000198460031b1c191617905560405193849384614d4b565b880135925038612b64565b90601f198816612ba085600052602060002090565b9288905b828210612bf457505091889391600080516020615d9a8339815191529899612010969410612bda575b505082811b019055612004565b870135600019600386901b60f8161c191690553880612bcd565b808685968294968c01358155019501930190612ba4565b3461042157604036600319011261042157602060ff611d33602435612c2f81610832565b600435600052601084526040600020612246565b3461042157600036600319011261042157602060ff600654166040519015158152f35b3461042157602036600319011261042157600435612c8381610832565b612c8b612e0a565b6001600160a01b039081168015612cc757600080546001600160a01b0319811683178255909216600080516020615d5a8339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461042157608036600319011261042157600435612d3881610415565b60243590612d4582610415565b612d50604435610832565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561081d576106ff91600091612dce575b5060405191829182610693565b612de9913d8091833e612de18183610d4b565b810190614d26565b38612dc1565b34610421576000366003190112610421576020604051308152f35b6000546001600160a01b03163303612e1e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b03166000908152600960205260409020612e839190612246565b5490565b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610b2e57565b6051019081605111610b2e57565b91908201809211610b2e57565b15612ecd57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612f2557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038084169290918315612ff557612fda82600080516020615d7a83398151915294612ff0941696612fb3881515612ec6565b612fd484612fc08361222c565b54612fcd82821015612f1e565b039161222c565b5561222c565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156131105782169384156130c057806130af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946130aa612ff09560018060a01b03166000526009602052604060002090565b612246565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382166000526009602052613181816040600020612246565b5492600184016131915750505050565b8084106131ac576131a3930391613048565b38808080611176565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b519061043182610415565b9081602091031261042157516106a481610415565b6040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9190808252602080920192916000905b82821061325c575050505090565b9091929380613276600192613270886109d0565b15159052565b61328c6132848488016109d0565b151582850152565b6132a4604061329c8189016109d0565b151590830152565b6132be60606132b4818901610426565b61ffff1690830152565b6132d760806132ce818901610843565b908301906119e5565b6132e760a061329c8189016109d0565b6132f760c06132ce818901610843565b61330760e06132ce818901610843565b6101008087013590820152610120808701359082015261333761014061332e81890161140a565b60ff1690830152565b610160868101359082015261018080870135908201526101a090810195019392019061324e565b61030a81526001600160a01b0391821660208201526001600160401b03928316604082015260e06060820152979695919493929080823561339e81610832565b1660e08a015260208201356133b281610832565b166101008901526040810135601e19823603018112156104215701926020843594019484116104215783360385136104215761341161340460c09661341e9660606101208d01526101408c019161321d565b61ffff90941660808a0152565b87830360a089015261323e565b930152565b356106a481610832565b356106a481610415565b5190610431826109c6565b9081602091031261042157516106a4816109c6565b1561345e57565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b156134a157565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b60a0809180356134f1816109c6565b15158452602081013561350381610832565b600180841b03809116602086015261ffff604083013561352281610415565b16604086015260608201356060860152608082013561354081610832565b1660808501520135910152565b9695949061341e9360a06101e096946135d9936103098c5260018060401b031660208c0152803561357d81610832565b600180841b0380911660408d015280602083013561359a81610832565b1660608d0152604082013560808d01526060820135838d015260808201356135c181610832565b1660c08c0152013560e08a01526101008901906134e2565b610200806101c089015287019161323e565b519061043182610832565b9092919261360381610d9b565b916136116040519384610d4b565b82948284528282011161042157602061043193019061064b565b9080601f830112156104215781516106a4926020016135f6565b5190610431826113ff565b81601f8201121561042157805190613667826113e8565b9260409061367782519586610d4b565b83855260209182860191836101a080970286010194818611610421578401925b8584106136a8575050505050505090565b8684830312610421578487916136bc610d6e565b6136c587613437565b81526136d2838801613437565b838201526136e1868801613437565b8682015260606136f28189016131f1565b9082015260806137038189016135eb565b9082015260a0613714818901613437565b9082015260c06137258189016135eb565b9082015260e06137368189016135eb565b908201526101008088015190820152610120808801519082015261014061375e818901613645565b9082015261016080880151908201526101808088015190820152815201930192613697565b91909160e08184031261042157805161379b81610415565b9260208201516137aa81610832565b9260408301516137b981610460565b606084015190936001600160401b0392909183811161042157820160608186031261042157604051906137eb82610cfa565b80516137f681610832565b8252602081015161380681610832565b6020830152604081015190858211610421576138249187910161362b565b604082015293613836608084016131f1565b9360a08401519081116104215760c091613851918501613650565b92015190565b93906106a495916101009461ffff60409560018060a01b03809516895216602088015284870152606086015260a060808601528082511660a086015260208201511660c0850152015191606060e0820152019061066e565b80518210156138c35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b156138e057565b60405162461bcd60e51b815260206004820152601d60248201527f5553444f3a20616374696f6e54797065206973206e6f742076616c69640000006044820152606490fd5b9061ffff61394060209295949560408552604085019061066e565b9416910152565b60009060033d1161395457565b905060046000803e60005160e01c90565b600060443d106106a457604051600319913d83016004833e81516001600160401b03918282113d6024840111176139c2578184019485519384116139ca573d850101602084870101116139c257506106a492910160200190610d4b565b949350505050565b50949350505050565b3d156139fe573d906139e482610d9b565b916139f26040519384610d4b565b82523d6000602084013e565b606090565b9060005b8251811015613c96576040613a2881613a2084876138af565b510151151590565b15613a4a575080613a44613a3e600193866138af565b51613e8b565b01613a07565b6060613a7461030a61ffff613a6d84613a63888b6138af565b51015161ffff1690565b16146138d9565b613a8360a0613a2085886138af565b613aa160c0613a9286896138af565b5101516001600160a01b031690565b91613b72613ab460e0613a92888b6138af565b93613b64610100613ac5898c6138af565b5101518a610120613ad68b836138af565b510151613af2610140613ae98d856138af565b51015160ff1690565b90610180613b108d610160613b0782886138af565b510151956138af565b510151938b519a8b9760209b8c8a0194909897969360e0969260ff9461010088019b1515885260018060a01b038092166020890152166040870152606086015260808501521660a083015260c08201520152565b03601f198101855284610d4b565b613b95613b8a6116fc6116fc6080613a928a8d6138af565b91613a63878a6138af565b90803b1561042157613bc36000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613c83575b50613bed576001613bdd613947565b6308c379a014613c3b575b613bf8575b505050600190613a44565b613c116117c1613c066139d3565b92613a20878a6138af565b15613bed57613c22613c3791613e13565b925162461bcd60e51b81529283928301610693565b0390fd5b613c43613965565b80613c4f575b50613be8565b60009150613c646117c184613a20898c6138af565b15613c4957845162461bcd60e51b8152908190613c3790828701610693565b806121cc613c9092610cc7565b38613bce565b509050565b9060005b8251811015613c96576040613cb881613a2084876138af565b15613cd4575080613cce613a3e600193866138af565b01613c9f565b6060613ced61030961ffff613a6d84613a63888b6138af565b613cfc60a0613a2085886138af565b613d0b60c0613a9286896138af565b91613d1e613ab460e0613a92888b6138af565b613d36613b8a6116fc6116fc6080613a928a8d6138af565b90803b1561042157613d646000929183928751948580948193631221baf960e31b835260049a8b8401613925565b03925af19081613e00575b50613d8e576001613d7e613947565b6308c379a014613db8575b613d99575b505050600190613cce565b613da76117c1613c066139d3565b15613d8e57613c22613c3791613e13565b613dc0613965565b80613dcc575b50613d89565b60009150613de16117c184613a20898c6138af565b15613dc657845162461bcd60e51b8152908190613c3790828701610693565b806121cc613e0d92610cc7565b38613d6f565b6044815110613e6457600481015181019060208160248401930312610421576024810151906001600160401b038211610421570190806043830112156104215760248201516106a4926044016135f6565b50604051613e7181610d15565b600a8152695553444f3a206461746160b01b602082015290565b805115613ffb57613ea56116fc6116fc6080840151610826565b613eb260c0830151610826565b613ebf60e0840151610826565b9161012084015190613ed661014086015160ff1690565b936101608601519361018087015190833b156104215760405163aba0784760e01b81526001600160a01b03918216600482015292166024830152604482019390935260ff9094166064850152608484019290925260a4830152600090829081838160c481015b03925af19081613fe8575b50613f66576001613f56613947565b6308c379a014613faa575b613f69575b50565b613f816117c16020613f796139d3565b930151151590565b15613f6657613f92613c3791613e13565b60405162461bcd60e51b815291829160048301610693565b613fb2613965565b80613fbe575b50613f61565b602083015160009250613fb8575b60405162461bcd60e51b8152908190613c379060048301610693565b806121cc613ff592610cc7565b38613f47565b61400e6116fc6116fc6080840151610826565b61401b60c0830151610826565b61402860e0840151610826565b91610100840151906101208501519361404661014087015160ff1690565b936101608701519061018088015195843b156104215760405163d505accf60e01b81526001600160a01b0392831660048201529190931660248201526044810194909452606484019590955260ff16608483015260a482019390935260c481019190915290600090829081838160e48101613f3c565b156140c357565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce8818d85b1b195c881b9bdd081d985b1a5960521b6044820152606490fd5b1561410857565b60405162461bcd60e51b81526020600482015260166024820152751554d113ce881b5bd91d5b19481b9bdd081d985b1a5960521b6044820152606490fd5b91908260c09103126104215760405161415e81610cdf565b60a0808294805161416e816109c6565b8452602081015161417e81610832565b6020850152604081015161419181610415565b60408501526060810151606085015260808101516141ae81610832565b60808501520151910152565b918282039161020083126104215783516141d381610415565b9360c060208201516141e481610460565b94603f190112610421576040516141fa81610cdf565b604082015161420881610832565b8152606082015161421881610832565b60208201526080820151604082015260a0820151606082015260c082015161423f81610832565b608082015260e082015160a08201529261425d836101008401614146565b6101c08301519093906001600160401b038111610421576101e091613851918501613650565b90815180825260208080930193019160005b8281106142a3575050505090565b90919293826101a060019287516142bc82825115159052565b8084015115158285015260408181015115159083015260608181015161ffff16908301526142f2608080830151908401906119e5565b60a08181015115159083015261431060c080830151908401906119e5565b61432260e080830151908401906119e5565b610100818101519083015261012080820151908301526101408082015160ff16908301526101608181015190830152610180908101519082015201950193929101614295565b999897949161341e96926101a098958c604060a097956001808a1b0396879687809316855260208501521691015260608d01521660808b015281511515838b01528060208301511660c08b015261ffff60408301511660e08b015260608201516101008b01526080820151166101208a015201516101408801526101608701526101c080610180880152860190614283565b601319810191908211610b2e57565b605019810191908211610b2e57565b91908203918211610b2e57565b91906144af91600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261446486610d30565b16926040519461447386610d15565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16144a96139d3565b9161452b565b805190816144bc57505050565b82806144cc938301019101613442565b156144d45750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9192901561458d575081511561453f575090565b3b156145485790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613fcc5750805190602001fd5b90816020910312610421575190565b9194939697929590978051614809575b50604080516370a0823160e01b80825260209a92996001600160a01b0398808a169492939192918d81806145f630600483016119f2565b0381895afa93841561081d578b918f6000966147ea575b50501691823b15610421578c5163286fbdcd60e21b815260048101919091526001600160a01b03919091166024820152604481018b9052906000908290606490829084905af1801561081d576147d7575b5089519182528a828061467430600483016119f2565b0381865afa801561081d5785926000916147aa575b50808211614776575b50505050506146a18351151590565b15614759576146b86116fc6116fc89860151610826565b936146c78785015161ffff1690565b91169261470e6146e760a06146df6080850151610826565b930151614818565b916146f0610d8e565b6001600160a01b0387168152996001600160a01b03909116908a0152565b86880152833b156104215761473b600096519788968795869463695ef6bf60e01b86523060048701613857565b03925af1801561081d5761474c5750565b806121cc61043192610cc7565b939450506147719150610431946116fc910151610826565b614425565b61477f91614418565b9280841061478e575b80614692565b6147a19361479b91614418565b91614425565b38808281614788565b6147ca91508c8d3d106147d0575b6147c28183610d4b565b8101906145a0565b38614689565b503d6147b8565b806121cc6147e492610cc7565b3861465e565b614801929650803d106147d0576147c28183610d4b565b93388f61460d565b61481290613c9b565b386145bf565b60405190600160f01b60208301526022820152602281526106a481610cfa565b1561483f57565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b1561488057565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b60008082516022811490811561495b575b501561491e57600283015193602284015193600261ffff8716600181148015614915575b6148f190614838565b6148fc871515614879565b146149045750565b925090506056604283015192015190565b508082146148e8565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b6042915011386148c4565b1561496d57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b926149e66106a497959361ffff6149f49416865260c0602087015260c086019061066e565b90848203604086015261066e565b6001600160a01b0391821660608401529316608082015280830360a09091015261066e565b94614a429193929561ffff81166000526001602052614a49604060002060405194858092611149565b0384610d4b565b825115614ab057614a5b855182614cb7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156104215760009661473b91604051998a988997889662c5803160e81b8852600488016149c1565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15614b1557565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b15614b5e57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030960005260205260406000205490614bdf821515614b0e565b1015614b57565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b6022825110614be65761ffff602261043193015191166000526002602052604060002061030a60005260205260406000205490614bdf821515614b0e565b91906022815110614be657602261ffff91015192166000526002602052614c9d60406000206001600052602052604060002090565b54908101809111610b2e5761043191614bdf821515614b0e565b61ffff166000526003602052604060002054908115614d1c575b11614cd857565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614cd1565b906020828203126104215781516001600160401b038111610421576106a4920161362b565b60409061ffff6106a49593168152816020820152019161321d565b90601f8111614d7457505050565b600091825260208220906020601f850160051c83019410614db0575b601f0160051c01915b828110614da557505050565b818155600101614d99565b9092508290614d90565b929091614e2c5a604051633356ae4560e11b602082015261ffff871660248201526080604482015290614e2682614e18614df760a483018a61066e565b6001600160401b03881660648401528281036023190160848401528861066e565b03601f198101845283610d4b565b30615cae565b939015614e3b575b5050505050565b614e4494614e4e565b3880808080614e34565b9193614eec7fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c95614efa939561ffff81516020830120961695866000526005602052614eb283610ec760208b6040600020826040519483868095519384920161064b565b55614ecf604051978897885260a0602089015260a088019061066e565b6001600160401b039092166040870152858203606087015261066e565b90838203608085015261066e565b0390a1565b6020919283604051948593843782019081520301902090565b15614f1f57565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff614f91939897969816845260806020850152608084019161321d565b6001600160401b0390951660408201520152565b903590601e198136030182121561042157018035906001600160401b0382116104215760200191813603831361042157565b94919598979061135f615000604099614ff861500697615023993691610db6565b943691610db6565b97615658565b928451968794859463040a7bb160e41b86523090600487016151b1565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561081d57600090819361506657509190565b90506104d291925060403d8111610adc57610acd8183610d4b565b939694916106a498969361ffff6150a69316865260c0602087015260c086019161321d565b6001600160401b0390961660408401526060830152608082015280840360a09091015261321d565b91969792989594939094303303615156576150ea908530615a4b565b60405181815290946001600160a01b03169390849061ffff851690600080516020615d3a83398151915290602090a3833b15610421576000988995615146936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01615081565b0393f1801561081d5761474c5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b9190826040910312610421576020825192015190565b91926106a4959361ffff6151e09316845260018060a01b0316602084015260a0604084015260a083019061066e565b9215156060820152608081840391015261066e565b92919060ff61520384615c53565b16806153565750505060ff61521782615c53565b16158061534b575b6152289061575b565b61523a61523482615c03565b91615c9e565b90916001600160a01b039182841615615341575b615282907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b03166156dd565b9183169283156152fc57600080516020615d3a833981519152916152bc61ffff926152b76152b287600a54612eb9565b600a55565b61222c565b848154019055846000600080516020615d7a833981519152604051806152e789829190602083019252565b0390a360405193845216918060208101612ff0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead935061524e565b50805160291461521f565b600103615366576104319361547a565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606490fd5b156153b157565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b989796929361541c60e0979361ffff61341e9894168c5260208c61010091829101528c019061066e565b6001600160401b0390951660408b015260608a01526001600160a01b0316608089015260a088015286820360c088015261066e565b6154696040929594939560608352606083019061066e565b94600180841b031660208201520152565b90916154858461580c565b90916154a06116c4876117bc61549a8b610bc7565b8c610e4d565b916001600160401b03916154d7907f00000000000000000000000000000000000000000000000000000000000000009084166156dd565b9288888b83156155c5575b505050853b1561558857946155299694614e26948a94614e18948d996000146155815750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a016153f2565b901561557657509061557161ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88496975191012090604051948594169684615451565b0390a2565b926104319492614e4e565b169261550a565b5050505050925050507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9250614efa9150604051918291826119f2565b906117bc611914926155e5896155df6155eb979b306159fb565b99610bc7565b90610e4d565b88888b6154e2565b60065460ff161561563a576022825110614be65761ffff60226104319301519116600052600260205260406000206000805260205260406000205490614bdf821515614b0e565b505161139457565b634e487b7160e01b600052601260045260246000fd5b7f00000000000000000000000000000000000000000000000000000000000000009081156156d8576001600160401b03919004818111615696571690565b60405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606490fd5b615642565b81810292918115918404141715610b2e57565b7f000000000000000000000000000000000000000000000000000000000000000080156156d857810690818103908111610b2e5791565b60405160006020820152602181019190915260c09190911b6001600160c01b0319166041820152602981526106a481610cfa565b1561576257565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b93926071926106a494604051968794600160f81b6020870152602186015260018060c01b0319809360c01b16604186015260018060a01b0316604985015260c01b1660698301526157fc815180926020868601910161064b565b8101036051810184520182610d4b565b90615824600160ff61581d85615c53565b161461575b565b61582d82615c03565b9061583783615c9e565b9060498451106158a857604984015193605181511061586c576158696051820151916158638151614409565b90615b7f565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103615994575b8015615945578161591a8461590d60009561222c565b54612fcd828210156159a4565b5561592883600a5403600a55565b604051838152600080516020615d7a83398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61599f833384613161565b6158f7565b156159ab57565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b038116919082156152fc57600a5490828201809211610b2e57600092615a3c602092600080516020615d7a83398151915294600a5561222c565b818154019055604051908152a3565b6106a49183916001600160a01b038116308114159081615a77575b5015612f79576109a5833383613161565b905033141538615a66565b15615a8957565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15615ac657565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b615b1382615b0c81612e9d565b1015615a82565b615b208282511015615abf565b81615b38575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b808410615b6c5750508252601f01601f191660405290565b9092835181526020809101930190615b54565b615b8c82615b0c81612e9d565b615ba18151615b9a84612eab565b1115615abf565b81615bb9575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b808410615bf05750508252601f01601f191660405290565b9092835181526020809101930190615bd8565b6021815110615c1657602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6001815110615c63576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602981511061586c576029015190565b9092916000809160405195615cc287610cdf565b6096875282602088019560a036883760208451940192f1903d9060968211615cf0575b6000908286523e9190565b60969150615ce556fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572cebf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3effa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122006a90907d61707c488068a12d9608f1cdc2948408b95764078e77cecd6223a4f64736f6c63430008120033"; + "0x61010060409080825234620004d457606081620048628038038091620000268285620004d9565b833981010312620004d45780516001600160a01b039182821691829003620004d457602080820151918483168303620004d45785015193808516809503620004d4576200007262000513565b906200007d62000513565b60008054336001600160a01b03198083168217845598929493929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3608052600860a05283516001600160401b0391828211620003db57600b54916001968784811c94168015620004c9575b89851014620004b5578190601f9485811162000461575b508990858311600114620003fb578892620003ef575b5050600019600383901b1c191690871b17600b555b8051928311620003db57600c548681811c91168015620003d0575b88821014620003bc57908183899594931162000364575b5083918311600114620002f9576004949291869183620002ed575b5050600019600383901b1c191690861b17600c555b6402540be40060c052608051168951928380926303408e4760e41b82525afa908115620002e35790829189939162000298575b5061ffff1693848252600f815282822033835281528282209460ff199585878254161790558252601081528282209033835252209182541617905560e052600d541617600d555161431d90816200054582396080518181816104920152818161075501528181610884015281816109fe01528181610bbf0152818161186c01528181611a790152818161224101528181612a7601528181612ee6015261350d015260a051816112fe015260c051818181613753015281816139e601528181613bb90152613c53015260e05181611d360152f35b80929350858092503d8311620002db575b620002b58183620004d9565b81010312620002d7575161ffff81168103620002d75787919061ffff620001c5565b5080fd5b503d620002a9565b88513d84823e3d90fd5b0151905038806200017d565b93918691601f19821690600c885285882091885b8181106200034b575096836004981062000331575b505050811b01600c5562000192565b015160001960f88460031b161c1916905538808062000322565b8289015184558b978b969094019392830192016200030d565b9091929350600c86528786208380860160051c8201928a8710620003b2575b9189918b97969594930160051c01915b828110620003a357505062000162565b8881558a965089910162000393565b9250819262000383565b634e487b7160e01b86526022600452602486fd5b90607f16906200014b565b634e487b7160e01b85526041600452602485fd5b0151905038806200011b565b600b89528a89208a94509190601f1984168a5b8d8282106200044a575050841162000430575b505050811b01600b5562000130565b015160001960f88460031b161c1916905538808062000421565b8385015186558d979095019493840193016200040e565b909150600b88528988208580850160051c8201928c8610620004ab575b918b91869594930160051c01915b8281106200049c57505062000105565b8a81558594508b91016200048c565b925081926200047e565b634e487b7160e01b87526022600452602487fd5b93607f1693620000ee565b600080fd5b601f909101601f19168101906001600160401b03821190821017620004fd57604052565b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620004fd5760405260048252635553444f60e01b602083015256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80621d3567146103b057806301ffc9a7146103ab57806306fdde03146103a657806307e0db17146103a1578063095ea7b31461039c5780630df374831461039757806310ddb1371461039257806318160ddd1461032e57806323b872dd1461038d578063313ce56714610388578063365260b414610383578063395093511461037e5780633d8b38f6146103795780633f1f4fa41461037457806342d65a8d1461036f578063447705151461036a5780634c42899a1461036a5780635b8c41e6146103655780635c975abb1461036057806366ad5c8a1461035b578063695ef6bf1461035657806370a0823114610351578063715018a61461034c5780637533d7881461034757806376203b4814610342578063857749b01461033d5780638cfd8f5c146103385780638da5cb5b146103335780639358928b1461032e578063950c8a741461032957806395d89b41146103245780639bdb98121461031f5780639f38369a1461031a578063a457c2d714610315578063a4c51df514610310578063a6c3d1651461030b578063a9059cbb14610306578063b353aaa714610301578063ba03a8d7146102fc578063baf3292d146102f7578063c056a8de146102f2578063c4461834146102ed578063cbed8b9c146102e8578063ce8849ed146102e3578063d1deba1f146102de578063dbd01de1146102d9578063dd62ed3e146102d4578063de406577146102cf578063df2a5b3b146102ca578063e6a20ae6146102c5578063eab45d9c146102c0578063eaffd49a146102bb578063eb8d72b7146102b6578063ec6d062b146102b1578063ed629c5c146102ac578063f2fde38b146102a7578063f5ecbdbc146102a25763fc0c546a0361000e576122ab565b6121d7565b612110565b6120ed565b6120a3565b611f59565b611ed0565b611e6e565b611e52565b611d65565b611d20565b611cc6565b611c9d565b611b3a565b611b11565b611a25565b611a08565b611979565b6118e5565b61189b565b611856565b61182c565b6116a9565b611616565b611558565b6114b5565b61146a565b6113c6565b61139d565b6108e5565b611374565b611322565b6112e4565b61114e565b6110f7565b610fb1565b610f74565b610e91565b610dec565b610dc9565b610d62565b610c26565b610ba5565b610b6c565b610b10565b610a7c565b610974565b610943565b610903565b61085b565b61081c565b6107e7565b61072c565b61064c565b61058f565b61047b565b61ffff8116036103c157565b600080fd5b35906103d1826103b5565b565b9181601f840112156103c1578235916001600160401b0383116103c157602083818601950101116103c157565b608435906001600160401b03821682036103c157565b9060806003198301126103c15760043561042f816103b5565b916001600160401b03906024358281116103c15781610450916004016103d3565b9390939260443581811681036103c157926064359182116103c157610477916004016103d3565b9091565b346103c15761048936610416565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361054a5761050f61051792610019976105086104ee6104e98a61ffff166000526001602052604060002090565b6110dc565b8051908184149182610540575b508161051d575b50612def565b3691610cac565b923691610cac565b926132a1565b905061052a368486610cac565b6020815191012090602081519101201438610502565b15159150386104fb565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b346103c15760203660031901126103c15760043563ffffffff60e01b81168091036103c157602090631f7ecdf760e01b81149081156105d4575b506040519015158152f35b6301ffc9a760e01b149050386105c9565b60009103126103c157565b60005b8381106106035750506000910152565b81810151838201526020016105f3565b9060209161062c815180928185528580860191016105f0565b601f01601f1916010190565b906020610649928181520190610613565b90565b346103c1576000806003193601126107295760405181600b5461066e8161100c565b8084529060019081811690811561070157506001146106a8575b6106a48461069881880382610c70565b60405191829182610638565b0390f35b600b8352602094507f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db95b8284106106ee57505050816106a4936106989282010193610688565b80548585018701529285019281016106d2565b6106a496506106989450602092508593915060ff191682840152151560051b82010193610688565b80fd5b346103c157600060203660031901126107295760043561074b816103b5565b6107536122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936307e0db1760e01b85521660048401525af180156107c2576107b6575080f35b6107bf90610c58565b80f35b612704565b5080fd5b6001600160a01b038116036103c157565b35906103d1826107cb565b346103c15760403660031901126103c157610811600435610807816107cb565b6024359033612518565b602060405160018152f35b346103c15760403660031901126103c15761ffff60043561083c816103b5565b6108446122c6565b166000526003602052602435604060002055600080f35b346103c157600060203660031901126107295760043561087a816103b5565b6108826122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b156107c757602461ffff918360405195869485936310ddb13760e01b85521660048401525af180156107c2576107b6575080f35b346103c15760003660031901126103c1576020600a54604051908152f35b346103c15760603660031901126103c157610811600435610923816107cb565b60243561092f816107cb565b6044359161093e833383612643565b612410565b346103c15760003660031901126103c157602060405160128152f35b801515036103c157565b35906103d18261095f565b346103c15760a03660031901126103c157600435610991816103b5565b6064359061099e8261095f565b608435906001600160401b0382116103c1576109c361050860409336906004016103d3565b906109fa6109dd6109d5604435613bb7565b602435613c88565b928451958694859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107c2576000908192610a4b575b50604080519182526020820192909252f35b9050610a6e915060403d8111610a75575b610a668183610c70565b810190613692565b9038610a39565b503d610a5c565b346103c15760403660031901126103c157600435610a99816107cb565b3360009081526009602090815260408083206001600160a01b03851684529091529020546024358101809111610ad3576108119133612518565b61231e565b9060406003198301126103c157600435610af1816103b5565b91602435906001600160401b0382116103c157610477916004016103d3565b346103c157602061ffff610b5d610b2636610ad8565b9390911660005260018452610b48610b4f604060002060405192838092611046565b0382610c70565b848151910120923691610cac565b82815191012014604051908152f35b346103c15760203660031901126103c15761ffff600435610b8c816103b5565b1660005260036020526020604060002054604051908152f35b346103c157610bb336610ad8565b9190610bbd6122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103c157604051928380926342d65a8d60e01b825281610c146000988997889460048501613214565b03925af180156107c2576107b6575080f35b346103c15760003660031901126103c157602060405160008152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610c6b57604052565b610c42565b90601f801991011681019081106001600160401b03821117610c6b57604052565b6001600160401b038111610c6b57601f01601f191660200190565b929192610cb882610c91565b91610cc66040519384610c70565b8294818452818301116103c1578281602093846000960137010152565b60606003198201126103c157600435610cfb816103b5565b916024356001600160401b03928382116103c157806023830112156103c157816024610d2c93600401359101610cac565b9160443590811681036103c15790565b602090610d569282604051948386809551938492016105f0565b82019081520301902090565b346103c1576020610dc061ffff610d9f83610d7c36610ce3565b9490911660005260058252604060002082604051948386809551938492016105f0565b820190815203019020906001600160401b0316600052602052604060002090565b54604051908152f35b346103c15760003660031901126103c157602060ff601154166040519015158152f35b346103c157610dfa36610416565b9192949390303303610e1e5761050f610e1892610019973691610cac565b926136ec565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b60609060c31901126103c15760c490565b908160609103126103c15790565b60a03660031901126103c157600435610ea9816107cb565b602435610eb5816103b5565b604435916084356001600160401b0381116103c157602061ffff610eec6000805160206142a8833981519152933690600401610e83565b93610f5f8535610efb816107cb565b610f196105088689013598610f0f8a6107cb565b604081019061348b565b610f23818a613b52565b610f38610f31606435613c51565b5085613e5b565b97610f448915156138c9565b610f56610f508a613bb7565b8c613c88565b9234938b612ea2565b6040519485526001600160a01b0316941692a4005b346103c15760203660031901126103c157600435610f91816107cb565b60018060a01b031660005260086020526020604060002054604051908152f35b346103c15760008060031936011261072957610fcb6122c6565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90600182811c9216801561103c575b602083101461102657565b634e487b7160e01b600052602260045260246000fd5b91607f169161101b565b90600092918054916110578361100c565b9182825260019384811690816000146110b95750600114611079575b50505050565b90919394506000526020928360002092846000945b8386106110a5575050505001019038808080611073565b80548587018301529401938590820161108e565b9294505050602093945060ff191683830152151560051b01019038808080611073565b906103d16110f09260405193848092611046565b0383610c70565b346103c15760203660031901126103c15761ffff600435611117816103b5565b1660005260016020526106a4610b4861113a604060002060405192838092611046565b604051918291602083526020830190610613565b60e03660031901126103c157600435611166816107cb565b602435611172816103b5565b604435916001600160401b03906084358281116103c1576111979036906004016103d3565b91909260a435818116918282036103c15760c4359081116103c1576111c0903690600401610e83565b906111f78235956111d0876107cb565b6111ef6111e5602086013595610f0f876107cb565b9990923691610cac565b973691610cac565b928760ff60065416600014611262579360209593610f56610f5f946112306000805160206142a88339815191529a958561ffff9a6130d7565b61124561123e606435613c51565b5088613e5b565b9a6112518c15156138c9565b8d61125b8d613bb7565b9033613d15565b50508293919251611290576000805160206142a88339815191529460209461ffff94610f56610f5f94611230565b60405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608490fd5b346103c15760003660031901126103c157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103c15760403660031901126103c1576020610dc0600435611344816103b5565b61ffff60243591611354836103b5565b166000526002835260406000209061ffff16600052602052604060002090565b346103c15760003660031901126103c1576000546040516001600160a01b039091168152602090f35b346103c15760003660031901126103c1576004546040516001600160a01b039091168152602090f35b346103c1576000806003193601126107295760405181600c546113e88161100c565b808452906001908181169081156107015750600114611411576106a48461069881880382610c70565b600c8352602094507fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b82841061145757505050816106a4936106989282010193610688565b805485850187015292850192810161143b565b346103c157602060ff6114a961ffff610d9f8461148636610ce3565b9490911660005260078252604060002082604051948386809551938492016105f0565b54166040519015158152f35b346103c15760203660031901126103c15761ffff6004356114d5816103b5565b166000526001602052610b486114f5604060002060405192838092611046565b805115611513576106988161150d6106a49351613283565b9061409b565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b346103c15760403660031901126103c157600435611575816107cb565b602435903360005260096020526115a28160406000209060018060a01b0316600052602052604060002090565b54918083106115c3576115b792039033612518565b60405160018152602090f35b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346103c15760e03660031901126103c157600435611633816103b5565b6001600160401b03906064358281116103c1576116549036906004016103d3565b61165f929192610400565b60a4359161166c8361095f565b60c4359586116103c1576116876116979636906004016103d3565b95909460443590602435906134bd565b60408051928352602083019190915290f35b346103c1576116b736610ad8565b906116c06122c6565b604051926020928083858701376116ec6034868381013060601b88820152036014810188520186610c70565b60009361ffff8316855260019081815260408620918751916001600160401b038311610c6b5761172683611720865461100c565b8661322f565b80601f84116001146117965750918080926117859695948a9b7f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce9b9461178b575b50501b916000199060031b1c19161790555b60405193849384613214565b0390a180f35b015192503880611767565b91939498601f1984166117ae87600052602060002090565b938a905b828210611815575050917f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce999a95939185611785989694106117fc575b505050811b019055611779565b015160001960f88460031b161c191690553880806117ef565b8088869782949787015181550196019401906117b2565b346103c15760403660031901126103c15761081160043561184c816107cb565b6024359033612410565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760403660031901126103c157602060ff6114a96024356118bf816107cb565b600435600052600f845260406000209060018060a01b0316600052602052604060002090565b346103c15760203660031901126103c1577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b6020600435611925816107cb565b61192d6122c6565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b60c09060031901126103c157600490565b60c0906101231901126103c15761012490565b6102203660031901126103c15761198f36611955565b61199836610e72565b906119a236611966565b6101e435906001600160401b03928383116103c157366023840112156103c1578260040135918483116103c1573660246101a08502860101116103c157610204359485116103c157610019956119fe60249636906004016103d3565b96909501926129f3565b346103c15760003660031901126103c15760206040516127108152f35b346103c15760803660031901126103c157600435611a42816103b5565b602435611a4e816103b5565b6064356001600160401b0381116103c157611a6d9036906004016103d3565b9092611a776122c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156103c15760008094611aee604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916131f3565b03925af180156107c257611afe57005b80611b0b61001992610c58565b806105e5565b346103c15760003660031901126103c157600e546040516001600160a01b039091168152602090f35b611b4336610416565b9161ffff86949296166000526005602052611b8a81604060002060206040518092878b833787820190815203019020906001600160401b0316600052602052604060002090565b54918215611c4c57611c3b8483611c347fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e59a6000611c2084611c088e8a8f611c479f908f611bee90611be1611c029436908d610cac565b60208151910120146133fe565b61ffff166000526005602052604060002090565b916133e5565b906001600160401b0316600052602052604060002090565b55611c2c36878d610cac565b933691610cac565b91886136ec565b60405195869586613454565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b346103c15760003660031901126103c157600d546040516001600160a01b039091168152602090f35b346103c15760403660031901126103c1576020610dc0600435611ce8816107cb565b60243590611cf5826107cb565b60018060a01b03166000526009835260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103c15760603660031901126103c157600435611d82816103b5565b602435611d8e816103b5565b60443591611d9a6122c6565b8215611e1557611c477f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280611def8560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b346103c15760003660031901126103c157602060405160018152f35b346103c15760203660031901126103c1577f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a46020600435611eae8161095f565b611eb66122c6565b151560ff196006541660ff821617600655604051908152a1005b346103c1576101003660031901126103c157600435611eee816103b5565b6001600160401b03906024358281116103c157611f0f9036906004016103d3565b91906044359084821682036103c157608435611f2a816107cb565b60c4359586116103c157611f456100199636906004016103d3565b94909360e4359660a43594606435936135b3565b346103c157611f6736610ad8565b9190611f716122c6565b60009161ffff81168352600160209080825260408520916001600160401b038711610c6b57611faa87611fa4855461100c565b8561322f565b8590601f88116001146120115750918680879893611785957ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9993612006575b501b906000198460031b1c191617905560405193849384613214565b880135925038611fea565b90601f19881661202685600052602060002090565b9288905b82821061208c575050918893917ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab9899611785969410612072575b505082811b019055611779565b870135600019600386901b60f8161c191690553880612065565b808685968294968c0135815501950193019061202a565b346103c15760403660031901126103c157602060ff6114a96024356120c7816107cb565b6004356000526010845260406000209060018060a01b0316600052602052604060002090565b346103c15760003660031901126103c157602060ff600654166040519015158152f35b346103c15760203660031901126103c15760043561212d816107cb565b6121356122c6565b6001600160a01b03908116801561218357600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103c15760803660031901126103c1576004356121f4816103b5565b60243590612201826103b5565b61220c6044356107cb565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107c2576106a49160009161228a575b5060405191829182610638565b6122a5913d8091833e61229d8183610c70565b810190613195565b3861227d565b346103c15760003660031901126103c1576020604051308152f35b6000546001600160a01b031633036122da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b634e487b7160e01b600052601160045260246000fd5b90601f8201809211610ad357565b6051019081605111610ad357565b91908201809211610ad357565b1561236457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156123bc57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b0380841692909183156124c5576124aa826000805160206142c8833981519152946124c094169661244a88151561235d565b6001600160a01b038116600090815260086020526040902061248f90859054612475828210156123b5565b039160018060a01b03166000526008602052604060002090565b556001600160a01b0316600090815260086020526040902090565b8054820190556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0380821692919083156125f25782169384156125a257806125917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461257a6124c09560018060a01b03166000526009602052604060002090565b9060018060a01b0316600052602052604060002090565b556040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b03808216600090815260096020908152604080832093861683529290522090919054926001840161267b5750505050565b8084106126965761268d930391612518565b38808080611073565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b35610649816107cb565b35610649816103b5565b908160209103126103c157516106498161095f565b6040513d6000823e3d90fd5b1561271757565b60405162461bcd60e51b81526020600482015260146024820152731554d113ce881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606490fd5b1561275a57565b60405162461bcd60e51b8152602060048201526019602482015278155114d3ce881cd95b99195c881b9bdd08185c1c1c9bdd9959603a1b6044820152606490fd5b908160209103126103c15751610649816103b5565b60a0809180356127bf8161095f565b1515845260208101356127d1816107cb565b600180841b03809116602086015261ffff60408301356127f0816103b5565b16604086015260608201356060860152608082013561280e816107cb565b1660808501520135910152565b359060ff821682036103c157565b9190808252602080920192916000905b828210612847575050505090565b909192938061286160019261285b88610969565b15159052565b61287761286f848801610969565b151582850152565b61288f6040612887818901610969565b151590830152565b6128a9606061289f8189016103c6565b61ffff1690830152565b6128c860806128b98189016107dc565b6001600160a01b031690830152565b6128d860a0612887818901610969565b6128e860c06128b98189016107dc565b6128f860e06128b98189016107dc565b6101008087013590820152610120808701359082015261292861014061291f81890161281b565b60ff1690830152565b610160868101359082015261018080870135908201526101a0908101950193920190612839565b969594906129ee9360a06101e096946001600160401b036129dc946103098d521660208c01528035612980816107cb565b600180841b0380911660408d015280602083013561299d816107cb565b1660608d0152604082013560808d01526060820135838d015260808201356129c4816107cb565b1660c08c0152013560e08a01526101008901906127b0565b610200806101c0890152870191612829565b930152565b9491926001600160a01b039260209290918386018486612a12836126db565b16612c0f575b5050612a23886126db565b8533911603612baf575b612a45612a39896126db565b6001600160a01b031690565b98604089013597612a5589613c51565b5094612a608b6126db565b966040516303408e4760e41b815281816004818d7f0000000000000000000000000000000000000000000000000000000000000000165afa80156107c2576000805160206142a88339815191529b612b068f969a612b699b612b649a612ad6612b6f9f84908c99612b1499612b82575b50613e5b565b50612af7612aed612ae8368e8d610cac565b612d3c565b5095915050613bb7565b946040519788968a880161294f565b03601f198101835282610c70565b612b31612b20886126e5565b612b2b368887610cac565b9061304d565b612b5e612b54612b4c612a39612b468b6126e5565b976126db565b9389016126db565b9334963691610cac565b93612ea2565b6126e5565b946126db565b604051938452169261ffff1691602090a4565b612ba1908c8d3d10612ba8575b612b998183610c70565b81019061279b565b5038612ad0565b503d612b8f565b612c0a612bea33612bbf8b6126db565b6001600160a01b03908116600090815260096020908152604080832093909416825291909152205490565b612bfb60408b013580921015612753565b33612c058b6126db565b612643565b612a2d565b600d54612c719290612c29906001600160a01b0316612a39565b612c3b612c35876126e5565b926126db565b604051633a304d8b60e21b815261ffff90931660048401526001600160a01b031660248301529092839190829081906044820190565b03915afa80156107c257612c8d91600091612c94575b50612710565b3884612a18565b612cb49150863d8811612cba575b612cac8183610c70565b8101906126ef565b38612c87565b503d612ca2565b15612cc857565b60405162461bcd60e51b8152602060048201526012602482015271556e737570706f727465642074785479706560701b6044820152606490fd5b15612d0957565b60405162461bcd60e51b815260206004820152600b60248201526a47617320746f6f206c6f7760a81b6044820152606490fd5b600080825160228114908115612de4575b5015612da757600283015193602284015193600261ffff8716600181148015612d9e575b612d7a90612cc1565b612d85871515612d02565b14612d8d5750565b925090506056604283015192015190565b50808214612d71565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642061646170746572506172616d7360581b6044820152606490fd5b604291501138612d4d565b15612df657565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b92612e6f61064997959361ffff612e7d9416865260c0602087015260c0860190610613565b908482036040860152610613565b6001600160a01b0391821660608401529316608082015280830360a090910152610613565b94612ecb9193929561ffff81166000526001602052612ed2604060002060405194858092611046565b0384610c70565b825115612f5757612ee4855182613126565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b156103c157600096612f3991604051998a988997889662c5803160e81b885260048801612e4a565b03925af180156107c257612f4a5750565b80611b0b6103d192610c58565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15612fbc57565b60405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606490fd5b1561300857565b60405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606490fd5b60228251106130925761ffff60226103d19301519116600052600260205260406000206103096000526020526040600020549061308b821515612fb5565b1015613001565b60405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606490fd5b9190602281511061309257602261ffff9101519216600052600260205261310c60406000206001600052602052604060002090565b54908101809111610ad3576103d19161308b821515612fb5565b61ffff16600052600360205260406000205490811561318b575b1161314757565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150613140565b6020818303126103c1578051906001600160401b0382116103c1570181601f820112156103c15780516131c781610c91565b926131d56040519485610c70565b818452602082840101116103c15761064991602080850191016105f0565b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff610649959316815281602082015201916131f3565b90601f811161323d57505050565b600091825260208220906020601f850160051c83019410613279575b601f0160051c01915b82811061326e57505050565b818155600101613262565b9092508290613259565b601319810191908211610ad357565b605019810191908211610ad357565b9290916133135a604051633356ae4560e11b602082015261ffff87166024820152608060448201529061330d826132ff6132de60a483018a610613565b6001600160401b038816606484015282810360231901608484015288610613565b03601f198101845283610c70565b3061424a565b939015613322575b5050505050565b61332b94613335565b388080808061331b565b91936133d27fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c956133e0939561ffff8151602083012096169586600052600560205261339983610d9f60208b604060002082604051948386809551938492016105f0565b556001600160401b036133be604051988998895260a060208a015260a0890190610613565b921660408701528582036060870152610613565b908382036080850152610613565b0390a1565b6020919283604051948593843782019081520301902090565b1561340557565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b916134809060609461ffff6001600160401b0394999897991685526080602086015260808501916131f3565b951660408201520152565b903590601e19813603018212156103c157018035906001600160401b0382116103c1576020019181360383136103c157565b94919598979061125b6134e66040996134de6134ec97613509993691610cac565b943691610cac565b97613bb7565b928451968794859463040a7bb160e41b86523090600487016136a8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156107c257600090819361354c57509190565b905061047791925060403d8111610a7557610a668183610c70565b939694916135959061064999979461ffff6001600160401b039416875260c0602088015260c08701916131f3565b961660408401526060830152608082015260a08185039101526131f3565b9196979298959493909430330361364d576135cf908530613fe7565b60405181815290946001600160a01b03169390849061ffff8516907fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf90602090a3833b156103c157600098899561363d936040519c8d9b8c9a8b98633fe79aed60e11b8a5260048a01613567565b0393f180156107c257612f4a5750565b60405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606490fd5b91908260409103126103c1576020825192015190565b9192610649959361ffff6136d79316845260018060a01b0316602084015260a0604084015260a0830190610613565b92151560608201526080818403910152610613565b92919060ff6136fa846141ef565b16806138745750505060ff61370e826141ef565b161580613869575b61371f90613cce565b61373161372b8261419f565b9161423a565b90916001600160a01b03918284161561385f575b613779906001600160401b037f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b91831692831561381a577fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf916137da61ffff926137c06137bb87600a54612350565b600a55565b6001600160a01b0316600090815260086020526040902090565b8481540190558460006000805160206142c88339815191526040518061380589829190602083019252565b0390a3604051938452169180602081016124c0565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b61dead9350613745565b508051602914613716565b600103613884576103d19361399a565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606490fd5b156138d057565b60405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606490fd5b98979692936001600160401b0361394360e0989461ffff6129ee9995168d5260208d61010091829101528d0190610613565b951660408b015260608a01526001600160a01b0316608089015260a088015286820360c0880152610613565b6001600160401b0361398f60409396959496606084526060840190610613565b951660208201520152565b90916139a584613d82565b90916139d66139cf87611c086139c98b61ffff166000526007602052604060002090565b8c610d3c565b5460ff1690565b91613a0c6001600160401b0392837f00000000000000000000000000000000000000000000000000000000000000009116613c3e565b9288888b8315613b08575b505050853b15613abd5794613a5e969461330d948a946132ff948d99600014613ab65750505a925b5a978b6040519a8b9863757fea4d60e11b60208b015260248a01613911565b9015613aab575090613aa661ffff928560207fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd8849697519101209060405194859416968461396f565b0390a2565b926103d19492613335565b1692613a3f565b50506040516001600160a01b039094168452507f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9750919550859450506020840192506133e0915050565b90611c08613b3d92613b3789613b22613b4a979b30613f84565b9961ffff166000526007602052604060002090565b90610d3c565b805460ff19166001179055565b88888b613a17565b60065460ff1615613b995760228251106130925761ffff60226103d1930151911660005260026020526040600020600080526020526040600020549061308b821515612fb5565b505161129057565b634e487b7160e01b600052601260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000908115613c3957046001600160401b0390818111613bf4571690565b60405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606490fd5b613ba1565b81810292918115918404141715610ad357565b7f00000000000000000000000000000000000000000000000000000000000000008015613c3957810690818103908111610ad35791565b90604051916000602084015260218301526001600160401b0360c01b9060c01b16604182015260298152606081018181106001600160401b03821117610c6b5760405290565b15613cd557565b60405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606490fd5b939260719261064994604051968794600160f81b602087015260218601526001600160401b0360c01b809360c01b16604186015260018060a01b0316604985015260c01b166069830152613d7281518092602086860191016105f0565b8101036051810184520182610c70565b90613d9a600160ff613d93856141ef565b1614613cce565b613da38261419f565b90613dad8361423a565b906049845110613e1e576049840151936051815110613de257613ddf605182015191613dd98151613292565b9061411b565b91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6001600160a01b038116338103613f1d575b8015613ece5781613ea384613e9660009560018060a01b03166000526008602052604060002090565b5461247582821015613f2d565b55613eb183600a5403600a55565b6040518381526000805160206142c883398151915290602090a390565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b613f28833384612643565b613e6d565b15613f3457565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6001600160a01b0381169190821561381a57600a5490828201809211610ad357600092613fd86020926000805160206142c883398151915294600a5560018060a01b03166000526008602052604060002090565b818154019055604051908152a3565b6106499183916001600160a01b038116308114159081614013575b50156124105761093e833383612643565b905033141538614002565b1561402557565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561406257565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6140af826140a881612334565b101561401e565b6140bc828251101561405b565b816140d4575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b8084106141085750508252601f01601f191660405290565b90928351815260208091019301906140f0565b614128826140a881612334565b61413d815161413684612342565b111561405b565b81614155575050604051600081526020810160405290565b60405191601f8116916051831560051b80858701019484860193010101905b80841061418c5750508252601f01601f191660405290565b9092835181526020809101930190614174565b60218151106141b257602d015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b60018151106141ff576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6029815110613de2576029015190565b6040519392909160009160c08601916001600160401b03831187841017610c6b5783926040526096875282602088019560a036883760208451940192f1903d906096821161429e575b6000908286523e9190565b6096915061429356fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200cf6c7212110e2cfcc0af6709c525a6863bb295d1b045948cae94d83533535e664736f6c63430008120033"; type USDOOptionsModuleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/modules/index.ts b/src/typechain/tapioca-bar/factories/usd0/modules/index.ts index 04c67292..9c7b1a7a 100644 --- a/src/typechain/tapioca-bar/factories/usd0/modules/index.ts +++ b/src/typechain/tapioca-bar/factories/usd0/modules/index.ts @@ -2,6 +2,10 @@ /* tslint:disable */ /* eslint-disable */ export { USDOCommon__factory } from "./USDOCommon__factory"; +export { USDOGenericModule__factory } from "./USDOGenericModule__factory"; +export { USDOLeverageDestinationModule__factory } from "./USDOLeverageDestinationModule__factory"; export { USDOLeverageModule__factory } from "./USDOLeverageModule__factory"; +export { USDOMarketDestinationModule__factory } from "./USDOMarketDestinationModule__factory"; export { USDOMarketModule__factory } from "./USDOMarketModule__factory"; +export { USDOOptionsDestinationModule__factory } from "./USDOOptionsDestinationModule__factory"; export { USDOOptionsModule__factory } from "./USDOOptionsModule__factory"; diff --git a/src/typechain/tapioca-bar/hardhat.d.ts b/src/typechain/tapioca-bar/hardhat.d.ts index dcf62c44..8f9f2e7c 100644 --- a/src/typechain/tapioca-bar/hardhat.d.ts +++ b/src/typechain/tapioca-bar/hardhat.d.ts @@ -52,6 +52,10 @@ declare module "hardhat/types/runtime" { name: "MarketERC20", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "MarketLiquidatorReceiver", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "SGLBorrow", signerOrOptions?: ethers.Signer | FactoryOptions @@ -104,14 +108,30 @@ declare module "hardhat/types/runtime" { name: "USDOCommon", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "USDOGenericModule", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "USDOLeverageDestinationModule", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "USDOLeverageModule", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "USDOMarketDestinationModule", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "USDOMarketModule", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "USDOOptionsDestinationModule", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "USDOOptionsModule", signerOrOptions?: ethers.Signer | FactoryOptions @@ -120,6 +140,10 @@ declare module "hardhat/types/runtime" { name: "USDO", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "USDOFlashloanHelper", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractAt( name: "BBBorrow", @@ -171,6 +195,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "MarketLiquidatorReceiver", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "SGLBorrow", address: string, @@ -236,16 +265,36 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "USDOGenericModule", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "USDOLeverageDestinationModule", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "USDOLeverageModule", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "USDOMarketDestinationModule", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "USDOMarketModule", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "USDOOptionsDestinationModule", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "USDOOptionsModule", address: string, @@ -256,6 +305,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "USDOFlashloanHelper", + address: string, + signer?: ethers.Signer + ): Promise; // default types getContractFactory( diff --git a/src/typechain/tapioca-bar/index.ts b/src/typechain/tapioca-bar/index.ts index 2437a508..ac45a4d3 100644 --- a/src/typechain/tapioca-bar/index.ts +++ b/src/typechain/tapioca-bar/index.ts @@ -28,6 +28,8 @@ export type { Market } from "./markets/Market"; export { Market__factory } from "./factories/markets/Market__factory"; export type { MarketERC20 } from "./markets/MarketERC20"; export { MarketERC20__factory } from "./factories/markets/MarketERC20__factory"; +export type { MarketLiquidatorReceiver } from "./markets/MarketLiquidatorReceiver"; +export { MarketLiquidatorReceiver__factory } from "./factories/markets/MarketLiquidatorReceiver__factory"; export type { SGLBorrow } from "./markets/singularity/SGLBorrow"; export { SGLBorrow__factory } from "./factories/markets/singularity/SGLBorrow__factory"; export type { SGLCollateral } from "./markets/singularity/SGLCollateral"; @@ -52,11 +54,21 @@ export type { BaseUSDOStorage } from "./usd0/BaseUSDOStorage"; export { BaseUSDOStorage__factory } from "./factories/usd0/BaseUSDOStorage__factory"; export type { USDOCommon } from "./usd0/modules/USDOCommon"; export { USDOCommon__factory } from "./factories/usd0/modules/USDOCommon__factory"; +export type { USDOGenericModule } from "./usd0/modules/USDOGenericModule"; +export { USDOGenericModule__factory } from "./factories/usd0/modules/USDOGenericModule__factory"; +export type { USDOLeverageDestinationModule } from "./usd0/modules/USDOLeverageDestinationModule"; +export { USDOLeverageDestinationModule__factory } from "./factories/usd0/modules/USDOLeverageDestinationModule__factory"; export type { USDOLeverageModule } from "./usd0/modules/USDOLeverageModule"; export { USDOLeverageModule__factory } from "./factories/usd0/modules/USDOLeverageModule__factory"; +export type { USDOMarketDestinationModule } from "./usd0/modules/USDOMarketDestinationModule"; +export { USDOMarketDestinationModule__factory } from "./factories/usd0/modules/USDOMarketDestinationModule__factory"; export type { USDOMarketModule } from "./usd0/modules/USDOMarketModule"; export { USDOMarketModule__factory } from "./factories/usd0/modules/USDOMarketModule__factory"; +export type { USDOOptionsDestinationModule } from "./usd0/modules/USDOOptionsDestinationModule"; +export { USDOOptionsDestinationModule__factory } from "./factories/usd0/modules/USDOOptionsDestinationModule__factory"; export type { USDOOptionsModule } from "./usd0/modules/USDOOptionsModule"; export { USDOOptionsModule__factory } from "./factories/usd0/modules/USDOOptionsModule__factory"; export type { USDO } from "./usd0/USDO"; export { USDO__factory } from "./factories/usd0/USDO__factory"; +export type { USDOFlashloanHelper } from "./usd0/USDOFlashloanHelper"; +export { USDOFlashloanHelper__factory } from "./factories/usd0/USDOFlashloanHelper__factory"; diff --git a/src/typechain/tapioca-bar/markets/MarketLiquidatorReceiver.ts b/src/typechain/tapioca-bar/markets/MarketLiquidatorReceiver.ts new file mode 100644 index 00000000..32160114 --- /dev/null +++ b/src/typechain/tapioca-bar/markets/MarketLiquidatorReceiver.ts @@ -0,0 +1,1123 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface MarketLiquidatorReceiverInterface extends utils.Interface { + functions: { + "allowances(address,address)": FunctionFragment; + "assignOracle(address,address,bytes,uint256)": FunctionFragment; + "assignSwapper(address,address)": FunctionFragment; + "claimOwnership()": FunctionFragment; + "decreaseAllowance(address,address,uint256)": FunctionFragment; + "increaseAllowance(address,address,uint256)": FunctionFragment; + "onCollateralReceiver(address,address,address,uint256,bytes)": FunctionFragment; + "oracles(address)": FunctionFragment; + "owner()": FunctionFragment; + "pendingOwner()": FunctionFragment; + "swappers(address)": FunctionFragment; + "transferOwnership(address,bool,bool)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowances" + | "allowances(address,address)" + | "assignOracle" + | "assignOracle(address,address,bytes,uint256)" + | "assignSwapper" + | "assignSwapper(address,address)" + | "claimOwnership" + | "claimOwnership()" + | "decreaseAllowance" + | "decreaseAllowance(address,address,uint256)" + | "increaseAllowance" + | "increaseAllowance(address,address,uint256)" + | "onCollateralReceiver" + | "onCollateralReceiver(address,address,address,uint256,bytes)" + | "oracles" + | "oracles(address)" + | "owner" + | "owner()" + | "pendingOwner" + | "pendingOwner()" + | "swappers" + | "swappers(address)" + | "transferOwnership" + | "transferOwnership(address,bool,bool)" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowances", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowances(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "assignOracle", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "assignOracle(address,address,bytes,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "assignSwapper", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "assignSwapper(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "claimOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "claimOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onCollateralReceiver", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "onCollateralReceiver(address,address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "oracles", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "oracles(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData( + functionFragment: "pendingOwner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "pendingOwner()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "swappers", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "swappers(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address,bool,bool)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "allowances", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowances(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assignOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assignOracle(address,address,bytes,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assignSwapper", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assignSwapper(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onCollateralReceiver", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onCollateralReceiver(address,address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "oracles", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "oracles(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pendingOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "pendingOwner()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "swappers", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "swappers(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address,bool,bool)", + data: BytesLike + ): Result; + + events: { + "OracleAssigned(address,address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "SwapperAssigned(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OracleAssigned"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OracleAssigned(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SwapperAssigned"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SwapperAssigned(address,address)" + ): EventFragment; +} + +export interface OracleAssignedEventObject { + tokenIn: string; + oracle: string; +} +export type OracleAssignedEvent = TypedEvent< + [string, string], + OracleAssignedEventObject +>; + +export type OracleAssignedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface SwapperAssignedEventObject { + tokenIn: string; + swapper: string; +} +export type SwapperAssignedEvent = TypedEvent< + [string, string], + SwapperAssignedEventObject +>; + +export type SwapperAssignedEventFilter = TypedEventFilter; + +export interface MarketLiquidatorReceiver extends BaseContract { + contractName: "MarketLiquidatorReceiver"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MarketLiquidatorReceiverInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowances( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { allowance: BigNumber }>; + + "allowances(address,address)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { allowance: BigNumber }>; + + assignOracle( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignOracle(address,address,bytes,uint256)"( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + assignSwapper( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignSwapper(address,address)"( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onCollateralReceiver( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "onCollateralReceiver(address,address,address,uint256,bytes)"( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + oracles( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + "oracles(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + pendingOwner(overrides?: CallOverrides): Promise<[string]>; + + "pendingOwner()"(overrides?: CallOverrides): Promise<[string]>; + + swappers( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { swapper: string }>; + + "swappers(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { swapper: string }>; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowances( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowances(address,address)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + assignOracle( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignOracle(address,address,bytes,uint256)"( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + assignSwapper( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignSwapper(address,address)"( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onCollateralReceiver( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "onCollateralReceiver(address,address,address,uint256,bytes)"( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + oracles( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + "oracles(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + swappers( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "swappers(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowances( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowances(address,address)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + assignOracle( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "assignOracle(address,address,bytes,uint256)"( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + assignSwapper( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "assignSwapper(address,address)"( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + claimOwnership(overrides?: CallOverrides): Promise; + + "claimOwnership()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "decreaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "increaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onCollateralReceiver( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "onCollateralReceiver(address,address,address,uint256,bytes)"( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + oracles( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + "oracles(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, string, BigNumber] & { + data: string; + target: string; + precision: BigNumber; + } + >; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + swappers( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "swappers(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OracleAssigned(address,address)"( + tokenIn?: PromiseOrValue | null, + oracle?: PromiseOrValue | null + ): OracleAssignedEventFilter; + OracleAssigned( + tokenIn?: PromiseOrValue | null, + oracle?: PromiseOrValue | null + ): OracleAssignedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "SwapperAssigned(address,address)"( + tokenIn?: PromiseOrValue | null, + swapper?: PromiseOrValue | null + ): SwapperAssignedEventFilter; + SwapperAssigned( + tokenIn?: PromiseOrValue | null, + swapper?: PromiseOrValue | null + ): SwapperAssignedEventFilter; + }; + + estimateGas: { + allowances( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowances(address,address)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + assignOracle( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignOracle(address,address,bytes,uint256)"( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + assignSwapper( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignSwapper(address,address)"( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onCollateralReceiver( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "onCollateralReceiver(address,address,address,uint256,bytes)"( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + oracles( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "oracles(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + swappers( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "swappers(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowances( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowances(address,address)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + assignOracle( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignOracle(address,address,bytes,uint256)"( + _tokenIn: PromiseOrValue, + _oracle: PromiseOrValue, + _data: PromiseOrValue, + _precision: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + assignSwapper( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "assignSwapper(address,address)"( + _tokenIn: PromiseOrValue, + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,address,uint256)"( + sender: PromiseOrValue, + tokenIn: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + onCollateralReceiver( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "onCollateralReceiver(address,address,address,uint256,bytes)"( + initiator: PromiseOrValue, + tokenIn: PromiseOrValue, + tokenOut: PromiseOrValue, + collateralAmount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + oracles( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "oracles(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + swappers( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "swappers(address)"( + tokenIn: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts index d02c92ce..7fbdee39 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts @@ -55,7 +55,7 @@ export interface BBLiquidationInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; - "liquidate(address[],uint256[],bytes[],address)": FunctionFragment; + "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; @@ -148,7 +148,7 @@ export interface BBLiquidationInterface extends utils.Interface { | "isMainMarket" | "isMainMarket()" | "liquidate" - | "liquidate(address[],uint256[],bytes[],address)" + | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" | "liquidateBadDebt(address,address,address,bytes)" | "liquidationBonusAmount" @@ -421,17 +421,17 @@ export interface BBLiquidationInterface extends utils.Interface { values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( - functionFragment: "liquidate(address[],uint256[],bytes[],address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( @@ -952,7 +952,7 @@ export interface BBLiquidationInterface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "liquidate(address[],uint256[],bytes[],address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", data: BytesLike ): Result; decodeFunctionResult( @@ -1799,32 +1799,32 @@ export interface BBLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2318,32 +2318,32 @@ export interface BBLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2825,32 +2825,32 @@ export interface BBLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3541,32 +3541,32 @@ export interface BBLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4047,32 +4047,32 @@ export interface BBLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts index 34e06e43..6424f614 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts @@ -63,7 +63,7 @@ export interface BigBangInterface extends utils.Interface { "init(bytes)": FunctionFragment; "isMainMarket()": FunctionFragment; "leverageModule()": FunctionFragment; - "liquidate(address[],uint256[],bytes[],address)": FunctionFragment; + "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; @@ -179,7 +179,7 @@ export interface BigBangInterface extends utils.Interface { | "leverageModule" | "leverageModule()" | "liquidate" - | "liquidate(address[],uint256[],bytes[],address)" + | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" | "liquidateBadDebt(address,address,address,bytes)" | "liquidationBonusAmount" @@ -564,17 +564,17 @@ export interface BigBangInterface extends utils.Interface { values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( - functionFragment: "liquidate(address[],uint256[],bytes[],address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( @@ -1246,7 +1246,7 @@ export interface BigBangInterface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "liquidate(address[],uint256[],bytes[],address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", data: BytesLike ): Result; decodeFunctionResult( @@ -2229,32 +2229,32 @@ export interface BigBang extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2922,32 +2922,32 @@ export interface BigBang extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3607,32 +3607,32 @@ export interface BigBang extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4493,32 +4493,32 @@ export interface BigBang extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5177,32 +5177,32 @@ export interface BigBang extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/typechain/tapioca-bar/markets/index.ts b/src/typechain/tapioca-bar/markets/index.ts index ee97b0e3..ff7048a7 100644 --- a/src/typechain/tapioca-bar/markets/index.ts +++ b/src/typechain/tapioca-bar/markets/index.ts @@ -7,3 +7,4 @@ import type * as singularity from "./singularity"; export type { singularity }; export type { Market } from "./Market"; export type { MarketERC20 } from "./MarketERC20"; +export type { MarketLiquidatorReceiver } from "./MarketLiquidatorReceiver"; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts index 3341c015..90c11931 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts @@ -72,7 +72,6 @@ export interface SGLBorrowInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -173,8 +172,6 @@ export interface SGLBorrowInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -477,14 +474,6 @@ export interface SGLBorrowInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -1028,14 +1017,6 @@ export interface SGLBorrowInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2116,10 +2097,6 @@ export interface SGLBorrow extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2693,10 +2670,6 @@ export interface SGLBorrow extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3242,10 +3215,6 @@ export interface SGLBorrow extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4082,10 +4051,6 @@ export interface SGLBorrow extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4620,12 +4585,6 @@ export interface SGLBorrow extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts index a6230ceb..5548bad5 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts @@ -72,7 +72,6 @@ export interface SGLCollateralInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -173,8 +172,6 @@ export interface SGLCollateralInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -481,14 +478,6 @@ export interface SGLCollateralInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -1033,14 +1022,6 @@ export interface SGLCollateralInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2128,10 +2109,6 @@ export interface SGLCollateral extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2707,10 +2684,6 @@ export interface SGLCollateral extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3258,10 +3231,6 @@ export interface SGLCollateral extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4100,10 +4069,6 @@ export interface SGLCollateral extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4640,12 +4605,6 @@ export interface SGLCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts index 2edf9666..f09b4d4b 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts @@ -71,7 +71,6 @@ export interface SGLCommonInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -169,8 +168,6 @@ export interface SGLCommonInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -455,14 +452,6 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -983,14 +972,6 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2052,10 +2033,6 @@ export interface SGLCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2599,10 +2576,6 @@ export interface SGLCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3118,10 +3091,6 @@ export interface SGLCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3928,10 +3897,6 @@ export interface SGLCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4436,12 +4401,6 @@ export interface SGLCommon extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts index cfc129f0..7475c7ed 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts @@ -71,7 +71,6 @@ export interface SGLLendingCommonInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -169,8 +168,6 @@ export interface SGLLendingCommonInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -455,14 +452,6 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -983,14 +972,6 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2052,10 +2033,6 @@ export interface SGLLendingCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2599,10 +2576,6 @@ export interface SGLLendingCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3118,10 +3091,6 @@ export interface SGLLendingCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3928,10 +3897,6 @@ export interface SGLLendingCommon extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4436,12 +4401,6 @@ export interface SGLLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts index f5aa9d02..f092a744 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts @@ -129,7 +129,6 @@ export interface SGLLeverageInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -232,8 +231,6 @@ export interface SGLLeverageInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -546,14 +543,6 @@ export interface SGLLeverageInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -1148,14 +1137,6 @@ export interface SGLLeverageInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2261,10 +2242,6 @@ export interface SGLLeverage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2888,10 +2865,6 @@ export interface SGLLeverage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3487,10 +3460,6 @@ export interface SGLLeverage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4377,10 +4346,6 @@ export interface SGLLeverage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4965,12 +4930,6 @@ export interface SGLLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts index ffa056b3..e6917c1b 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts @@ -68,12 +68,11 @@ export interface SGLLiquidationInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; - "liquidate(address[],uint256[],bytes[],bytes,address)": FunctionFragment; + "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -166,7 +165,7 @@ export interface SGLLiquidationInterface extends utils.Interface { | "interestElasticity" | "interestElasticity()" | "liquidate" - | "liquidate(address[],uint256[],bytes[],bytes,address)" + | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" | "liquidateBadDebt(address,address,address,bytes)" | "liquidationBonusAmount" @@ -175,8 +174,6 @@ export interface SGLLiquidationInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -442,19 +439,17 @@ export interface SGLLiquidationInterface extends utils.Interface { values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( - functionFragment: "liquidate(address[],uint256[],bytes[],bytes,address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( @@ -499,14 +494,6 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -1005,7 +992,7 @@ export interface SGLLiquidationInterface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "liquidate(address[],uint256[],bytes[],bytes,address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", data: BytesLike ): Result; decodeFunctionResult( @@ -1040,14 +1027,6 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -2096,34 +2075,32 @@ export interface SGLLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2143,10 +2120,6 @@ export interface SGLLiquidation extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2677,34 +2650,32 @@ export interface SGLLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2724,10 +2695,6 @@ export interface SGLLiquidation extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3230,34 +3197,32 @@ export interface SGLLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3277,10 +3242,6 @@ export interface SGLLiquidation extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4074,34 +4035,32 @@ export interface SGLLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4121,10 +4080,6 @@ export interface SGLLiquidation extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4608,34 +4563,32 @@ export interface SGLLiquidation extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4663,12 +4616,6 @@ export interface SGLLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts index ad06cd2e..3d9a5a49 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts @@ -55,7 +55,6 @@ export interface SGLStorageInterface extends utils.Interface { "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -149,8 +148,6 @@ export interface SGLStorageInterface extends utils.Interface { | "liquidationCollateralizationRate()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -425,14 +422,6 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -943,14 +932,6 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -1986,10 +1967,6 @@ export interface SGLStorage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -2507,10 +2484,6 @@ export interface SGLStorage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3004,10 +2977,6 @@ export interface SGLStorage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3802,10 +3771,6 @@ export interface SGLStorage extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4294,12 +4259,6 @@ export interface SGLStorage extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts index eb2dbd78..c252bce5 100644 --- a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts +++ b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts @@ -135,13 +135,12 @@ export interface SingularityInterface extends utils.Interface { "init(bytes)": FunctionFragment; "interestElasticity()": FunctionFragment; "leverageModule()": FunctionFragment; - "liquidate(address[],uint256[],bytes[],bytes,address)": FunctionFragment; + "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationModule()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; - "liquidationQueue()": FunctionFragment; "lqCollateralizationRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maximumInterestPerSecond()": FunctionFragment; @@ -171,7 +170,6 @@ export interface SingularityInterface extends utils.Interface { "repay(address,address,bool,uint256)": FunctionFragment; "rescueEth(uint256,address)": FunctionFragment; "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; - "setLiquidationQueueConfig(address,address,address)": FunctionFragment; "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; @@ -265,7 +263,7 @@ export interface SingularityInterface extends utils.Interface { | "leverageModule" | "leverageModule()" | "liquidate" - | "liquidate(address[],uint256[],bytes[],bytes,address)" + | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" | "liquidateBadDebt(address,address,address,bytes)" | "liquidationBonusAmount" @@ -276,8 +274,6 @@ export interface SingularityInterface extends utils.Interface { | "liquidationModule()" | "liquidationMultiplier" | "liquidationMultiplier()" - | "liquidationQueue" - | "liquidationQueue()" | "lqCollateralizationRate" | "lqCollateralizationRate()" | "maxLiquidatorReward" @@ -336,8 +332,6 @@ export interface SingularityInterface extends utils.Interface { | "rescueEth(uint256,address)" | "sellCollateral" | "sellCollateral(address,uint256,uint256,address,bytes)" - | "setLiquidationQueueConfig" - | "setLiquidationQueueConfig(address,address,address)" | "setMarketConfig" | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "setSingularityConfig" @@ -689,19 +683,17 @@ export interface SingularityInterface extends utils.Interface { values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( - functionFragment: "liquidate(address[],uint256[],bytes[],bytes,address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", values: [ PromiseOrValue[], PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue + PromiseOrValue[], + PromiseOrValue[] ] ): string; encodeFunctionData( @@ -754,14 +746,6 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "liquidationQueue", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "liquidationQueue()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lqCollateralizationRate", values?: undefined @@ -1070,22 +1054,6 @@ export interface SingularityInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "setLiquidationQueueConfig", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setLiquidationQueueConfig(address,address,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -1508,7 +1476,7 @@ export interface SingularityInterface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "liquidate(address[],uint256[],bytes[],bytes,address)", + functionFragment: "liquidate(address[],uint256[],address[],bytes[])", data: BytesLike ): Result; decodeFunctionResult( @@ -1551,14 +1519,6 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "liquidationMultiplier()", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "liquidationQueue()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lqCollateralizationRate", data: BytesLike @@ -1752,14 +1712,6 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "setLiquidationQueueConfig", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setLiquidationQueueConfig(address,address,address)", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -2803,34 +2755,32 @@ export interface Singularity extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2854,10 +2804,6 @@ export interface Singularity extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - liquidationQueue(overrides?: CallOverrides): Promise<[string]>; - - "liquidationQueue()"(overrides?: CallOverrides): Promise<[string]>; - lqCollateralizationRate(overrides?: CallOverrides): Promise<[BigNumber]>; "lqCollateralizationRate()"( @@ -3132,20 +3078,6 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setLiquidationQueueConfig( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setLiquidationQueueConfig(address,address,address)"( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMarketConfig( _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, @@ -3674,34 +3606,32 @@ export interface Singularity extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3725,10 +3655,6 @@ export interface Singularity extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -3993,20 +3919,6 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setLiquidationQueueConfig( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setLiquidationQueueConfig(address,address,address)"( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMarketConfig( _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, @@ -4521,34 +4433,32 @@ export interface Singularity extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: CallOverrides ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4572,10 +4482,6 @@ export interface Singularity extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -4836,20 +4742,6 @@ export interface Singularity extends BaseContract { overrides?: CallOverrides ): Promise; - setLiquidationQueueConfig( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "setLiquidationQueueConfig(address,address,address)"( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - setMarketConfig( _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, @@ -5651,34 +5543,32 @@ export interface Singularity extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5702,10 +5592,6 @@ export interface Singularity extends BaseContract { "liquidationMultiplier()"(overrides?: CallOverrides): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"(overrides?: CallOverrides): Promise; - lqCollateralizationRate(overrides?: CallOverrides): Promise; "lqCollateralizationRate()"(overrides?: CallOverrides): Promise; @@ -5970,20 +5856,6 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setLiquidationQueueConfig( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setLiquidationQueueConfig(address,address,address)"( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMarketConfig( _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, @@ -6479,34 +6351,32 @@ export interface Singularity extends BaseContract { liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "liquidate(address[],uint256[],bytes[],bytes,address)"( + "liquidate(address[],uint256[],address[],bytes[])"( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], - collateralToAssetSwapDatas: PromiseOrValue[], - usdoToBorrowedSwapData: PromiseOrValue, - swapper: PromiseOrValue, + liquidatorReceivers: PromiseOrValue[], + liquidatorReceiverDatas: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; liquidateBadDebt( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; "liquidateBadDebt(address,address,address,bytes)"( user: PromiseOrValue, receiver: PromiseOrValue, - swapper: PromiseOrValue, - collateralToAssetSwapData: PromiseOrValue, + liquidatorReceiver: PromiseOrValue, + liquidatorReceiverData: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -6540,12 +6410,6 @@ export interface Singularity extends BaseContract { overrides?: CallOverrides ): Promise; - liquidationQueue(overrides?: CallOverrides): Promise; - - "liquidationQueue()"( - overrides?: CallOverrides - ): Promise; - lqCollateralizationRate( overrides?: CallOverrides ): Promise; @@ -6840,20 +6704,6 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setLiquidationQueueConfig( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setLiquidationQueueConfig(address,address,address)"( - _liquidationQueue: PromiseOrValue, - _bidExecutionSwapper: PromiseOrValue, - _usdoSwapper: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMarketConfig( _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/BaseUSDO.ts b/src/typechain/tapioca-bar/usd0/BaseUSDO.ts index f51046b0..8c60960e 100644 --- a/src/typechain/tapioca-bar/usd0/BaseUSDO.ts +++ b/src/typechain/tapioca-bar/usd0/BaseUSDO.ts @@ -96,7 +96,7 @@ export declare namespace ICommonData { export type IApprovalStruct = { permitAll: PromiseOrValue; allowFailure: PromiseOrValue; - approveOnYieldBox: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; actionType: PromiseOrValue; target: PromiseOrValue; permitBorrow: PromiseOrValue; @@ -126,7 +126,7 @@ export declare namespace ICommonData { ] & { permitAll: boolean; allowFailure: boolean; - approveOnYieldBox: boolean; + yieldBoxTypeApproval: boolean; actionType: number; target: string; permitBorrow: boolean; @@ -174,69 +174,61 @@ export declare namespace ICommonData { }; } -export declare namespace ITapiocaOptionsBroker { - export type IOptionsExitDataStruct = { - exit: PromiseOrValue; - target: PromiseOrValue; - oTAPTokenID: PromiseOrValue; +export declare namespace IUSDOBase { + export type ILeverageSwapDataStruct = { + tokenOut: PromiseOrValue; + amountOutMin: PromiseOrValue; + data: PromiseOrValue; }; - export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { - exit: boolean; - target: string; - oTAPTokenID: BigNumber; + export type ILeverageSwapDataStructOutput = [string, BigNumber, string] & { + tokenOut: string; + amountOutMin: BigNumber; + data: string; }; - export type IOptionsParticipateDataStruct = { - participate: PromiseOrValue; - target: PromiseOrValue; - tOLPTokenId: PromiseOrValue; + export type ILeverageLZDataStruct = { + srcExtraGasLimit: PromiseOrValue; + lzSrcChainId: PromiseOrValue; + lzDstChainId: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + dstAirdropAdapterParam: PromiseOrValue; + srcAirdropAdapterParam: PromiseOrValue; + refundAddress: PromiseOrValue; }; - export type IOptionsParticipateDataStructOutput = [ - boolean, + export type ILeverageLZDataStructOutput = [ + BigNumber, + number, + number, string, - BigNumber - ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; -} - -export declare namespace ITapiocaOptionLiquidityProvision { - export type IOptionsUnlockDataStruct = { - unlock: PromiseOrValue; - target: PromiseOrValue; - tokenId: PromiseOrValue; - }; - - export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { - unlock: boolean; - target: string; - tokenId: BigNumber; + string, + string, + string + ] & { + srcExtraGasLimit: BigNumber; + lzSrcChainId: number; + lzDstChainId: number; + zroPaymentAddress: string; + dstAirdropAdapterParam: string; + srcAirdropAdapterParam: string; + refundAddress: string; }; - export type IOptionsLockDataStruct = { - lock: PromiseOrValue; - target: PromiseOrValue; - lockDuration: PromiseOrValue; - amount: PromiseOrValue; - fraction: PromiseOrValue; + export type ILeverageExternalContractsDataStruct = { + swapper: PromiseOrValue; + magnetar: PromiseOrValue; + tOft: PromiseOrValue; + srcMarket: PromiseOrValue; }; - export type IOptionsLockDataStructOutput = [ - boolean, + export type ILeverageExternalContractsDataStructOutput = [ string, - BigNumber, - BigNumber, - BigNumber - ] & { - lock: boolean; - target: string; - lockDuration: BigNumber; - amount: BigNumber; - fraction: BigNumber; - }; -} + string, + string, + string + ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; -export declare namespace IUSDOBase { export type IRemoveAndRepayStruct = { removeAssetFromSGL: PromiseOrValue; removeAmount: PromiseOrValue; @@ -307,60 +299,68 @@ export declare namespace IUSDOBase { lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput; participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput; }; +} - export type ILeverageLZDataStruct = { - srcExtraGasLimit: PromiseOrValue; - lzSrcChainId: PromiseOrValue; - lzDstChainId: PromiseOrValue; - zroPaymentAddress: PromiseOrValue; - dstAirdropAdapterParam: PromiseOrValue; - srcAirdropAdapterParam: PromiseOrValue; - refundAddress: PromiseOrValue; +export declare namespace ITapiocaOptionsBroker { + export type IOptionsExitDataStruct = { + exit: PromiseOrValue; + target: PromiseOrValue; + oTAPTokenID: PromiseOrValue; }; - export type ILeverageLZDataStructOutput = [ - BigNumber, - number, - number, - string, - string, - string, - string - ] & { - srcExtraGasLimit: BigNumber; - lzSrcChainId: number; - lzDstChainId: number; - zroPaymentAddress: string; - dstAirdropAdapterParam: string; - srcAirdropAdapterParam: string; - refundAddress: string; + export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { + exit: boolean; + target: string; + oTAPTokenID: BigNumber; }; - export type ILeverageSwapDataStruct = { - tokenOut: PromiseOrValue; - amountOutMin: PromiseOrValue; - data: PromiseOrValue; + export type IOptionsParticipateDataStruct = { + participate: PromiseOrValue; + target: PromiseOrValue; + tOLPTokenId: PromiseOrValue; }; - export type ILeverageSwapDataStructOutput = [string, BigNumber, string] & { - tokenOut: string; - amountOutMin: BigNumber; - data: string; + export type IOptionsParticipateDataStructOutput = [ + boolean, + string, + BigNumber + ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; +} + +export declare namespace ITapiocaOptionLiquidityProvision { + export type IOptionsUnlockDataStruct = { + unlock: PromiseOrValue; + target: PromiseOrValue; + tokenId: PromiseOrValue; }; - export type ILeverageExternalContractsDataStruct = { - swapper: PromiseOrValue; - magnetar: PromiseOrValue; - tOft: PromiseOrValue; - srcMarket: PromiseOrValue; + export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { + unlock: boolean; + target: string; + tokenId: BigNumber; }; - export type ILeverageExternalContractsDataStructOutput = [ - string, - string, + export type IOptionsLockDataStruct = { + lock: PromiseOrValue; + target: PromiseOrValue; + lockDuration: PromiseOrValue; + amount: PromiseOrValue; + fraction: PromiseOrValue; + }; + + export type IOptionsLockDataStructOutput = [ + boolean, string, - string - ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; + BigNumber, + BigNumber, + BigNumber + ] & { + lock: boolean; + target: string; + lockDuration: BigNumber; + amount: BigNumber; + fraction: BigNumber; + }; } export declare namespace ICommonOFT { @@ -414,22 +414,18 @@ export interface BaseUSDOInterface extends utils.Interface { "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; "exerciseOption((address,address,uint256,uint256,address,uint256),(uint16,address,uint256),(bool,address,uint16,uint256,address,uint256),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; "isTrustedRemote(uint16,bytes)": FunctionFragment; - "leverageModule()": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "marketModule()": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; "nonces(address)": FunctionFragment; - "optionsModule()": FunctionFragment; "owner()": FunctionFragment; "paused()": FunctionFragment; "payloadSizeLimitLookup(uint16)": FunctionFragment; @@ -444,10 +440,9 @@ export interface BaseUSDOInterface extends utils.Interface { "sendForLeverage(uint256,address,(uint256,uint16,uint16,address,bytes,bytes,address),(address,uint256,bytes),(address,address,address,address))": FunctionFragment; "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; "setBurnerStatus(address,bool)": FunctionFragment; + "setCluster(address)": FunctionFragment; "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; "setConservator(address)": FunctionFragment; - "setFlashMintFee(uint256)": FunctionFragment; - "setMaxFlashMintable(uint256)": FunctionFragment; "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; "setMinterStatus(address,bool)": FunctionFragment; "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; @@ -516,8 +511,6 @@ export interface BaseUSDOInterface extends utils.Interface { | "exerciseOption((address,address,uint256,uint256,address,uint256),(uint16,address,uint256),(bool,address,uint16,uint256,address,uint256),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -526,18 +519,14 @@ export interface BaseUSDOInterface extends utils.Interface { | "getTrustedRemoteAddress(uint16)" | "increaseAllowance" | "increaseAllowance(address,uint256)" + | "initMultiHopBuy" + | "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" | "isTrustedRemote" | "isTrustedRemote(uint16,bytes)" - | "leverageModule" - | "leverageModule()" | "lzEndpoint" | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "marketModule" - | "marketModule()" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -546,8 +535,6 @@ export interface BaseUSDOInterface extends utils.Interface { | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" | "nonces" | "nonces(address)" - | "optionsModule" - | "optionsModule()" | "owner" | "owner()" | "paused" @@ -576,14 +563,12 @@ export interface BaseUSDOInterface extends utils.Interface { | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" | "setBurnerStatus" | "setBurnerStatus(address,bool)" + | "setCluster" + | "setCluster(address)" | "setConfig" | "setConfig(uint16,uint16,uint256,bytes)" | "setConservator" | "setConservator(address)" - | "setFlashMintFee" - | "setFlashMintFee(uint256)" - | "setMaxFlashMintable" - | "setMaxFlashMintable(uint256)" | "setMinDstGas" | "setMinDstGas(uint16,uint16,uint256)" | "setMinterStatus" @@ -857,14 +842,6 @@ export interface BaseUSDOInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -908,20 +885,38 @@ export interface BaseUSDOInterface extends utils.Interface { values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "isTrustedRemote", - values: [PromiseOrValue, PromiseOrValue] + functionFragment: "initMultiHopBuy", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageLZDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] + ] ): string; encodeFunctionData( - functionFragment: "isTrustedRemote(uint16,bytes)", - values: [PromiseOrValue, PromiseOrValue] + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageLZDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] + ] ): string; encodeFunctionData( - functionFragment: "leverageModule", - values?: undefined + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "leverageModule()", - values?: undefined + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( functionFragment: "lzEndpoint", @@ -949,22 +944,6 @@ export interface BaseUSDOInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "marketModule", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "marketModule()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -1001,14 +980,6 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "nonces(address)", values: [PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "optionsModule", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "optionsModule()", - values?: undefined - ): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; encodeFunctionData(functionFragment: "owner()", values?: undefined): string; encodeFunctionData(functionFragment: "paused", values?: undefined): string; @@ -1208,6 +1179,14 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "setBurnerStatus(address,bool)", values: [PromiseOrValue, PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "setCluster", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setCluster(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setConfig", values: [ @@ -1234,22 +1213,6 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "setConservator(address)", values: [PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "setFlashMintFee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setFlashMintFee(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setMaxFlashMintable", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setMaxFlashMintable(uint256)", - values: [PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "setMinDstGas", values: [ @@ -1581,14 +1544,6 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -1619,19 +1574,19 @@ export interface BaseUSDOInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "isTrustedRemote", + functionFragment: "initMultiHopBuy", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "isTrustedRemote(uint16,bytes)", + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageModule", + functionFragment: "isTrustedRemote", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageModule()", + functionFragment: "isTrustedRemote(uint16,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; @@ -1644,22 +1599,6 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "marketModule", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "marketModule()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1683,14 +1622,6 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "nonces(address)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "optionsModule", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "optionsModule()", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; @@ -1776,33 +1707,22 @@ export interface BaseUSDOInterface extends utils.Interface { functionFragment: "setBurnerStatus(address,bool)", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setConfig(uint16,uint16,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setConservator", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setConservator(address)", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "setCluster", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "setFlashMintFee", + functionFragment: "setCluster(address)", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "setFlashMintFee(uint256)", + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMaxFlashMintable", + functionFragment: "setConservator", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMaxFlashMintable(uint256)", + functionFragment: "setConservator(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -1964,9 +1884,6 @@ export interface BaseUSDOInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1992,18 +1909,6 @@ export interface BaseUSDOInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -2088,42 +1993,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -2555,10 +2424,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2609,6 +2474,30 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2621,10 +2510,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise<[boolean]>; - leverageModule(overrides?: CallOverrides): Promise<[string]>; - - "leverageModule()"(overrides?: CallOverrides): Promise<[string]>; - lzEndpoint(overrides?: CallOverrides): Promise<[string]>; "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; @@ -2645,14 +2530,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise<[string]>; - - "marketModule()"(overrides?: CallOverrides): Promise<[string]>; - - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2695,10 +2572,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - optionsModule(overrides?: CallOverrides): Promise<[string]>; - - "optionsModule()"(overrides?: CallOverrides): Promise<[string]>; - owner(overrides?: CallOverrides): Promise<[string]>; "owner()"(overrides?: CallOverrides): Promise<[string]>; @@ -2897,6 +2770,16 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -2923,26 +2806,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMinDstGas( _dstChainId: PromiseOrValue, _packetType: PromiseOrValue, @@ -3378,10 +3241,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3432,6 +3291,30 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3444,10 +3327,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -3468,14 +3347,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3518,10 +3389,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -3720,6 +3587,16 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -3746,26 +3623,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMinDstGas( _dstChainId: PromiseOrValue, _packetType: PromiseOrValue, @@ -4203,10 +4060,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4257,6 +4110,30 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4269,10 +4146,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -4293,14 +4166,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4343,10 +4208,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -4541,6 +4402,16 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -4567,26 +4438,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - setMinDstGas( _dstChainId: PromiseOrValue, _packetType: PromiseOrValue, @@ -4823,33 +4674,6 @@ export interface BaseUSDO extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -5210,10 +5034,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -5264,6 +5084,30 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -5276,10 +5120,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -5300,14 +5140,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -5350,10 +5182,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -5552,6 +5380,16 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -5578,26 +5416,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMinDstGas( _dstChainId: PromiseOrValue, _packetType: PromiseOrValue, @@ -6036,10 +5854,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -6090,6 +5904,30 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -6102,12 +5940,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"( - overrides?: CallOverrides - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -6128,14 +5960,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -6178,10 +6002,6 @@ export interface BaseUSDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -6380,6 +6200,16 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -6406,26 +6236,6 @@ export interface BaseUSDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setMinDstGas( _dstChainId: PromiseOrValue, _packetType: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/BaseUSDOStorage.ts b/src/typechain/tapioca-bar/usd0/BaseUSDOStorage.ts index 6651d401..4b99329d 100644 --- a/src/typechain/tapioca-bar/usd0/BaseUSDOStorage.ts +++ b/src/typechain/tapioca-bar/usd0/BaseUSDOStorage.ts @@ -63,7 +63,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; @@ -71,7 +70,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { "isTrustedRemote(uint16,bytes)": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -145,8 +143,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -161,8 +157,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -426,14 +420,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -510,14 +496,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -930,14 +908,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -985,14 +955,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1194,9 +1156,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1222,18 +1181,6 @@ export interface BaseUSDOStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -1318,42 +1265,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -1763,10 +1674,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -1849,10 +1756,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2360,10 +2263,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2446,10 +2345,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2959,10 +2854,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3045,10 +2936,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3375,33 +3262,6 @@ export interface BaseUSDOStorage extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -3740,10 +3600,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3826,10 +3682,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4338,10 +4190,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4424,10 +4272,6 @@ export interface BaseUSDOStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/USDO.ts b/src/typechain/tapioca-bar/usd0/USDO.ts index 998b0549..5bc6c19d 100644 --- a/src/typechain/tapioca-bar/usd0/USDO.ts +++ b/src/typechain/tapioca-bar/usd0/USDO.ts @@ -96,7 +96,7 @@ export declare namespace ICommonData { export type IApprovalStruct = { permitAll: PromiseOrValue; allowFailure: PromiseOrValue; - approveOnYieldBox: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; actionType: PromiseOrValue; target: PromiseOrValue; permitBorrow: PromiseOrValue; @@ -126,7 +126,7 @@ export declare namespace ICommonData { ] & { permitAll: boolean; allowFailure: boolean; - approveOnYieldBox: boolean; + yieldBoxTypeApproval: boolean; actionType: number; target: string; permitBorrow: boolean; @@ -174,69 +174,61 @@ export declare namespace ICommonData { }; } -export declare namespace ITapiocaOptionsBroker { - export type IOptionsExitDataStruct = { - exit: PromiseOrValue; - target: PromiseOrValue; - oTAPTokenID: PromiseOrValue; +export declare namespace IUSDOBase { + export type ILeverageSwapDataStruct = { + tokenOut: PromiseOrValue; + amountOutMin: PromiseOrValue; + data: PromiseOrValue; }; - export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { - exit: boolean; - target: string; - oTAPTokenID: BigNumber; + export type ILeverageSwapDataStructOutput = [string, BigNumber, string] & { + tokenOut: string; + amountOutMin: BigNumber; + data: string; }; - export type IOptionsParticipateDataStruct = { - participate: PromiseOrValue; - target: PromiseOrValue; - tOLPTokenId: PromiseOrValue; + export type ILeverageLZDataStruct = { + srcExtraGasLimit: PromiseOrValue; + lzSrcChainId: PromiseOrValue; + lzDstChainId: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + dstAirdropAdapterParam: PromiseOrValue; + srcAirdropAdapterParam: PromiseOrValue; + refundAddress: PromiseOrValue; }; - export type IOptionsParticipateDataStructOutput = [ - boolean, + export type ILeverageLZDataStructOutput = [ + BigNumber, + number, + number, string, - BigNumber - ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; -} - -export declare namespace ITapiocaOptionLiquidityProvision { - export type IOptionsUnlockDataStruct = { - unlock: PromiseOrValue; - target: PromiseOrValue; - tokenId: PromiseOrValue; - }; - - export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { - unlock: boolean; - target: string; - tokenId: BigNumber; + string, + string, + string + ] & { + srcExtraGasLimit: BigNumber; + lzSrcChainId: number; + lzDstChainId: number; + zroPaymentAddress: string; + dstAirdropAdapterParam: string; + srcAirdropAdapterParam: string; + refundAddress: string; }; - export type IOptionsLockDataStruct = { - lock: PromiseOrValue; - target: PromiseOrValue; - lockDuration: PromiseOrValue; - amount: PromiseOrValue; - fraction: PromiseOrValue; + export type ILeverageExternalContractsDataStruct = { + swapper: PromiseOrValue; + magnetar: PromiseOrValue; + tOft: PromiseOrValue; + srcMarket: PromiseOrValue; }; - export type IOptionsLockDataStructOutput = [ - boolean, + export type ILeverageExternalContractsDataStructOutput = [ string, - BigNumber, - BigNumber, - BigNumber - ] & { - lock: boolean; - target: string; - lockDuration: BigNumber; - amount: BigNumber; - fraction: BigNumber; - }; -} + string, + string, + string + ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; -export declare namespace IUSDOBase { export type IRemoveAndRepayStruct = { removeAssetFromSGL: PromiseOrValue; removeAmount: PromiseOrValue; @@ -307,60 +299,68 @@ export declare namespace IUSDOBase { lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput; participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput; }; +} - export type ILeverageLZDataStruct = { - srcExtraGasLimit: PromiseOrValue; - lzSrcChainId: PromiseOrValue; - lzDstChainId: PromiseOrValue; - zroPaymentAddress: PromiseOrValue; - dstAirdropAdapterParam: PromiseOrValue; - srcAirdropAdapterParam: PromiseOrValue; - refundAddress: PromiseOrValue; +export declare namespace ITapiocaOptionsBroker { + export type IOptionsExitDataStruct = { + exit: PromiseOrValue; + target: PromiseOrValue; + oTAPTokenID: PromiseOrValue; }; - export type ILeverageLZDataStructOutput = [ - BigNumber, - number, - number, - string, - string, - string, - string - ] & { - srcExtraGasLimit: BigNumber; - lzSrcChainId: number; - lzDstChainId: number; - zroPaymentAddress: string; - dstAirdropAdapterParam: string; - srcAirdropAdapterParam: string; - refundAddress: string; + export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { + exit: boolean; + target: string; + oTAPTokenID: BigNumber; }; - export type ILeverageSwapDataStruct = { - tokenOut: PromiseOrValue; - amountOutMin: PromiseOrValue; - data: PromiseOrValue; + export type IOptionsParticipateDataStruct = { + participate: PromiseOrValue; + target: PromiseOrValue; + tOLPTokenId: PromiseOrValue; }; - export type ILeverageSwapDataStructOutput = [string, BigNumber, string] & { - tokenOut: string; - amountOutMin: BigNumber; - data: string; + export type IOptionsParticipateDataStructOutput = [ + boolean, + string, + BigNumber + ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; +} + +export declare namespace ITapiocaOptionLiquidityProvision { + export type IOptionsUnlockDataStruct = { + unlock: PromiseOrValue; + target: PromiseOrValue; + tokenId: PromiseOrValue; }; - export type ILeverageExternalContractsDataStruct = { - swapper: PromiseOrValue; - magnetar: PromiseOrValue; - tOft: PromiseOrValue; - srcMarket: PromiseOrValue; + export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { + unlock: boolean; + target: string; + tokenId: BigNumber; }; - export type ILeverageExternalContractsDataStructOutput = [ - string, - string, + export type IOptionsLockDataStruct = { + lock: PromiseOrValue; + target: PromiseOrValue; + lockDuration: PromiseOrValue; + amount: PromiseOrValue; + fraction: PromiseOrValue; + }; + + export type IOptionsLockDataStructOutput = [ + boolean, string, - string - ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; + BigNumber, + BigNumber, + BigNumber + ] & { + lock: boolean; + target: string; + lockDuration: BigNumber; + amount: BigNumber; + fraction: BigNumber; + }; } export declare namespace ICommonOFT { @@ -398,6 +398,7 @@ export interface USDOInterface extends utils.Interface { "NO_EXTRA_GAS()": FunctionFragment; "PT_SEND()": FunctionFragment; "PT_SEND_AND_CALL()": FunctionFragment; + "addFlashloanFee(uint256)": FunctionFragment; "allowance(address,address)": FunctionFragment; "allowedBurner(uint256,address)": FunctionFragment; "allowedMinter(uint256,address)": FunctionFragment; @@ -416,26 +417,20 @@ export interface USDOInterface extends utils.Interface { "exerciseOption((address,address,uint256,uint256,address,uint256),(uint16,address,uint256),(bool,address,uint16,uint256,address,uint256),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],bytes)": FunctionFragment; "extractFees()": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashFee(address,uint256)": FunctionFragment; - "flashLoan(address,address,uint256,bytes)": FunctionFragment; - "flashMintFee()": FunctionFragment; + "flashLoanHelper()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; "isTrustedRemote(uint16,bytes)": FunctionFragment; - "leverageModule()": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "marketModule()": FunctionFragment; - "maxFlashLoan(address)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "mint(address,uint256)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; "nonces(address)": FunctionFragment; - "optionsModule()": FunctionFragment; "owner()": FunctionFragment; "paused()": FunctionFragment; "payloadSizeLimitLookup(uint16)": FunctionFragment; @@ -450,10 +445,10 @@ export interface USDOInterface extends utils.Interface { "sendForLeverage(uint256,address,(uint256,uint16,uint16,address,bytes,bytes,address),(address,uint256,bytes),(address,address,address,address))": FunctionFragment; "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; "setBurnerStatus(address,bool)": FunctionFragment; + "setCluster(address)": FunctionFragment; "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; "setConservator(address)": FunctionFragment; - "setFlashMintFee(uint256)": FunctionFragment; - "setMaxFlashMintable(uint256)": FunctionFragment; + "setFlashloanHelper(address)": FunctionFragment; "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; "setMinterStatus(address,bool)": FunctionFragment; "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; @@ -490,6 +485,8 @@ export interface USDOInterface extends utils.Interface { | "PT_SEND()" | "PT_SEND_AND_CALL" | "PT_SEND_AND_CALL()" + | "addFlashloanFee" + | "addFlashloanFee(uint256)" | "allowance" | "allowance(address,address)" | "allowedBurner" @@ -526,12 +523,8 @@ export interface USDOInterface extends utils.Interface { | "extractFees()" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashFee" - | "flashFee(address,uint256)" - | "flashLoan" - | "flashLoan(address,address,uint256,bytes)" - | "flashMintFee" - | "flashMintFee()" + | "flashLoanHelper" + | "flashLoanHelper()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -540,20 +533,14 @@ export interface USDOInterface extends utils.Interface { | "getTrustedRemoteAddress(uint16)" | "increaseAllowance" | "increaseAllowance(address,uint256)" + | "initMultiHopBuy" + | "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" | "isTrustedRemote" | "isTrustedRemote(uint16,bytes)" - | "leverageModule" - | "leverageModule()" | "lzEndpoint" | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "marketModule" - | "marketModule()" - | "maxFlashLoan" - | "maxFlashLoan(address)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "mint" @@ -564,8 +551,6 @@ export interface USDOInterface extends utils.Interface { | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" | "nonces" | "nonces(address)" - | "optionsModule" - | "optionsModule()" | "owner" | "owner()" | "paused" @@ -594,14 +579,14 @@ export interface USDOInterface extends utils.Interface { | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" | "setBurnerStatus" | "setBurnerStatus(address,bool)" + | "setCluster" + | "setCluster(address)" | "setConfig" | "setConfig(uint16,uint16,uint256,bytes)" | "setConservator" | "setConservator(address)" - | "setFlashMintFee" - | "setFlashMintFee(uint256)" - | "setMaxFlashMintable" - | "setMaxFlashMintable(uint256)" + | "setFlashloanHelper" + | "setFlashloanHelper(address)" | "setMinDstGas" | "setMinDstGas(uint16,uint16,uint256)" | "setMinterStatus" @@ -682,6 +667,14 @@ export interface USDOInterface extends utils.Interface { functionFragment: "PT_SEND_AND_CALL()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "addFlashloanFee", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "addFlashloanFee(uint256)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "allowance", values: [PromiseOrValue, PromiseOrValue] @@ -892,37 +885,11 @@ export interface USDOInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "flashFee", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "flashFee(address,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "flashLoan", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "flashLoan(address,address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "flashMintFee", + functionFragment: "flashLoanHelper", values?: undefined ): string; encodeFunctionData( - functionFragment: "flashMintFee()", + functionFragment: "flashLoanHelper()", values?: undefined ): string; encodeFunctionData( @@ -968,20 +935,38 @@ export interface USDOInterface extends utils.Interface { values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "isTrustedRemote", - values: [PromiseOrValue, PromiseOrValue] + functionFragment: "initMultiHopBuy", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageLZDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] + ] ): string; encodeFunctionData( - functionFragment: "isTrustedRemote(uint16,bytes)", - values: [PromiseOrValue, PromiseOrValue] + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageLZDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] + ] ): string; encodeFunctionData( - functionFragment: "leverageModule", - values?: undefined + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "leverageModule()", - values?: undefined + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( functionFragment: "lzEndpoint", @@ -1009,30 +994,6 @@ export interface USDOInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "marketModule", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "marketModule()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashLoan", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "maxFlashLoan(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -1077,14 +1038,6 @@ export interface USDOInterface extends utils.Interface { functionFragment: "nonces(address)", values: [PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "optionsModule", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "optionsModule()", - values?: undefined - ): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; encodeFunctionData(functionFragment: "owner()", values?: undefined): string; encodeFunctionData(functionFragment: "paused", values?: undefined): string; @@ -1284,6 +1237,14 @@ export interface USDOInterface extends utils.Interface { functionFragment: "setBurnerStatus(address,bool)", values: [PromiseOrValue, PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "setCluster", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setCluster(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setConfig", values: [ @@ -1311,20 +1272,12 @@ export interface USDOInterface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "setFlashMintFee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setFlashMintFee(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setMaxFlashMintable", - values: [PromiseOrValue] + functionFragment: "setFlashloanHelper", + values: [PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "setMaxFlashMintable(uint256)", - values: [PromiseOrValue] + functionFragment: "setFlashloanHelper(address)", + values: [PromiseOrValue] ): string; encodeFunctionData( functionFragment: "setMinDstGas", @@ -1550,6 +1503,14 @@ export interface USDOInterface extends utils.Interface { functionFragment: "PT_SEND_AND_CALL()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "addFlashloanFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "addFlashloanFee(uint256)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult( functionFragment: "allowance(address,address)", @@ -1670,22 +1631,12 @@ export interface USDOInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "flashFee", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "flashFee(address,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "flashLoan", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "flashLoan(address,address,uint256,bytes)", - data: BytesLike - ): Result; decodeFunctionResult( - functionFragment: "flashMintFee", + functionFragment: "flashLoanHelper", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "flashMintFee()", + functionFragment: "flashLoanHelper()", data: BytesLike ): Result; decodeFunctionResult( @@ -1718,19 +1669,19 @@ export interface USDOInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "isTrustedRemote", + functionFragment: "initMultiHopBuy", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "isTrustedRemote(uint16,bytes)", + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageModule", + functionFragment: "isTrustedRemote", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageModule()", + functionFragment: "isTrustedRemote(uint16,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; @@ -1743,30 +1694,6 @@ export interface USDOInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "marketModule", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "marketModule()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashLoan", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashLoan(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1795,14 +1722,6 @@ export interface USDOInterface extends utils.Interface { functionFragment: "nonces(address)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "optionsModule", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "optionsModule()", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; @@ -1888,6 +1807,11 @@ export interface USDOInterface extends utils.Interface { functionFragment: "setBurnerStatus(address,bool)", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "setCluster", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setCluster(address)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setConfig(uint16,uint16,uint256,bytes)", @@ -1902,19 +1826,11 @@ export interface USDOInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setFlashMintFee", + functionFragment: "setFlashloanHelper", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setFlashMintFee(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setMaxFlashMintable", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setMaxFlashMintable(uint256)", + functionFragment: "setFlashloanHelper(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -2076,9 +1992,6 @@ export interface USDOInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -2104,18 +2017,6 @@ export interface USDOInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -2200,42 +2101,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -2463,6 +2328,16 @@ export interface USDO extends BaseContract { "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise<[number]>; + addFlashloanFee( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "addFlashloanFee(uint256)"( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + allowance( owner: PromiseOrValue, spender: PromiseOrValue, @@ -2687,37 +2562,9 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashFee( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; + flashLoanHelper(overrides?: CallOverrides): Promise<[string]>; - "flashFee(address,uint256)"( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - flashLoan( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "flashLoan(address,address,uint256,bytes)"( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + "flashLoanHelper()"(overrides?: CallOverrides): Promise<[string]>; forceResumeReceive( _srcChainId: PromiseOrValue, @@ -2769,6 +2616,30 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2781,10 +2652,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise<[boolean]>; - leverageModule(overrides?: CallOverrides): Promise<[string]>; - - "leverageModule()"(overrides?: CallOverrides): Promise<[string]>; - lzEndpoint(overrides?: CallOverrides): Promise<[string]>; "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; @@ -2805,24 +2672,6 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise<[string]>; - - "marketModule()"(overrides?: CallOverrides): Promise<[string]>; - - maxFlashLoan( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - "maxFlashLoan(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2877,10 +2726,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - optionsModule(overrides?: CallOverrides): Promise<[string]>; - - "optionsModule()"(overrides?: CallOverrides): Promise<[string]>; - owner(overrides?: CallOverrides): Promise<[string]>; "owner()"(overrides?: CallOverrides): Promise<[string]>; @@ -3079,6 +2924,16 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -3105,23 +2960,13 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, + setFlashloanHelper( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, + "setFlashloanHelper(address)"( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3356,6 +3201,16 @@ export interface USDO extends BaseContract { "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + addFlashloanFee( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "addFlashloanFee(uint256)"( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + allowance( owner: PromiseOrValue, spender: PromiseOrValue, @@ -3568,49 +3423,21 @@ export interface USDO extends BaseContract { failedMessages( arg0: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "failedMessages(uint16,bytes,uint64)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - flashFee( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "flashFee(address,uint256)"( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - flashLoan( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; - "flashLoan(address,address,uint256,bytes)"( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; + flashLoanHelper(overrides?: CallOverrides): Promise; - "flashMintFee()"(overrides?: CallOverrides): Promise; + "flashLoanHelper()"(overrides?: CallOverrides): Promise; forceResumeReceive( _srcChainId: PromiseOrValue, @@ -3662,6 +3489,30 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3674,10 +3525,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -3698,24 +3545,6 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashLoan( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "maxFlashLoan(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3770,10 +3599,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -3972,6 +3797,16 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -3998,23 +3833,13 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, + setFlashloanHelper( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, + "setFlashloanHelper(address)"( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4251,6 +4076,16 @@ export interface USDO extends BaseContract { "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + addFlashloanFee( + _fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "addFlashloanFee(uint256)"( + _fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + allowance( owner: PromiseOrValue, spender: PromiseOrValue, @@ -4471,37 +4306,9 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashFee( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "flashFee(address,uint256)"( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - flashLoan( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "flashLoan(address,address,uint256,bytes)"( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - flashMintFee(overrides?: CallOverrides): Promise; + flashLoanHelper(overrides?: CallOverrides): Promise; - "flashMintFee()"(overrides?: CallOverrides): Promise; + "flashLoanHelper()"(overrides?: CallOverrides): Promise; forceResumeReceive( _srcChainId: PromiseOrValue, @@ -4553,6 +4360,30 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4565,10 +4396,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -4589,24 +4416,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashLoan( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "maxFlashLoan(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4661,10 +4470,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -4859,6 +4664,16 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -4885,23 +4700,13 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, + setFlashloanHelper( + _helper: PromiseOrValue, overrides?: CallOverrides ): Promise; - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, + "setFlashloanHelper(address)"( + _helper: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -5141,33 +4946,6 @@ export interface USDO extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -5332,6 +5110,16 @@ export interface USDO extends BaseContract { "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + addFlashloanFee( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "addFlashloanFee(uint256)"( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + allowance( owner: PromiseOrValue, spender: PromiseOrValue, @@ -5548,37 +5336,9 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashFee( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "flashFee(address,uint256)"( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - flashLoan( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "flashLoan(address,address,uint256,bytes)"( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - flashMintFee(overrides?: CallOverrides): Promise; + flashLoanHelper(overrides?: CallOverrides): Promise; - "flashMintFee()"(overrides?: CallOverrides): Promise; + "flashLoanHelper()"(overrides?: CallOverrides): Promise; forceResumeReceive( _srcChainId: PromiseOrValue, @@ -5630,6 +5390,30 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -5642,10 +5426,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"(overrides?: CallOverrides): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -5666,24 +5446,6 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashLoan( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "maxFlashLoan(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -5738,10 +5500,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -5940,6 +5698,16 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -5966,23 +5734,13 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, + setFlashloanHelper( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, + "setFlashloanHelper(address)"( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -6226,6 +5984,16 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; + addFlashloanFee( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "addFlashloanFee(uint256)"( + _fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + allowance( owner: PromiseOrValue, spender: PromiseOrValue, @@ -6444,38 +6212,12 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - flashFee( - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; + flashLoanHelper(overrides?: CallOverrides): Promise; - "flashFee(address,uint256)"( - token: PromiseOrValue, - amount: PromiseOrValue, + "flashLoanHelper()"( overrides?: CallOverrides ): Promise; - flashLoan( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "flashLoan(address,address,uint256,bytes)"( - receiver: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -6526,6 +6268,30 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -6538,12 +6304,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - leverageModule(overrides?: CallOverrides): Promise; - - "leverageModule()"( - overrides?: CallOverrides - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -6564,24 +6324,6 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - marketModule(overrides?: CallOverrides): Promise; - - "marketModule()"(overrides?: CallOverrides): Promise; - - maxFlashLoan( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "maxFlashLoan(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -6636,10 +6378,6 @@ export interface USDO extends BaseContract { overrides?: CallOverrides ): Promise; - optionsModule(overrides?: CallOverrides): Promise; - - "optionsModule()"(overrides?: CallOverrides): Promise; - owner(overrides?: CallOverrides): Promise; "owner()"(overrides?: CallOverrides): Promise; @@ -6838,6 +6576,16 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -6864,23 +6612,13 @@ export interface USDO extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - setFlashMintFee( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "setFlashMintFee(uint256)"( - _val: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxFlashMintable( - _val: PromiseOrValue, + setFlashloanHelper( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMaxFlashMintable(uint256)"( - _val: PromiseOrValue, + "setFlashloanHelper(address)"( + _helper: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/typechain/tapioca-bar/usd0/USDOFlashloanHelper.ts b/src/typechain/tapioca-bar/usd0/USDOFlashloanHelper.ts new file mode 100644 index 00000000..f371813f --- /dev/null +++ b/src/typechain/tapioca-bar/usd0/USDOFlashloanHelper.ts @@ -0,0 +1,1024 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface USDOFlashloanHelperInterface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "claimOwnership()": FunctionFragment; + "flashFee(address,uint256)": FunctionFragment; + "flashLoan(address,address,uint256,bytes)": FunctionFragment; + "flashMintFee()": FunctionFragment; + "maxFlashLoan(address)": FunctionFragment; + "maxFlashMint()": FunctionFragment; + "owner()": FunctionFragment; + "pendingOwner()": FunctionFragment; + "setFlashMintFee(uint256)": FunctionFragment; + "setMaxFlashMintable(uint256)": FunctionFragment; + "transferOwnership(address,bool,bool)": FunctionFragment; + "usdo()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "allowance(address,address)" + | "approve" + | "approve(address,uint256)" + | "claimOwnership" + | "claimOwnership()" + | "flashFee" + | "flashFee(address,uint256)" + | "flashLoan" + | "flashLoan(address,address,uint256,bytes)" + | "flashMintFee" + | "flashMintFee()" + | "maxFlashLoan" + | "maxFlashLoan(address)" + | "maxFlashMint" + | "maxFlashMint()" + | "owner" + | "owner()" + | "pendingOwner" + | "pendingOwner()" + | "setFlashMintFee" + | "setFlashMintFee(uint256)" + | "setMaxFlashMintable" + | "setMaxFlashMintable(uint256)" + | "transferOwnership" + | "transferOwnership(address,bool,bool)" + | "usdo" + | "usdo()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "claimOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "claimOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "flashFee", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "flashFee(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "flashLoan", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "flashLoan(address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "flashMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "flashMintFee()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxFlashLoan", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "maxFlashLoan(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "maxFlashMint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxFlashMint()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData( + functionFragment: "pendingOwner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "pendingOwner()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setFlashMintFee", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setFlashMintFee(uint256)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMaxFlashMintable", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMaxFlashMintable(uint256)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address,bool,bool)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "usdo", values?: undefined): string; + encodeFunctionData(functionFragment: "usdo()", values?: undefined): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "flashFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "flashFee(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "flashLoan", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "flashLoan(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "flashMintFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "flashMintFee()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxFlashLoan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxFlashLoan(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxFlashMint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxFlashMint()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pendingOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "pendingOwner()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFlashMintFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFlashMintFee(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxFlashMintable", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxFlashMintable(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address,bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "usdo", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "usdo()", data: BytesLike): Result; + + events: { + "FlashMintFeeUpdated(uint256,uint256)": EventFragment; + "MaxFlashMintUpdated(uint256,uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; +} + +export interface FlashMintFeeUpdatedEventObject { + _old: BigNumber; + _new: BigNumber; +} +export type FlashMintFeeUpdatedEvent = TypedEvent< + [BigNumber, BigNumber], + FlashMintFeeUpdatedEventObject +>; + +export type FlashMintFeeUpdatedEventFilter = + TypedEventFilter; + +export interface MaxFlashMintUpdatedEventObject { + _old: BigNumber; + _new: BigNumber; +} +export type MaxFlashMintUpdatedEvent = TypedEvent< + [BigNumber, BigNumber], + MaxFlashMintUpdatedEventObject +>; + +export type MaxFlashMintUpdatedEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface USDOFlashloanHelper extends BaseContract { + contractName: "USDOFlashloanHelper"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: USDOFlashloanHelperInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashFee( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "flashFee(address,uint256)"( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + flashLoan( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "flashLoan(address,address,uint256,bytes)"( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxFlashLoan( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "maxFlashLoan(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + pendingOwner(overrides?: CallOverrides): Promise<[string]>; + + "pendingOwner()"(overrides?: CallOverrides): Promise<[string]>; + + setFlashMintFee( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setFlashMintFee(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlashMintable( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMaxFlashMintable(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + usdo(overrides?: CallOverrides): Promise<[string]>; + + "usdo()"(overrides?: CallOverrides): Promise<[string]>; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashFee( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "flashFee(address,uint256)"( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + flashLoan( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "flashLoan(address,address,uint256,bytes)"( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashMintFee(overrides?: CallOverrides): Promise; + + "flashMintFee()"(overrides?: CallOverrides): Promise; + + maxFlashLoan( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "maxFlashLoan(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxFlashMint(overrides?: CallOverrides): Promise; + + "maxFlashMint()"(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setFlashMintFee( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setFlashMintFee(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlashMintable( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMaxFlashMintable(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + usdo(overrides?: CallOverrides): Promise; + + "usdo()"(overrides?: CallOverrides): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + claimOwnership(overrides?: CallOverrides): Promise; + + "claimOwnership()"(overrides?: CallOverrides): Promise; + + flashFee( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "flashFee(address,uint256)"( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + flashLoan( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "flashLoan(address,address,uint256,bytes)"( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + flashMintFee(overrides?: CallOverrides): Promise; + + "flashMintFee()"(overrides?: CallOverrides): Promise; + + maxFlashLoan( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "maxFlashLoan(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxFlashMint(overrides?: CallOverrides): Promise; + + "maxFlashMint()"(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setFlashMintFee( + _val: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setFlashMintFee(uint256)"( + _val: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxFlashMintable( + _val: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMaxFlashMintable(uint256)"( + _val: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + usdo(overrides?: CallOverrides): Promise; + + "usdo()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "FlashMintFeeUpdated(uint256,uint256)"( + _old?: null, + _new?: null + ): FlashMintFeeUpdatedEventFilter; + FlashMintFeeUpdated( + _old?: null, + _new?: null + ): FlashMintFeeUpdatedEventFilter; + + "MaxFlashMintUpdated(uint256,uint256)"( + _old?: null, + _new?: null + ): MaxFlashMintUpdatedEventFilter; + MaxFlashMintUpdated( + _old?: null, + _new?: null + ): MaxFlashMintUpdatedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashFee( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "flashFee(address,uint256)"( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + flashLoan( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "flashLoan(address,address,uint256,bytes)"( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashMintFee(overrides?: CallOverrides): Promise; + + "flashMintFee()"(overrides?: CallOverrides): Promise; + + maxFlashLoan( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "maxFlashLoan(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxFlashMint(overrides?: CallOverrides): Promise; + + "maxFlashMint()"(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setFlashMintFee( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setFlashMintFee(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlashMintable( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMaxFlashMintable(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + usdo(overrides?: CallOverrides): Promise; + + "usdo()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashFee( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "flashFee(address,uint256)"( + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + flashLoan( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "flashLoan(address,address,uint256,bytes)"( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flashMintFee(overrides?: CallOverrides): Promise; + + "flashMintFee()"(overrides?: CallOverrides): Promise; + + maxFlashLoan( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "maxFlashLoan(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxFlashMint(overrides?: CallOverrides): Promise; + + "maxFlashMint()"(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setFlashMintFee( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setFlashMintFee(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlashMintable( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMaxFlashMintable(uint256)"( + _val: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + usdo(overrides?: CallOverrides): Promise; + + "usdo()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/usd0/index.ts b/src/typechain/tapioca-bar/usd0/index.ts index 6d688132..365886aa 100644 --- a/src/typechain/tapioca-bar/usd0/index.ts +++ b/src/typechain/tapioca-bar/usd0/index.ts @@ -6,3 +6,4 @@ export type { modules }; export type { BaseUSDO } from "./BaseUSDO"; export type { BaseUSDOStorage } from "./BaseUSDOStorage"; export type { USDO } from "./USDO"; +export type { USDOFlashloanHelper } from "./USDOFlashloanHelper"; diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOCommon.ts b/src/typechain/tapioca-bar/usd0/modules/USDOCommon.ts index d9ca781a..5717003e 100644 --- a/src/typechain/tapioca-bar/usd0/modules/USDOCommon.ts +++ b/src/typechain/tapioca-bar/usd0/modules/USDOCommon.ts @@ -63,7 +63,6 @@ export interface USDOCommonInterface extends utils.Interface { "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; @@ -71,7 +70,6 @@ export interface USDOCommonInterface extends utils.Interface { "isTrustedRemote(uint16,bytes)": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -145,8 +143,6 @@ export interface USDOCommonInterface extends utils.Interface { | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -161,8 +157,6 @@ export interface USDOCommonInterface extends utils.Interface { | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -426,14 +420,6 @@ export interface USDOCommonInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -510,14 +496,6 @@ export interface USDOCommonInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -930,14 +908,6 @@ export interface USDOCommonInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -985,14 +955,6 @@ export interface USDOCommonInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1194,9 +1156,6 @@ export interface USDOCommonInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1222,18 +1181,6 @@ export interface USDOCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -1318,42 +1265,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -1763,10 +1674,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -1849,10 +1756,6 @@ export interface USDOCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2360,10 +2263,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2446,10 +2345,6 @@ export interface USDOCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2959,10 +2854,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3045,10 +2936,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3375,33 +3262,6 @@ export interface USDOCommon extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -3740,10 +3600,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3826,10 +3682,6 @@ export interface USDOCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4338,10 +4190,6 @@ export interface USDOCommon extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4424,10 +4272,6 @@ export interface USDOCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOGenericModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOGenericModule.ts new file mode 100644 index 00000000..9c248387 --- /dev/null +++ b/src/typechain/tapioca-bar/usd0/modules/USDOGenericModule.ts @@ -0,0 +1,4889 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace ICommonOFT { + export type LzCallParamsStruct = { + refundAddress: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + adapterParams: PromiseOrValue; + }; + + export type LzCallParamsStructOutput = [string, string, string] & { + refundAddress: string; + zroPaymentAddress: string; + adapterParams: string; + }; +} + +export declare namespace ISendFrom { + export type LzCallParamsStruct = { + refundAddress: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + adapterParams: PromiseOrValue; + }; + + export type LzCallParamsStructOutput = [string, string, string] & { + refundAddress: string; + zroPaymentAddress: string; + adapterParams: string; + }; +} + +export declare namespace ICommonData { + export type IApprovalStruct = { + permitAll: PromiseOrValue; + allowFailure: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; + actionType: PromiseOrValue; + target: PromiseOrValue; + permitBorrow: PromiseOrValue; + owner: PromiseOrValue; + spender: PromiseOrValue; + value: PromiseOrValue; + deadline: PromiseOrValue; + v: PromiseOrValue; + r: PromiseOrValue; + s: PromiseOrValue; + }; + + export type IApprovalStructOutput = [ + boolean, + boolean, + boolean, + number, + string, + boolean, + string, + string, + BigNumber, + BigNumber, + number, + string, + string + ] & { + permitAll: boolean; + allowFailure: boolean; + yieldBoxTypeApproval: boolean; + actionType: number; + target: string; + permitBorrow: boolean; + owner: string; + spender: string; + value: BigNumber; + deadline: BigNumber; + v: number; + r: string; + s: string; + }; +} + +export interface USDOGenericModuleInterface extends utils.Interface { + functions: { + "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment; + "NO_EXTRA_GAS()": FunctionFragment; + "PT_SEND()": FunctionFragment; + "PT_SEND_AND_CALL()": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "allowedBurner(uint256,address)": FunctionFragment; + "allowedMinter(uint256,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)": FunctionFragment; + "circulatingSupply()": FunctionFragment; + "cluster()": FunctionFragment; + "conservator()": FunctionFragment; + "creditedPackets(uint16,bytes,uint64)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; + "failedMessages(uint16,bytes,uint64)": FunctionFragment; + "forceResumeReceive(uint16,bytes)": FunctionFragment; + "getConfig(uint16,uint16,address,uint256)": FunctionFragment; + "getTrustedRemoteAddress(uint16)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "isTrustedRemote(uint16,bytes)": FunctionFragment; + "lzEndpoint()": FunctionFragment; + "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "minDstGasLookup(uint16,uint16)": FunctionFragment; + "name()": FunctionFragment; + "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "paused()": FunctionFragment; + "payloadSizeLimitLookup(uint16)": FunctionFragment; + "precrime()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment; + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; + "sendFromDestination(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; + "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; + "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; + "setPrecrime(address)": FunctionFragment; + "setReceiveVersion(uint16)": FunctionFragment; + "setSendVersion(uint16)": FunctionFragment; + "setTrustedRemote(uint16,bytes)": FunctionFragment; + "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment; + "setUseCustomAdapterParams(bool)": FunctionFragment; + "sharedDecimals()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "token()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; + "trustedRemoteLookup(uint16)": FunctionFragment; + "useCustomAdapterParams()": FunctionFragment; + "yieldBox()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "DEFAULT_PAYLOAD_SIZE_LIMIT" + | "DEFAULT_PAYLOAD_SIZE_LIMIT()" + | "NO_EXTRA_GAS" + | "NO_EXTRA_GAS()" + | "PT_SEND" + | "PT_SEND()" + | "PT_SEND_AND_CALL" + | "PT_SEND_AND_CALL()" + | "allowance" + | "allowance(address,address)" + | "allowedBurner" + | "allowedBurner(uint256,address)" + | "allowedMinter" + | "allowedMinter(uint256,address)" + | "approve" + | "approve(address,uint256)" + | "balanceOf" + | "balanceOf(address)" + | "callOnOFTReceived" + | "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)" + | "circulatingSupply" + | "circulatingSupply()" + | "cluster" + | "cluster()" + | "conservator" + | "conservator()" + | "creditedPackets" + | "creditedPackets(uint16,bytes,uint64)" + | "decimals" + | "decimals()" + | "decreaseAllowance" + | "decreaseAllowance(address,uint256)" + | "estimateSendAndCallFee" + | "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)" + | "estimateSendFee" + | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" + | "failedMessages" + | "failedMessages(uint16,bytes,uint64)" + | "forceResumeReceive" + | "forceResumeReceive(uint16,bytes)" + | "getConfig" + | "getConfig(uint16,uint16,address,uint256)" + | "getTrustedRemoteAddress" + | "getTrustedRemoteAddress(uint16)" + | "increaseAllowance" + | "increaseAllowance(address,uint256)" + | "isTrustedRemote" + | "isTrustedRemote(uint16,bytes)" + | "lzEndpoint" + | "lzEndpoint()" + | "lzReceive" + | "lzReceive(uint16,bytes,uint64,bytes)" + | "minDstGasLookup" + | "minDstGasLookup(uint16,uint16)" + | "name" + | "name()" + | "nonblockingLzReceive" + | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" + | "owner" + | "owner()" + | "paused" + | "paused()" + | "payloadSizeLimitLookup" + | "payloadSizeLimitLookup(uint16)" + | "precrime" + | "precrime()" + | "renounceOwnership" + | "renounceOwnership()" + | "retryMessage" + | "retryMessage(uint16,bytes,uint64,bytes)" + | "sendAndCall" + | "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))" + | "sendFrom" + | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" + | "sendFromDestination" + | "sendFromDestination(address,uint16,bytes,uint64,bytes)" + | "setConfig" + | "setConfig(uint16,uint16,uint256,bytes)" + | "setMinDstGas" + | "setMinDstGas(uint16,uint16,uint256)" + | "setPayloadSizeLimit" + | "setPayloadSizeLimit(uint16,uint256)" + | "setPrecrime" + | "setPrecrime(address)" + | "setReceiveVersion" + | "setReceiveVersion(uint16)" + | "setSendVersion" + | "setSendVersion(uint16)" + | "setTrustedRemote" + | "setTrustedRemote(uint16,bytes)" + | "setTrustedRemoteAddress" + | "setTrustedRemoteAddress(uint16,bytes)" + | "setUseCustomAdapterParams" + | "setUseCustomAdapterParams(bool)" + | "sharedDecimals" + | "sharedDecimals()" + | "supportsInterface" + | "supportsInterface(bytes4)" + | "symbol" + | "symbol()" + | "token" + | "token()" + | "totalSupply" + | "totalSupply()" + | "transfer" + | "transfer(address,uint256)" + | "transferFrom" + | "transferFrom(address,address,uint256)" + | "transferOwnership" + | "transferOwnership(address)" + | "triggerSendFrom" + | "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" + | "trustedRemoteLookup" + | "trustedRemoteLookup(uint16)" + | "useCustomAdapterParams" + | "useCustomAdapterParams()" + | "yieldBox" + | "yieldBox()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "PT_SEND", values?: undefined): string; + encodeFunctionData(functionFragment: "PT_SEND()", values?: undefined): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "cluster", values?: undefined): string; + encodeFunctionData(functionFragment: "cluster()", values?: undefined): string; + encodeFunctionData( + functionFragment: "conservator", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "conservator()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "creditedPackets", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup(uint16,uint16)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "name()", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData(functionFragment: "paused()", values?: undefined): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "precrime", values?: undefined): string; + encodeFunctionData( + functionFragment: "precrime()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "retryMessage", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFromDestination", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "sendFromDestination(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams(bool)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface(bytes4)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData(functionFragment: "token()", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "triggerSendFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ISendFrom.LzCallParamsStruct, + ICommonData.IApprovalStruct[] + ] + ): string; + encodeFunctionData( + functionFragment: "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ISendFrom.LzCallParamsStruct, + ICommonData.IApprovalStruct[] + ] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "yieldBox", values?: undefined): string; + encodeFunctionData( + functionFragment: "yieldBox()", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "PT_SEND", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "PT_SEND()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "cluster", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "cluster()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "conservator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "conservator()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzEndpoint()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup(uint16,uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "precrime()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "sendFrom", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendFromDestination", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendFromDestination(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface(bytes4)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transfer(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "triggerSendFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "yieldBox", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "yieldBox()", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; + "NonContractAddress(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PausedUpdated(bool,bool)": EventFragment; + "ReceiveFromChain(uint16,address,uint256)": EventFragment; + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "SendToChain(uint16,address,bytes32,uint256)": EventFragment; + "SetBurnerStatus(address,bool)": EventFragment; + "SetMinDstGas(uint16,uint16,uint256)": EventFragment; + "SetMinterStatus(address,bool)": EventFragment; + "SetPrecrime(address)": EventFragment; + "SetTrustedRemote(uint16,bytes)": EventFragment; + "SetTrustedRemoteAddress(uint16,bytes)": EventFragment; + "SetUseCustomAdapterParams(bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Approval(address,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "CallOFTReceivedSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "NonContractAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "NonContractAddress(address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated(bool,bool)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ReceiveFromChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "ReceiveFromChain(uint16,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "RetryMessageSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SendToChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SendToChain(uint16,address,bytes32,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetBurnerStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetBurnerStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinDstGas(uint16,uint16,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinterStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinterStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime(address)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemote(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemoteAddress(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetUseCustomAdapterParams"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetUseCustomAdapterParams(bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Transfer(address,address,uint256)" + ): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface CallOFTReceivedSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _hash: string; +} +export type CallOFTReceivedSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + CallOFTReceivedSuccessEventObject +>; + +export type CallOFTReceivedSuccessEventFilter = + TypedEventFilter; + +export interface MessageFailedEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payload: string; + _reason: string; +} +export type MessageFailedEvent = TypedEvent< + [number, string, BigNumber, string, string], + MessageFailedEventObject +>; + +export type MessageFailedEventFilter = TypedEventFilter; + +export interface NonContractAddressEventObject { + _address: string; +} +export type NonContractAddressEvent = TypedEvent< + [string], + NonContractAddressEventObject +>; + +export type NonContractAddressEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PausedUpdatedEventObject { + oldState: boolean; + newState: boolean; +} +export type PausedUpdatedEvent = TypedEvent< + [boolean, boolean], + PausedUpdatedEventObject +>; + +export type PausedUpdatedEventFilter = TypedEventFilter; + +export interface ReceiveFromChainEventObject { + _srcChainId: number; + _to: string; + _amount: BigNumber; +} +export type ReceiveFromChainEvent = TypedEvent< + [number, string, BigNumber], + ReceiveFromChainEventObject +>; + +export type ReceiveFromChainEventFilter = + TypedEventFilter; + +export interface RetryMessageSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payloadHash: string; +} +export type RetryMessageSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + RetryMessageSuccessEventObject +>; + +export type RetryMessageSuccessEventFilter = + TypedEventFilter; + +export interface SendToChainEventObject { + _dstChainId: number; + _from: string; + _toAddress: string; + _amount: BigNumber; +} +export type SendToChainEvent = TypedEvent< + [number, string, string, BigNumber], + SendToChainEventObject +>; + +export type SendToChainEventFilter = TypedEventFilter; + +export interface SetBurnerStatusEventObject { + _for: string; + _status: boolean; +} +export type SetBurnerStatusEvent = TypedEvent< + [string, boolean], + SetBurnerStatusEventObject +>; + +export type SetBurnerStatusEventFilter = TypedEventFilter; + +export interface SetMinDstGasEventObject { + _dstChainId: number; + _type: number; + _minDstGas: BigNumber; +} +export type SetMinDstGasEvent = TypedEvent< + [number, number, BigNumber], + SetMinDstGasEventObject +>; + +export type SetMinDstGasEventFilter = TypedEventFilter; + +export interface SetMinterStatusEventObject { + _for: string; + _status: boolean; +} +export type SetMinterStatusEvent = TypedEvent< + [string, boolean], + SetMinterStatusEventObject +>; + +export type SetMinterStatusEventFilter = TypedEventFilter; + +export interface SetPrecrimeEventObject { + precrime: string; +} +export type SetPrecrimeEvent = TypedEvent<[string], SetPrecrimeEventObject>; + +export type SetPrecrimeEventFilter = TypedEventFilter; + +export interface SetTrustedRemoteEventObject { + _remoteChainId: number; + _path: string; +} +export type SetTrustedRemoteEvent = TypedEvent< + [number, string], + SetTrustedRemoteEventObject +>; + +export type SetTrustedRemoteEventFilter = + TypedEventFilter; + +export interface SetTrustedRemoteAddressEventObject { + _remoteChainId: number; + _remoteAddress: string; +} +export type SetTrustedRemoteAddressEvent = TypedEvent< + [number, string], + SetTrustedRemoteAddressEventObject +>; + +export type SetTrustedRemoteAddressEventFilter = + TypedEventFilter; + +export interface SetUseCustomAdapterParamsEventObject { + _useCustomAdapterParams: boolean; +} +export type SetUseCustomAdapterParamsEvent = TypedEvent< + [boolean], + SetUseCustomAdapterParamsEventObject +>; + +export type SetUseCustomAdapterParamsEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface USDOGenericModule extends BaseContract { + contractName: "USDOGenericModule"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: USDOGenericModuleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise<[BigNumber]>; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + PT_SEND(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND()"(overrides?: CallOverrides): Promise<[number]>; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise<[number]>; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "circulatingSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + cluster(overrides?: CallOverrides): Promise<[string]>; + + "cluster()"(overrides?: CallOverrides): Promise<[string]>; + + conservator(overrides?: CallOverrides): Promise<[string]>; + + "conservator()"(overrides?: CallOverrides): Promise<[string]>; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + "decimals()"(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + lzEndpoint(overrides?: CallOverrides): Promise<[string]>; + + "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + "name()"(overrides?: CallOverrides): Promise<[string]>; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + "paused()"(overrides?: CallOverrides): Promise<[boolean]>; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + precrime(overrides?: CallOverrides): Promise<[string]>; + + "precrime()"(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFromDestination( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "sendFromDestination(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise<[number]>; + + "sharedDecimals()"(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + "symbol()"(overrides?: CallOverrides): Promise<[string]>; + + token(overrides?: CallOverrides): Promise<[string]>; + + "token()"(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + triggerSendFrom( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + useCustomAdapterParams(overrides?: CallOverrides): Promise<[boolean]>; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise<[boolean]>; + + yieldBox(overrides?: CallOverrides): Promise<[string]>; + + "yieldBox()"(overrides?: CallOverrides): Promise<[string]>; + }; + + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"(overrides?: CallOverrides): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFromDestination( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "sendFromDestination(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + triggerSendFrom( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "renounceOwnership()"(overrides?: CallOverrides): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + sendFromDestination( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "sendFromDestination(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + triggerSendFrom( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: CallOverrides + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + CallOFTReceivedSuccess( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + + "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + MessageFailed( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + + "NonContractAddress(address)"( + _address?: null + ): NonContractAddressEventFilter; + NonContractAddress(_address?: null): NonContractAddressEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PausedUpdated(bool,bool)"( + oldState?: null, + newState?: null + ): PausedUpdatedEventFilter; + PausedUpdated(oldState?: null, newState?: null): PausedUpdatedEventFilter; + + "ReceiveFromChain(uint16,address,uint256)"( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + ReceiveFromChain( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + RetryMessageSuccess( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + + "SendToChain(uint16,address,bytes32,uint256)"( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + SendToChain( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + + "SetBurnerStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + SetBurnerStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + + "SetMinDstGas(uint16,uint16,uint256)"( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + SetMinDstGas( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + + "SetMinterStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + SetMinterStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + + "SetPrecrime(address)"(precrime?: null): SetPrecrimeEventFilter; + SetPrecrime(precrime?: null): SetPrecrimeEventFilter; + + "SetTrustedRemote(uint16,bytes)"( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + SetTrustedRemote( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + + "SetTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + SetTrustedRemoteAddress( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + + "SetUseCustomAdapterParams(bool)"( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + SetUseCustomAdapterParams( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFromDestination( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "sendFromDestination(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + triggerSendFrom( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_PAYLOAD_SIZE_LIMIT( + overrides?: CallOverrides + ): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"( + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"( + overrides?: CallOverrides + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFromDestination( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "sendFromDestination(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + triggerSendFrom( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + lzDstChainId: PromiseOrValue, + airdropAdapterParams: PromiseOrValue, + amount: PromiseOrValue, + sendFromData: ISendFrom.LzCallParamsStruct, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams( + overrides?: CallOverrides + ): Promise; + + "useCustomAdapterParams()"( + overrides?: CallOverrides + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOLeverageDestinationModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOLeverageDestinationModule.ts new file mode 100644 index 00000000..476ea8c0 --- /dev/null +++ b/src/typechain/tapioca-bar/usd0/modules/USDOLeverageDestinationModule.ts @@ -0,0 +1,5011 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace IUSDOBase { + export type ILeverageSwapDataStruct = { + tokenOut: PromiseOrValue; + amountOutMin: PromiseOrValue; + data: PromiseOrValue; + }; + + export type ILeverageSwapDataStructOutput = [string, BigNumber, string] & { + tokenOut: string; + amountOutMin: BigNumber; + data: string; + }; + + export type ILeverageExternalContractsDataStruct = { + swapper: PromiseOrValue; + magnetar: PromiseOrValue; + tOft: PromiseOrValue; + srcMarket: PromiseOrValue; + }; + + export type ILeverageExternalContractsDataStructOutput = [ + string, + string, + string, + string + ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; + + export type ILeverageLZDataStruct = { + srcExtraGasLimit: PromiseOrValue; + lzSrcChainId: PromiseOrValue; + lzDstChainId: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + dstAirdropAdapterParam: PromiseOrValue; + srcAirdropAdapterParam: PromiseOrValue; + refundAddress: PromiseOrValue; + }; + + export type ILeverageLZDataStructOutput = [ + BigNumber, + number, + number, + string, + string, + string, + string + ] & { + srcExtraGasLimit: BigNumber; + lzSrcChainId: number; + lzDstChainId: number; + zroPaymentAddress: string; + dstAirdropAdapterParam: string; + srcAirdropAdapterParam: string; + refundAddress: string; + }; +} + +export declare namespace ICommonOFT { + export type LzCallParamsStruct = { + refundAddress: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + adapterParams: PromiseOrValue; + }; + + export type LzCallParamsStructOutput = [string, string, string] & { + refundAddress: string; + zroPaymentAddress: string; + adapterParams: string; + }; +} + +export interface USDOLeverageDestinationModuleInterface + extends utils.Interface { + functions: { + "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment; + "NO_EXTRA_GAS()": FunctionFragment; + "PT_SEND()": FunctionFragment; + "PT_SEND_AND_CALL()": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "allowedBurner(uint256,address)": FunctionFragment; + "allowedMinter(uint256,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)": FunctionFragment; + "circulatingSupply()": FunctionFragment; + "cluster()": FunctionFragment; + "conservator()": FunctionFragment; + "creditedPackets(uint16,bytes,uint64)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; + "failedMessages(uint16,bytes,uint64)": FunctionFragment; + "forceResumeReceive(uint16,bytes)": FunctionFragment; + "getConfig(uint16,uint16,address,uint256)": FunctionFragment; + "getTrustedRemoteAddress(uint16)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "isTrustedRemote(uint16,bytes)": FunctionFragment; + "leverageUp(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)": FunctionFragment; + "lzEndpoint()": FunctionFragment; + "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "minDstGasLookup(uint16,uint16)": FunctionFragment; + "multiHop(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "name()": FunctionFragment; + "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "paused()": FunctionFragment; + "payloadSizeLimitLookup(uint16)": FunctionFragment; + "precrime()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment; + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; + "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; + "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; + "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; + "setPrecrime(address)": FunctionFragment; + "setReceiveVersion(uint16)": FunctionFragment; + "setSendVersion(uint16)": FunctionFragment; + "setTrustedRemote(uint16,bytes)": FunctionFragment; + "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment; + "setUseCustomAdapterParams(bool)": FunctionFragment; + "sharedDecimals()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "token()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "trustedRemoteLookup(uint16)": FunctionFragment; + "useCustomAdapterParams()": FunctionFragment; + "yieldBox()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "DEFAULT_PAYLOAD_SIZE_LIMIT" + | "DEFAULT_PAYLOAD_SIZE_LIMIT()" + | "NO_EXTRA_GAS" + | "NO_EXTRA_GAS()" + | "PT_SEND" + | "PT_SEND()" + | "PT_SEND_AND_CALL" + | "PT_SEND_AND_CALL()" + | "allowance" + | "allowance(address,address)" + | "allowedBurner" + | "allowedBurner(uint256,address)" + | "allowedMinter" + | "allowedMinter(uint256,address)" + | "approve" + | "approve(address,uint256)" + | "balanceOf" + | "balanceOf(address)" + | "callOnOFTReceived" + | "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)" + | "circulatingSupply" + | "circulatingSupply()" + | "cluster" + | "cluster()" + | "conservator" + | "conservator()" + | "creditedPackets" + | "creditedPackets(uint16,bytes,uint64)" + | "decimals" + | "decimals()" + | "decreaseAllowance" + | "decreaseAllowance(address,uint256)" + | "estimateSendAndCallFee" + | "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)" + | "estimateSendFee" + | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" + | "failedMessages" + | "failedMessages(uint16,bytes,uint64)" + | "forceResumeReceive" + | "forceResumeReceive(uint16,bytes)" + | "getConfig" + | "getConfig(uint16,uint16,address,uint256)" + | "getTrustedRemoteAddress" + | "getTrustedRemoteAddress(uint16)" + | "increaseAllowance" + | "increaseAllowance(address,uint256)" + | "isTrustedRemote" + | "isTrustedRemote(uint16,bytes)" + | "leverageUp" + | "leverageUp(address,uint16,bytes,uint64,bytes)" + | "leverageUpInternal" + | "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)" + | "lzEndpoint" + | "lzEndpoint()" + | "lzReceive" + | "lzReceive(uint16,bytes,uint64,bytes)" + | "minDstGasLookup" + | "minDstGasLookup(uint16,uint16)" + | "multiHop" + | "multiHop(address,uint16,bytes,uint64,bytes)" + | "name" + | "name()" + | "nonblockingLzReceive" + | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" + | "owner" + | "owner()" + | "paused" + | "paused()" + | "payloadSizeLimitLookup" + | "payloadSizeLimitLookup(uint16)" + | "precrime" + | "precrime()" + | "renounceOwnership" + | "renounceOwnership()" + | "retryMessage" + | "retryMessage(uint16,bytes,uint64,bytes)" + | "sendAndCall" + | "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))" + | "sendFrom" + | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" + | "setConfig" + | "setConfig(uint16,uint16,uint256,bytes)" + | "setMinDstGas" + | "setMinDstGas(uint16,uint16,uint256)" + | "setPayloadSizeLimit" + | "setPayloadSizeLimit(uint16,uint256)" + | "setPrecrime" + | "setPrecrime(address)" + | "setReceiveVersion" + | "setReceiveVersion(uint16)" + | "setSendVersion" + | "setSendVersion(uint16)" + | "setTrustedRemote" + | "setTrustedRemote(uint16,bytes)" + | "setTrustedRemoteAddress" + | "setTrustedRemoteAddress(uint16,bytes)" + | "setUseCustomAdapterParams" + | "setUseCustomAdapterParams(bool)" + | "sharedDecimals" + | "sharedDecimals()" + | "supportsInterface" + | "supportsInterface(bytes4)" + | "symbol" + | "symbol()" + | "token" + | "token()" + | "totalSupply" + | "totalSupply()" + | "transfer" + | "transfer(address,uint256)" + | "transferFrom" + | "transferFrom(address,address,uint256)" + | "transferOwnership" + | "transferOwnership(address)" + | "trustedRemoteLookup" + | "trustedRemoteLookup(uint16)" + | "useCustomAdapterParams" + | "useCustomAdapterParams()" + | "yieldBox" + | "yieldBox()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "PT_SEND", values?: undefined): string; + encodeFunctionData(functionFragment: "PT_SEND()", values?: undefined): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "cluster", values?: undefined): string; + encodeFunctionData(functionFragment: "cluster()", values?: undefined): string; + encodeFunctionData( + functionFragment: "conservator", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "conservator()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "creditedPackets", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "leverageUp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "leverageUp(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "leverageUpInternal", + values: [ + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + IUSDOBase.ILeverageLZDataStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)", + values: [ + PromiseOrValue, + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + IUSDOBase.ILeverageLZDataStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup(uint16,uint16)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "multiHop", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "multiHop(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "name()", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData(functionFragment: "paused()", values?: undefined): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "precrime", values?: undefined): string; + encodeFunctionData( + functionFragment: "precrime()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "retryMessage", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams(bool)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface(bytes4)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData(functionFragment: "token()", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "yieldBox", values?: undefined): string; + encodeFunctionData( + functionFragment: "yieldBox()", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "PT_SEND", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "PT_SEND()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "cluster", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "cluster()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "conservator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "conservator()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "leverageUp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "leverageUp(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageUpInternal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzEndpoint()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup(uint16,uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multiHop", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "multiHop(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "precrime()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "sendFrom", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface(bytes4)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transfer(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "yieldBox", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "yieldBox()", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; + "NonContractAddress(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PausedUpdated(bool,bool)": EventFragment; + "ReceiveFromChain(uint16,address,uint256)": EventFragment; + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "SendToChain(uint16,address,bytes32,uint256)": EventFragment; + "SetBurnerStatus(address,bool)": EventFragment; + "SetMinDstGas(uint16,uint16,uint256)": EventFragment; + "SetMinterStatus(address,bool)": EventFragment; + "SetPrecrime(address)": EventFragment; + "SetTrustedRemote(uint16,bytes)": EventFragment; + "SetTrustedRemoteAddress(uint16,bytes)": EventFragment; + "SetUseCustomAdapterParams(bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Approval(address,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "CallOFTReceivedSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "NonContractAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "NonContractAddress(address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated(bool,bool)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ReceiveFromChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "ReceiveFromChain(uint16,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "RetryMessageSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SendToChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SendToChain(uint16,address,bytes32,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetBurnerStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetBurnerStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinDstGas(uint16,uint16,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinterStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinterStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime(address)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemote(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemoteAddress(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetUseCustomAdapterParams"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetUseCustomAdapterParams(bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Transfer(address,address,uint256)" + ): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface CallOFTReceivedSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _hash: string; +} +export type CallOFTReceivedSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + CallOFTReceivedSuccessEventObject +>; + +export type CallOFTReceivedSuccessEventFilter = + TypedEventFilter; + +export interface MessageFailedEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payload: string; + _reason: string; +} +export type MessageFailedEvent = TypedEvent< + [number, string, BigNumber, string, string], + MessageFailedEventObject +>; + +export type MessageFailedEventFilter = TypedEventFilter; + +export interface NonContractAddressEventObject { + _address: string; +} +export type NonContractAddressEvent = TypedEvent< + [string], + NonContractAddressEventObject +>; + +export type NonContractAddressEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PausedUpdatedEventObject { + oldState: boolean; + newState: boolean; +} +export type PausedUpdatedEvent = TypedEvent< + [boolean, boolean], + PausedUpdatedEventObject +>; + +export type PausedUpdatedEventFilter = TypedEventFilter; + +export interface ReceiveFromChainEventObject { + _srcChainId: number; + _to: string; + _amount: BigNumber; +} +export type ReceiveFromChainEvent = TypedEvent< + [number, string, BigNumber], + ReceiveFromChainEventObject +>; + +export type ReceiveFromChainEventFilter = + TypedEventFilter; + +export interface RetryMessageSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payloadHash: string; +} +export type RetryMessageSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + RetryMessageSuccessEventObject +>; + +export type RetryMessageSuccessEventFilter = + TypedEventFilter; + +export interface SendToChainEventObject { + _dstChainId: number; + _from: string; + _toAddress: string; + _amount: BigNumber; +} +export type SendToChainEvent = TypedEvent< + [number, string, string, BigNumber], + SendToChainEventObject +>; + +export type SendToChainEventFilter = TypedEventFilter; + +export interface SetBurnerStatusEventObject { + _for: string; + _status: boolean; +} +export type SetBurnerStatusEvent = TypedEvent< + [string, boolean], + SetBurnerStatusEventObject +>; + +export type SetBurnerStatusEventFilter = TypedEventFilter; + +export interface SetMinDstGasEventObject { + _dstChainId: number; + _type: number; + _minDstGas: BigNumber; +} +export type SetMinDstGasEvent = TypedEvent< + [number, number, BigNumber], + SetMinDstGasEventObject +>; + +export type SetMinDstGasEventFilter = TypedEventFilter; + +export interface SetMinterStatusEventObject { + _for: string; + _status: boolean; +} +export type SetMinterStatusEvent = TypedEvent< + [string, boolean], + SetMinterStatusEventObject +>; + +export type SetMinterStatusEventFilter = TypedEventFilter; + +export interface SetPrecrimeEventObject { + precrime: string; +} +export type SetPrecrimeEvent = TypedEvent<[string], SetPrecrimeEventObject>; + +export type SetPrecrimeEventFilter = TypedEventFilter; + +export interface SetTrustedRemoteEventObject { + _remoteChainId: number; + _path: string; +} +export type SetTrustedRemoteEvent = TypedEvent< + [number, string], + SetTrustedRemoteEventObject +>; + +export type SetTrustedRemoteEventFilter = + TypedEventFilter; + +export interface SetTrustedRemoteAddressEventObject { + _remoteChainId: number; + _remoteAddress: string; +} +export type SetTrustedRemoteAddressEvent = TypedEvent< + [number, string], + SetTrustedRemoteAddressEventObject +>; + +export type SetTrustedRemoteAddressEventFilter = + TypedEventFilter; + +export interface SetUseCustomAdapterParamsEventObject { + _useCustomAdapterParams: boolean; +} +export type SetUseCustomAdapterParamsEvent = TypedEvent< + [boolean], + SetUseCustomAdapterParamsEventObject +>; + +export type SetUseCustomAdapterParamsEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface USDOLeverageDestinationModule extends BaseContract { + contractName: "USDOLeverageDestinationModule"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: USDOLeverageDestinationModuleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise<[BigNumber]>; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + PT_SEND(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND()"(overrides?: CallOverrides): Promise<[number]>; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise<[number]>; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "circulatingSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + cluster(overrides?: CallOverrides): Promise<[string]>; + + "cluster()"(overrides?: CallOverrides): Promise<[string]>; + + conservator(overrides?: CallOverrides): Promise<[string]>; + + "conservator()"(overrides?: CallOverrides): Promise<[string]>; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + "decimals()"(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + leverageUp( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUp(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + leverageUpInternal( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise<[string]>; + + "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + multiHop( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "multiHop(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + "name()"(overrides?: CallOverrides): Promise<[string]>; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + "paused()"(overrides?: CallOverrides): Promise<[boolean]>; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + precrime(overrides?: CallOverrides): Promise<[string]>; + + "precrime()"(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise<[number]>; + + "sharedDecimals()"(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + "symbol()"(overrides?: CallOverrides): Promise<[string]>; + + token(overrides?: CallOverrides): Promise<[string]>; + + "token()"(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + useCustomAdapterParams(overrides?: CallOverrides): Promise<[boolean]>; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise<[boolean]>; + + yieldBox(overrides?: CallOverrides): Promise<[string]>; + + "yieldBox()"(overrides?: CallOverrides): Promise<[string]>; + }; + + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"(overrides?: CallOverrides): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + leverageUp( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUp(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + leverageUpInternal( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + multiHop( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "multiHop(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + leverageUp( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "leverageUp(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + leverageUpInternal( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + multiHop( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "multiHop(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "renounceOwnership()"(overrides?: CallOverrides): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + CallOFTReceivedSuccess( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + + "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + MessageFailed( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + + "NonContractAddress(address)"( + _address?: null + ): NonContractAddressEventFilter; + NonContractAddress(_address?: null): NonContractAddressEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PausedUpdated(bool,bool)"( + oldState?: null, + newState?: null + ): PausedUpdatedEventFilter; + PausedUpdated(oldState?: null, newState?: null): PausedUpdatedEventFilter; + + "ReceiveFromChain(uint16,address,uint256)"( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + ReceiveFromChain( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + RetryMessageSuccess( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + + "SendToChain(uint16,address,bytes32,uint256)"( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + SendToChain( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + + "SetBurnerStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + SetBurnerStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + + "SetMinDstGas(uint16,uint16,uint256)"( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + SetMinDstGas( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + + "SetMinterStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + SetMinterStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + + "SetPrecrime(address)"(precrime?: null): SetPrecrimeEventFilter; + SetPrecrime(precrime?: null): SetPrecrimeEventFilter; + + "SetTrustedRemote(uint16,bytes)"( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + SetTrustedRemote( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + + "SetTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + SetTrustedRemoteAddress( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + + "SetUseCustomAdapterParams(bool)"( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + SetUseCustomAdapterParams( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + leverageUp( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUp(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + leverageUpInternal( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + multiHop( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "multiHop(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_PAYLOAD_SIZE_LIMIT( + overrides?: CallOverrides + ): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"( + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"( + overrides?: CallOverrides + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + leverageUp( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUp(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + leverageUpInternal( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( + amount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + leverageFor: PromiseOrValue, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + multiHop( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "multiHop(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams( + overrides?: CallOverrides + ): Promise; + + "useCustomAdapterParams()"( + overrides?: CallOverrides + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOLeverageModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOLeverageModule.ts index 4817a153..bd7817a9 100644 --- a/src/typechain/tapioca-bar/usd0/modules/USDOLeverageModule.ts +++ b/src/typechain/tapioca-bar/usd0/modules/USDOLeverageModule.ts @@ -41,20 +41,6 @@ export declare namespace IUSDOBase { data: string; }; - export type ILeverageExternalContractsDataStruct = { - swapper: PromiseOrValue; - magnetar: PromiseOrValue; - tOft: PromiseOrValue; - srcMarket: PromiseOrValue; - }; - - export type ILeverageExternalContractsDataStructOutput = [ - string, - string, - string, - string - ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; - export type ILeverageLZDataStruct = { srcExtraGasLimit: PromiseOrValue; lzSrcChainId: PromiseOrValue; @@ -82,6 +68,68 @@ export declare namespace IUSDOBase { srcAirdropAdapterParam: string; refundAddress: string; }; + + export type ILeverageExternalContractsDataStruct = { + swapper: PromiseOrValue; + magnetar: PromiseOrValue; + tOft: PromiseOrValue; + srcMarket: PromiseOrValue; + }; + + export type ILeverageExternalContractsDataStructOutput = [ + string, + string, + string, + string + ] & { swapper: string; magnetar: string; tOft: string; srcMarket: string }; +} + +export declare namespace ICommonData { + export type IApprovalStruct = { + permitAll: PromiseOrValue; + allowFailure: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; + actionType: PromiseOrValue; + target: PromiseOrValue; + permitBorrow: PromiseOrValue; + owner: PromiseOrValue; + spender: PromiseOrValue; + value: PromiseOrValue; + deadline: PromiseOrValue; + v: PromiseOrValue; + r: PromiseOrValue; + s: PromiseOrValue; + }; + + export type IApprovalStructOutput = [ + boolean, + boolean, + boolean, + number, + string, + boolean, + string, + string, + BigNumber, + BigNumber, + number, + string, + string + ] & { + permitAll: boolean; + allowFailure: boolean; + yieldBoxTypeApproval: boolean; + actionType: number; + target: string; + permitBorrow: boolean; + owner: string; + spender: string; + value: BigNumber; + deadline: BigNumber; + v: number; + r: string; + s: string; + }; } export declare namespace ICommonOFT { @@ -119,17 +167,14 @@ export interface USDOLeverageModuleInterface extends utils.Interface { "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; "isTrustedRemote(uint16,bytes)": FunctionFragment; - "leverageUp(address,uint16,bytes,uint64,bytes)": FunctionFragment; - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -204,8 +249,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -214,18 +257,14 @@ export interface USDOLeverageModuleInterface extends utils.Interface { | "getTrustedRemoteAddress(uint16)" | "increaseAllowance" | "increaseAllowance(address,uint256)" + | "initMultiHopBuy" + | "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" | "isTrustedRemote" | "isTrustedRemote(uint16,bytes)" - | "leverageUp" - | "leverageUp(address,uint16,bytes,uint64,bytes)" - | "leverageUpInternal" - | "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)" | "lzEndpoint" | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -491,14 +530,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -542,54 +573,38 @@ export interface USDOLeverageModuleInterface extends utils.Interface { values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( - functionFragment: "isTrustedRemote", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isTrustedRemote(uint16,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "leverageUp", + functionFragment: "initMultiHopBuy", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, PromiseOrValue, - PromiseOrValue + IUSDOBase.ILeverageSwapDataStruct, + IUSDOBase.ILeverageLZDataStruct, + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] ] ): string; encodeFunctionData( - functionFragment: "leverageUp(address,uint16,bytes,uint64,bytes)", + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "leverageUpInternal", - values: [ PromiseOrValue, IUSDOBase.ILeverageSwapDataStruct, - IUSDOBase.ILeverageExternalContractsDataStruct, IUSDOBase.ILeverageLZDataStruct, - PromiseOrValue, - PromiseOrValue + IUSDOBase.ILeverageExternalContractsDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[] ] ): string; encodeFunctionData( - functionFragment: "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)", - values: [ - PromiseOrValue, - IUSDOBase.ILeverageSwapDataStruct, - IUSDOBase.ILeverageExternalContractsDataStruct, - IUSDOBase.ILeverageLZDataStruct, - PromiseOrValue, - PromiseOrValue - ] + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData( functionFragment: "lzEndpoint", @@ -617,14 +632,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -1057,14 +1064,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -1095,24 +1094,19 @@ export interface USDOLeverageModuleInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "isTrustedRemote", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isTrustedRemote(uint16,bytes)", + functionFragment: "initMultiHopBuy", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "leverageUp", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "leverageUp(address,uint16,bytes,uint64,bytes)", + functionFragment: "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageUpInternal", + functionFragment: "isTrustedRemote", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)", + functionFragment: "isTrustedRemote(uint16,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; @@ -1125,14 +1119,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1342,9 +1328,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1370,18 +1353,6 @@ export interface USDOLeverageModuleInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -1466,42 +1437,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -1911,10 +1846,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -1965,6 +1896,30 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -1977,44 +1932,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise<[boolean]>; - leverageUp( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUp(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - leverageUpInternal( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise<[string]>; "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; @@ -2035,10 +1952,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2564,10 +2477,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2618,6 +2527,30 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2630,44 +2563,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - leverageUp( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUp(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - leverageUpInternal( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -2688,10 +2583,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3219,10 +3110,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3273,55 +3160,41 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - isTrustedRemote( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], overrides?: CallOverrides - ): Promise; + ): Promise; - "isTrustedRemote(uint16,bytes)"( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], overrides?: CallOverrides - ): Promise; + ): Promise; - leverageUp( - module: PromiseOrValue, + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, overrides?: CallOverrides - ): Promise; + ): Promise; - "leverageUp(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, + "isTrustedRemote(uint16,bytes)"( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, overrides?: CallOverrides - ): Promise; - - leverageUpInternal( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; + ): Promise; lzEndpoint(overrides?: CallOverrides): Promise; @@ -3343,10 +3216,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3691,33 +3560,6 @@ export interface USDOLeverageModule extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -4056,10 +3898,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4110,54 +3948,40 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - isTrustedRemote( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - overrides?: CallOverrides + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - "isTrustedRemote(uint16,bytes)"( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - overrides?: CallOverrides + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - leverageUp( - module: PromiseOrValue, + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } + overrides?: CallOverrides ): Promise; - "leverageUp(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, + "isTrustedRemote(uint16,bytes)"( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - leverageUpInternal( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } + overrides?: CallOverrides ): Promise; lzEndpoint(overrides?: CallOverrides): Promise; @@ -4180,10 +4004,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4710,10 +4530,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4764,54 +4580,40 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - isTrustedRemote( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - overrides?: CallOverrides + initMultiHopBuy( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - "isTrustedRemote(uint16,bytes)"( - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - overrides?: CallOverrides + "initMultiHopBuy(address,uint256,uint256,(address,uint256,bytes),(uint256,uint16,uint16,address,bytes,bytes,address),(address,address,address,address),bytes,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( + from: PromiseOrValue, + collateralAmount: PromiseOrValue, + borrowAmount: PromiseOrValue, + swapData: IUSDOBase.ILeverageSwapDataStruct, + lzData: IUSDOBase.ILeverageLZDataStruct, + externalData: IUSDOBase.ILeverageExternalContractsDataStruct, + airdropAdapterParams: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - leverageUp( - module: PromiseOrValue, + isTrustedRemote( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } + overrides?: CallOverrides ): Promise; - "leverageUp(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, + "isTrustedRemote(uint16,bytes)"( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - leverageUpInternal( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "leverageUpInternal(uint256,(address,uint256,bytes),(address,address,address,address),(uint256,uint16,uint16,address,bytes,bytes,address),address,uint256)"( - amount: PromiseOrValue, - swapData: IUSDOBase.ILeverageSwapDataStruct, - externalData: IUSDOBase.ILeverageExternalContractsDataStruct, - lzData: IUSDOBase.ILeverageLZDataStruct, - leverageFor: PromiseOrValue, - airdropAmount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } + overrides?: CallOverrides ): Promise; lzEndpoint(overrides?: CallOverrides): Promise; @@ -4834,10 +4636,6 @@ export interface USDOLeverageModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOMarketDestinationModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOMarketDestinationModule.ts new file mode 100644 index 00000000..7cdeece0 --- /dev/null +++ b/src/typechain/tapioca-bar/usd0/modules/USDOMarketDestinationModule.ts @@ -0,0 +1,5086 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace ITapiocaOptionLiquidityProvision { + export type IOptionsLockDataStruct = { + lock: PromiseOrValue; + target: PromiseOrValue; + lockDuration: PromiseOrValue; + amount: PromiseOrValue; + fraction: PromiseOrValue; + }; + + export type IOptionsLockDataStructOutput = [ + boolean, + string, + BigNumber, + BigNumber, + BigNumber + ] & { + lock: boolean; + target: string; + lockDuration: BigNumber; + amount: BigNumber; + fraction: BigNumber; + }; +} + +export declare namespace ITapiocaOptionsBroker { + export type IOptionsParticipateDataStruct = { + participate: PromiseOrValue; + target: PromiseOrValue; + tOLPTokenId: PromiseOrValue; + }; + + export type IOptionsParticipateDataStructOutput = [ + boolean, + string, + BigNumber + ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; +} + +export declare namespace IUSDOBase { + export type ILendOrRepayParamsStruct = { + repay: PromiseOrValue; + depositAmount: PromiseOrValue; + repayAmount: PromiseOrValue; + marketHelper: PromiseOrValue; + market: PromiseOrValue; + removeCollateral: PromiseOrValue; + removeCollateralAmount: PromiseOrValue; + lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStruct; + participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStruct; + }; + + export type ILendOrRepayParamsStructOutput = [ + boolean, + BigNumber, + BigNumber, + string, + string, + boolean, + BigNumber, + ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput, + ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput + ] & { + repay: boolean; + depositAmount: BigNumber; + repayAmount: BigNumber; + marketHelper: string; + market: string; + removeCollateral: boolean; + removeCollateralAmount: BigNumber; + lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput; + participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput; + }; +} + +export declare namespace ICommonData { + export type IApprovalStruct = { + permitAll: PromiseOrValue; + allowFailure: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; + actionType: PromiseOrValue; + target: PromiseOrValue; + permitBorrow: PromiseOrValue; + owner: PromiseOrValue; + spender: PromiseOrValue; + value: PromiseOrValue; + deadline: PromiseOrValue; + v: PromiseOrValue; + r: PromiseOrValue; + s: PromiseOrValue; + }; + + export type IApprovalStructOutput = [ + boolean, + boolean, + boolean, + number, + string, + boolean, + string, + string, + BigNumber, + BigNumber, + number, + string, + string + ] & { + permitAll: boolean; + allowFailure: boolean; + yieldBoxTypeApproval: boolean; + actionType: number; + target: string; + permitBorrow: boolean; + owner: string; + spender: string; + value: BigNumber; + deadline: BigNumber; + v: number; + r: string; + s: string; + }; + + export type IWithdrawParamsStruct = { + withdraw: PromiseOrValue; + withdrawLzFeeAmount: PromiseOrValue; + withdrawOnOtherChain: PromiseOrValue; + withdrawLzChainId: PromiseOrValue; + withdrawAdapterParams: PromiseOrValue; + }; + + export type IWithdrawParamsStructOutput = [ + boolean, + BigNumber, + boolean, + number, + string + ] & { + withdraw: boolean; + withdrawLzFeeAmount: BigNumber; + withdrawOnOtherChain: boolean; + withdrawLzChainId: number; + withdrawAdapterParams: string; + }; +} + +export declare namespace ICommonOFT { + export type LzCallParamsStruct = { + refundAddress: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + adapterParams: PromiseOrValue; + }; + + export type LzCallParamsStructOutput = [string, string, string] & { + refundAddress: string; + zroPaymentAddress: string; + adapterParams: string; + }; +} + +export interface USDOMarketDestinationModuleInterface extends utils.Interface { + functions: { + "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment; + "NO_EXTRA_GAS()": FunctionFragment; + "PT_SEND()": FunctionFragment; + "PT_SEND_AND_CALL()": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "allowedBurner(uint256,address)": FunctionFragment; + "allowedMinter(uint256,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)": FunctionFragment; + "circulatingSupply()": FunctionFragment; + "cluster()": FunctionFragment; + "conservator()": FunctionFragment; + "creditedPackets(uint16,bytes,uint64)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; + "failedMessages(uint16,bytes,uint64)": FunctionFragment; + "forceResumeReceive(uint16,bytes)": FunctionFragment; + "getConfig(uint16,uint16,address,uint256)": FunctionFragment; + "getTrustedRemoteAddress(uint16)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "isTrustedRemote(uint16,bytes)": FunctionFragment; + "lend(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)": FunctionFragment; + "lzEndpoint()": FunctionFragment; + "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "minDstGasLookup(uint16,uint16)": FunctionFragment; + "name()": FunctionFragment; + "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "paused()": FunctionFragment; + "payloadSizeLimitLookup(uint16)": FunctionFragment; + "precrime()": FunctionFragment; + "remove(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment; + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; + "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; + "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; + "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; + "setPrecrime(address)": FunctionFragment; + "setReceiveVersion(uint16)": FunctionFragment; + "setSendVersion(uint16)": FunctionFragment; + "setTrustedRemote(uint16,bytes)": FunctionFragment; + "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment; + "setUseCustomAdapterParams(bool)": FunctionFragment; + "sharedDecimals()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "token()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "trustedRemoteLookup(uint16)": FunctionFragment; + "useCustomAdapterParams()": FunctionFragment; + "yieldBox()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "DEFAULT_PAYLOAD_SIZE_LIMIT" + | "DEFAULT_PAYLOAD_SIZE_LIMIT()" + | "NO_EXTRA_GAS" + | "NO_EXTRA_GAS()" + | "PT_SEND" + | "PT_SEND()" + | "PT_SEND_AND_CALL" + | "PT_SEND_AND_CALL()" + | "allowance" + | "allowance(address,address)" + | "allowedBurner" + | "allowedBurner(uint256,address)" + | "allowedMinter" + | "allowedMinter(uint256,address)" + | "approve" + | "approve(address,uint256)" + | "balanceOf" + | "balanceOf(address)" + | "callOnOFTReceived" + | "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)" + | "circulatingSupply" + | "circulatingSupply()" + | "cluster" + | "cluster()" + | "conservator" + | "conservator()" + | "creditedPackets" + | "creditedPackets(uint16,bytes,uint64)" + | "decimals" + | "decimals()" + | "decreaseAllowance" + | "decreaseAllowance(address,uint256)" + | "estimateSendAndCallFee" + | "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)" + | "estimateSendFee" + | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" + | "failedMessages" + | "failedMessages(uint16,bytes,uint64)" + | "forceResumeReceive" + | "forceResumeReceive(uint16,bytes)" + | "getConfig" + | "getConfig(uint16,uint16,address,uint256)" + | "getTrustedRemoteAddress" + | "getTrustedRemoteAddress(uint16)" + | "increaseAllowance" + | "increaseAllowance(address,uint256)" + | "isTrustedRemote" + | "isTrustedRemote(uint16,bytes)" + | "lend" + | "lend(address,uint16,bytes,uint64,bytes)" + | "lendInternal" + | "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)" + | "lzEndpoint" + | "lzEndpoint()" + | "lzReceive" + | "lzReceive(uint16,bytes,uint64,bytes)" + | "minDstGasLookup" + | "minDstGasLookup(uint16,uint16)" + | "name" + | "name()" + | "nonblockingLzReceive" + | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" + | "owner" + | "owner()" + | "paused" + | "paused()" + | "payloadSizeLimitLookup" + | "payloadSizeLimitLookup(uint16)" + | "precrime" + | "precrime()" + | "remove" + | "remove(address,uint16,bytes,uint64,bytes)" + | "renounceOwnership" + | "renounceOwnership()" + | "retryMessage" + | "retryMessage(uint16,bytes,uint64,bytes)" + | "sendAndCall" + | "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))" + | "sendFrom" + | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" + | "setConfig" + | "setConfig(uint16,uint16,uint256,bytes)" + | "setMinDstGas" + | "setMinDstGas(uint16,uint16,uint256)" + | "setPayloadSizeLimit" + | "setPayloadSizeLimit(uint16,uint256)" + | "setPrecrime" + | "setPrecrime(address)" + | "setReceiveVersion" + | "setReceiveVersion(uint16)" + | "setSendVersion" + | "setSendVersion(uint16)" + | "setTrustedRemote" + | "setTrustedRemote(uint16,bytes)" + | "setTrustedRemoteAddress" + | "setTrustedRemoteAddress(uint16,bytes)" + | "setUseCustomAdapterParams" + | "setUseCustomAdapterParams(bool)" + | "sharedDecimals" + | "sharedDecimals()" + | "supportsInterface" + | "supportsInterface(bytes4)" + | "symbol" + | "symbol()" + | "token" + | "token()" + | "totalSupply" + | "totalSupply()" + | "transfer" + | "transfer(address,uint256)" + | "transferFrom" + | "transferFrom(address,address,uint256)" + | "transferOwnership" + | "transferOwnership(address)" + | "trustedRemoteLookup" + | "trustedRemoteLookup(uint16)" + | "useCustomAdapterParams" + | "useCustomAdapterParams()" + | "yieldBox" + | "yieldBox()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "PT_SEND", values?: undefined): string; + encodeFunctionData(functionFragment: "PT_SEND()", values?: undefined): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "cluster", values?: undefined): string; + encodeFunctionData(functionFragment: "cluster()", values?: undefined): string; + encodeFunctionData( + functionFragment: "conservator", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "conservator()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "creditedPackets", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "lend", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lend(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lendInternal", + values: [ + PromiseOrValue, + IUSDOBase.ILendOrRepayParamsStruct, + ICommonData.IApprovalStruct[], + ICommonData.IWithdrawParamsStruct, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)", + values: [ + PromiseOrValue, + IUSDOBase.ILendOrRepayParamsStruct, + ICommonData.IApprovalStruct[], + ICommonData.IWithdrawParamsStruct, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup(uint16,uint16)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "name()", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData(functionFragment: "paused()", values?: undefined): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "precrime", values?: undefined): string; + encodeFunctionData( + functionFragment: "precrime()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "remove", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "remove(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "retryMessage", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams(bool)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface(bytes4)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData(functionFragment: "token()", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "yieldBox", values?: undefined): string; + encodeFunctionData( + functionFragment: "yieldBox()", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "PT_SEND", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "PT_SEND()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "cluster", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "cluster()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "conservator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "conservator()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lend", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lend(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "lendInternal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzEndpoint()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup(uint16,uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "precrime()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "remove", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "remove(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "sendFrom", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface(bytes4)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transfer(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "yieldBox", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "yieldBox()", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; + "NonContractAddress(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PausedUpdated(bool,bool)": EventFragment; + "ReceiveFromChain(uint16,address,uint256)": EventFragment; + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "SendToChain(uint16,address,bytes32,uint256)": EventFragment; + "SetBurnerStatus(address,bool)": EventFragment; + "SetMinDstGas(uint16,uint16,uint256)": EventFragment; + "SetMinterStatus(address,bool)": EventFragment; + "SetPrecrime(address)": EventFragment; + "SetTrustedRemote(uint16,bytes)": EventFragment; + "SetTrustedRemoteAddress(uint16,bytes)": EventFragment; + "SetUseCustomAdapterParams(bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Approval(address,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "CallOFTReceivedSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "NonContractAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "NonContractAddress(address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated(bool,bool)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ReceiveFromChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "ReceiveFromChain(uint16,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "RetryMessageSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SendToChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SendToChain(uint16,address,bytes32,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetBurnerStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetBurnerStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinDstGas(uint16,uint16,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinterStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinterStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime(address)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemote(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemoteAddress(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetUseCustomAdapterParams"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetUseCustomAdapterParams(bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Transfer(address,address,uint256)" + ): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface CallOFTReceivedSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _hash: string; +} +export type CallOFTReceivedSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + CallOFTReceivedSuccessEventObject +>; + +export type CallOFTReceivedSuccessEventFilter = + TypedEventFilter; + +export interface MessageFailedEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payload: string; + _reason: string; +} +export type MessageFailedEvent = TypedEvent< + [number, string, BigNumber, string, string], + MessageFailedEventObject +>; + +export type MessageFailedEventFilter = TypedEventFilter; + +export interface NonContractAddressEventObject { + _address: string; +} +export type NonContractAddressEvent = TypedEvent< + [string], + NonContractAddressEventObject +>; + +export type NonContractAddressEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PausedUpdatedEventObject { + oldState: boolean; + newState: boolean; +} +export type PausedUpdatedEvent = TypedEvent< + [boolean, boolean], + PausedUpdatedEventObject +>; + +export type PausedUpdatedEventFilter = TypedEventFilter; + +export interface ReceiveFromChainEventObject { + _srcChainId: number; + _to: string; + _amount: BigNumber; +} +export type ReceiveFromChainEvent = TypedEvent< + [number, string, BigNumber], + ReceiveFromChainEventObject +>; + +export type ReceiveFromChainEventFilter = + TypedEventFilter; + +export interface RetryMessageSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payloadHash: string; +} +export type RetryMessageSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + RetryMessageSuccessEventObject +>; + +export type RetryMessageSuccessEventFilter = + TypedEventFilter; + +export interface SendToChainEventObject { + _dstChainId: number; + _from: string; + _toAddress: string; + _amount: BigNumber; +} +export type SendToChainEvent = TypedEvent< + [number, string, string, BigNumber], + SendToChainEventObject +>; + +export type SendToChainEventFilter = TypedEventFilter; + +export interface SetBurnerStatusEventObject { + _for: string; + _status: boolean; +} +export type SetBurnerStatusEvent = TypedEvent< + [string, boolean], + SetBurnerStatusEventObject +>; + +export type SetBurnerStatusEventFilter = TypedEventFilter; + +export interface SetMinDstGasEventObject { + _dstChainId: number; + _type: number; + _minDstGas: BigNumber; +} +export type SetMinDstGasEvent = TypedEvent< + [number, number, BigNumber], + SetMinDstGasEventObject +>; + +export type SetMinDstGasEventFilter = TypedEventFilter; + +export interface SetMinterStatusEventObject { + _for: string; + _status: boolean; +} +export type SetMinterStatusEvent = TypedEvent< + [string, boolean], + SetMinterStatusEventObject +>; + +export type SetMinterStatusEventFilter = TypedEventFilter; + +export interface SetPrecrimeEventObject { + precrime: string; +} +export type SetPrecrimeEvent = TypedEvent<[string], SetPrecrimeEventObject>; + +export type SetPrecrimeEventFilter = TypedEventFilter; + +export interface SetTrustedRemoteEventObject { + _remoteChainId: number; + _path: string; +} +export type SetTrustedRemoteEvent = TypedEvent< + [number, string], + SetTrustedRemoteEventObject +>; + +export type SetTrustedRemoteEventFilter = + TypedEventFilter; + +export interface SetTrustedRemoteAddressEventObject { + _remoteChainId: number; + _remoteAddress: string; +} +export type SetTrustedRemoteAddressEvent = TypedEvent< + [number, string], + SetTrustedRemoteAddressEventObject +>; + +export type SetTrustedRemoteAddressEventFilter = + TypedEventFilter; + +export interface SetUseCustomAdapterParamsEventObject { + _useCustomAdapterParams: boolean; +} +export type SetUseCustomAdapterParamsEvent = TypedEvent< + [boolean], + SetUseCustomAdapterParamsEventObject +>; + +export type SetUseCustomAdapterParamsEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface USDOMarketDestinationModule extends BaseContract { + contractName: "USDOMarketDestinationModule"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: USDOMarketDestinationModuleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise<[BigNumber]>; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + PT_SEND(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND()"(overrides?: CallOverrides): Promise<[number]>; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise<[number]>; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "circulatingSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + cluster(overrides?: CallOverrides): Promise<[string]>; + + "cluster()"(overrides?: CallOverrides): Promise<[string]>; + + conservator(overrides?: CallOverrides): Promise<[string]>; + + "conservator()"(overrides?: CallOverrides): Promise<[string]>; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + "decimals()"(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + lend( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lend(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + lendInternal( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)"( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise<[string]>; + + "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + "name()"(overrides?: CallOverrides): Promise<[string]>; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + "paused()"(overrides?: CallOverrides): Promise<[boolean]>; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + precrime(overrides?: CallOverrides): Promise<[string]>; + + "precrime()"(overrides?: CallOverrides): Promise<[string]>; + + remove( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "remove(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise<[number]>; + + "sharedDecimals()"(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + "symbol()"(overrides?: CallOverrides): Promise<[string]>; + + token(overrides?: CallOverrides): Promise<[string]>; + + "token()"(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + useCustomAdapterParams(overrides?: CallOverrides): Promise<[boolean]>; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise<[boolean]>; + + yieldBox(overrides?: CallOverrides): Promise<[string]>; + + "yieldBox()"(overrides?: CallOverrides): Promise<[string]>; + }; + + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"(overrides?: CallOverrides): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lend( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lend(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + lendInternal( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)"( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + remove( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "remove(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lend( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lend(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lendInternal( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)"( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + remove( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "remove(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "renounceOwnership()"(overrides?: CallOverrides): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + CallOFTReceivedSuccess( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + + "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + MessageFailed( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + + "NonContractAddress(address)"( + _address?: null + ): NonContractAddressEventFilter; + NonContractAddress(_address?: null): NonContractAddressEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PausedUpdated(bool,bool)"( + oldState?: null, + newState?: null + ): PausedUpdatedEventFilter; + PausedUpdated(oldState?: null, newState?: null): PausedUpdatedEventFilter; + + "ReceiveFromChain(uint16,address,uint256)"( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + ReceiveFromChain( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + RetryMessageSuccess( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + + "SendToChain(uint16,address,bytes32,uint256)"( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + SendToChain( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + + "SetBurnerStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + SetBurnerStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + + "SetMinDstGas(uint16,uint16,uint256)"( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + SetMinDstGas( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + + "SetMinterStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + SetMinterStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + + "SetPrecrime(address)"(precrime?: null): SetPrecrimeEventFilter; + SetPrecrime(precrime?: null): SetPrecrimeEventFilter; + + "SetTrustedRemote(uint16,bytes)"( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + SetTrustedRemote( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + + "SetTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + SetTrustedRemoteAddress( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + + "SetUseCustomAdapterParams(bool)"( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + SetUseCustomAdapterParams( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lend( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lend(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + lendInternal( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)"( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + remove( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "remove(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_PAYLOAD_SIZE_LIMIT( + overrides?: CallOverrides + ): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"( + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"( + overrides?: CallOverrides + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lend( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lend(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + lendInternal( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes),uint256)"( + to: PromiseOrValue, + lendParams: IUSDOBase.ILendOrRepayParamsStruct, + approvals: ICommonData.IApprovalStruct[], + withdrawParams: ICommonData.IWithdrawParamsStruct, + airdropAmount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + remove( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "remove(address,uint16,bytes,uint64,bytes)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + arg3: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams( + overrides?: CallOverrides + ): Promise; + + "useCustomAdapterParams()"( + overrides?: CallOverrides + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOMarketModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOMarketModule.ts index 08d2d71f..95b4ebc7 100644 --- a/src/typechain/tapioca-bar/usd0/modules/USDOMarketModule.ts +++ b/src/typechain/tapioca-bar/usd0/modules/USDOMarketModule.ts @@ -28,43 +28,101 @@ import type { PromiseOrValue, } from "../../common"; -export declare namespace ITapiocaOptionLiquidityProvision { - export type IOptionsLockDataStruct = { - lock: PromiseOrValue; +export declare namespace ICommonData { + export type ICommonExternalContractsStruct = { + magnetar: PromiseOrValue; + singularity: PromiseOrValue; + bigBang: PromiseOrValue; + }; + + export type ICommonExternalContractsStructOutput = [ + string, + string, + string + ] & { magnetar: string; singularity: string; bigBang: string }; + + export type IWithdrawParamsStruct = { + withdraw: PromiseOrValue; + withdrawLzFeeAmount: PromiseOrValue; + withdrawOnOtherChain: PromiseOrValue; + withdrawLzChainId: PromiseOrValue; + withdrawAdapterParams: PromiseOrValue; + }; + + export type IWithdrawParamsStructOutput = [ + boolean, + BigNumber, + boolean, + number, + string + ] & { + withdraw: boolean; + withdrawLzFeeAmount: BigNumber; + withdrawOnOtherChain: boolean; + withdrawLzChainId: number; + withdrawAdapterParams: string; + }; + + export type IApprovalStruct = { + permitAll: PromiseOrValue; + allowFailure: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; + actionType: PromiseOrValue; target: PromiseOrValue; - lockDuration: PromiseOrValue; - amount: PromiseOrValue; - fraction: PromiseOrValue; + permitBorrow: PromiseOrValue; + owner: PromiseOrValue; + spender: PromiseOrValue; + value: PromiseOrValue; + deadline: PromiseOrValue; + v: PromiseOrValue; + r: PromiseOrValue; + s: PromiseOrValue; }; - export type IOptionsLockDataStructOutput = [ + export type IApprovalStructOutput = [ + boolean, + boolean, boolean, + number, + string, + boolean, + string, string, BigNumber, BigNumber, - BigNumber + number, + string, + string ] & { - lock: boolean; + permitAll: boolean; + allowFailure: boolean; + yieldBoxTypeApproval: boolean; + actionType: number; target: string; - lockDuration: BigNumber; - amount: BigNumber; - fraction: BigNumber; + permitBorrow: boolean; + owner: string; + spender: string; + value: BigNumber; + deadline: BigNumber; + v: number; + r: string; + s: string; }; +} - export type IOptionsUnlockDataStruct = { - unlock: PromiseOrValue; +export declare namespace ITapiocaOptionsBroker { + export type IOptionsExitDataStruct = { + exit: PromiseOrValue; target: PromiseOrValue; - tokenId: PromiseOrValue; + oTAPTokenID: PromiseOrValue; }; - export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { - unlock: boolean; + export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { + exit: boolean; target: string; - tokenId: BigNumber; + oTAPTokenID: BigNumber; }; -} -export declare namespace ITapiocaOptionsBroker { export type IOptionsParticipateDataStruct = { participate: PromiseOrValue; target: PromiseOrValue; @@ -76,55 +134,45 @@ export declare namespace ITapiocaOptionsBroker { string, BigNumber ] & { participate: boolean; target: string; tOLPTokenId: BigNumber }; +} - export type IOptionsExitDataStruct = { - exit: PromiseOrValue; +export declare namespace ITapiocaOptionLiquidityProvision { + export type IOptionsUnlockDataStruct = { + unlock: PromiseOrValue; target: PromiseOrValue; - oTAPTokenID: PromiseOrValue; + tokenId: PromiseOrValue; }; - export type IOptionsExitDataStructOutput = [boolean, string, BigNumber] & { - exit: boolean; + export type IOptionsUnlockDataStructOutput = [boolean, string, BigNumber] & { + unlock: boolean; target: string; - oTAPTokenID: BigNumber; + tokenId: BigNumber; }; -} -export declare namespace IUSDOBase { - export type ILendOrRepayParamsStruct = { - repay: PromiseOrValue; - depositAmount: PromiseOrValue; - repayAmount: PromiseOrValue; - marketHelper: PromiseOrValue; - market: PromiseOrValue; - removeCollateral: PromiseOrValue; - removeCollateralAmount: PromiseOrValue; - lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStruct; - participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStruct; + export type IOptionsLockDataStruct = { + lock: PromiseOrValue; + target: PromiseOrValue; + lockDuration: PromiseOrValue; + amount: PromiseOrValue; + fraction: PromiseOrValue; }; - export type ILendOrRepayParamsStructOutput = [ + export type IOptionsLockDataStructOutput = [ boolean, - BigNumber, - BigNumber, string, - string, - boolean, BigNumber, - ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput, - ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput + BigNumber, + BigNumber ] & { - repay: boolean; - depositAmount: BigNumber; - repayAmount: BigNumber; - marketHelper: string; - market: string; - removeCollateral: boolean; - removeCollateralAmount: BigNumber; - lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput; - participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput; + lock: boolean; + target: string; + lockDuration: BigNumber; + amount: BigNumber; + fraction: BigNumber; }; +} +export declare namespace IUSDOBase { export type IRemoveAndRepayStruct = { removeAssetFromSGL: PromiseOrValue; removeAmount: PromiseOrValue; @@ -161,88 +209,40 @@ export declare namespace IUSDOBase { assetWithdrawData: ICommonData.IWithdrawParamsStructOutput; collateralWithdrawData: ICommonData.IWithdrawParamsStructOutput; }; -} -export declare namespace ICommonData { - export type IApprovalStruct = { - permitAll: PromiseOrValue; - allowFailure: PromiseOrValue; - approveOnYieldBox: PromiseOrValue; - actionType: PromiseOrValue; - target: PromiseOrValue; - permitBorrow: PromiseOrValue; - owner: PromiseOrValue; - spender: PromiseOrValue; - value: PromiseOrValue; - deadline: PromiseOrValue; - v: PromiseOrValue; - r: PromiseOrValue; - s: PromiseOrValue; + export type ILendOrRepayParamsStruct = { + repay: PromiseOrValue; + depositAmount: PromiseOrValue; + repayAmount: PromiseOrValue; + marketHelper: PromiseOrValue; + market: PromiseOrValue; + removeCollateral: PromiseOrValue; + removeCollateralAmount: PromiseOrValue; + lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStruct; + participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStruct; }; - export type IApprovalStructOutput = [ - boolean, - boolean, - boolean, - number, - string, + export type ILendOrRepayParamsStructOutput = [ boolean, - string, - string, BigNumber, BigNumber, - number, string, - string - ] & { - permitAll: boolean; - allowFailure: boolean; - approveOnYieldBox: boolean; - actionType: number; - target: string; - permitBorrow: boolean; - owner: string; - spender: string; - value: BigNumber; - deadline: BigNumber; - v: number; - r: string; - s: string; - }; - - export type IWithdrawParamsStruct = { - withdraw: PromiseOrValue; - withdrawLzFeeAmount: PromiseOrValue; - withdrawOnOtherChain: PromiseOrValue; - withdrawLzChainId: PromiseOrValue; - withdrawAdapterParams: PromiseOrValue; - }; - - export type IWithdrawParamsStructOutput = [ + string, boolean, BigNumber, - boolean, - number, - string + ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput, + ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput ] & { - withdraw: boolean; - withdrawLzFeeAmount: BigNumber; - withdrawOnOtherChain: boolean; - withdrawLzChainId: number; - withdrawAdapterParams: string; - }; - - export type ICommonExternalContractsStruct = { - magnetar: PromiseOrValue; - singularity: PromiseOrValue; - bigBang: PromiseOrValue; + repay: boolean; + depositAmount: BigNumber; + repayAmount: BigNumber; + marketHelper: string; + market: string; + removeCollateral: boolean; + removeCollateralAmount: BigNumber; + lockData: ITapiocaOptionLiquidityProvision.IOptionsLockDataStructOutput; + participateData: ITapiocaOptionsBroker.IOptionsParticipateDataStructOutput; }; - - export type ICommonExternalContractsStructOutput = [ - string, - string, - string - ] & { magnetar: string; singularity: string; bigBang: string }; } export declare namespace ICommonOFT { @@ -280,17 +280,13 @@ export interface USDOMarketModuleInterface extends utils.Interface { "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; "isTrustedRemote(uint16,bytes)": FunctionFragment; - "lend(address,uint16,bytes,uint64,bytes)": FunctionFragment; - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -298,7 +294,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { "paused()": FunctionFragment; "payloadSizeLimitLookup(uint16)": FunctionFragment; "precrime()": FunctionFragment; - "remove(bytes)": FunctionFragment; "removeAsset(address,address,uint16,address,bytes,(address,address,address),(bool,uint256,bool,uint256,bool,uint256,(bool,address,uint256),(bool,address,uint256),(bool,uint256,bool,uint16,bytes),(bool,uint256,bool,uint16,bytes)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; "renounceOwnership()": FunctionFragment; "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -367,8 +362,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -379,16 +372,10 @@ export interface USDOMarketModuleInterface extends utils.Interface { | "increaseAllowance(address,uint256)" | "isTrustedRemote" | "isTrustedRemote(uint16,bytes)" - | "lend" - | "lend(address,uint16,bytes,uint64,bytes)" - | "lendInternal" - | "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))" | "lzEndpoint" | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -403,8 +390,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { | "payloadSizeLimitLookup(uint16)" | "precrime" | "precrime()" - | "remove" - | "remove(bytes)" | "removeAsset" | "removeAsset(address,address,uint16,address,bytes,(address,address,address),(bool,uint256,bool,uint256,bool,uint256,(bool,address,uint256),(bool,address,uint256),(bool,uint256,bool,uint16,bytes),(bool,uint256,bool,uint16,bytes)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" | "renounceOwnership" @@ -658,14 +643,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -716,44 +693,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { functionFragment: "isTrustedRemote(uint16,bytes)", values: [PromiseOrValue, PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "lend", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "lend(address,uint16,bytes,uint64,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "lendInternal", - values: [ - PromiseOrValue, - IUSDOBase.ILendOrRepayParamsStruct, - ICommonData.IApprovalStruct[], - ICommonData.IWithdrawParamsStruct - ] - ): string; - encodeFunctionData( - functionFragment: "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))", - values: [ - PromiseOrValue, - IUSDOBase.ILendOrRepayParamsStruct, - ICommonData.IApprovalStruct[], - ICommonData.IWithdrawParamsStruct - ] - ): string; encodeFunctionData( functionFragment: "lzEndpoint", values?: undefined @@ -780,14 +719,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -833,14 +764,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { functionFragment: "precrime()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "remove", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "remove(bytes)", - values: [PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "removeAsset", values: [ @@ -1260,14 +1183,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -1305,19 +1220,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { functionFragment: "isTrustedRemote(uint16,bytes)", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "lend", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "lend(address,uint16,bytes,uint64,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "lendInternal", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; decodeFunctionResult( functionFragment: "lzEndpoint()", @@ -1328,14 +1230,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1368,11 +1262,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result; decodeFunctionResult(functionFragment: "precrime()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "remove", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "remove(bytes)", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "removeAsset", data: BytesLike @@ -1558,9 +1447,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1586,18 +1472,6 @@ export interface USDOMarketModuleInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -1682,42 +1556,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -2127,10 +1965,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2193,40 +2027,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise<[boolean]>; - lend( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "lend(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lendInternal( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))"( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise<[string]>; "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; @@ -2247,10 +2047,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2305,16 +2101,6 @@ export interface USDOMarketModule extends BaseContract { "precrime()"(overrides?: CallOverrides): Promise<[string]>; - remove( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "remove(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - removeAsset( from: PromiseOrValue, to: PromiseOrValue, @@ -2816,10 +2602,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2882,40 +2664,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - lend( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "lend(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lendInternal( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))"( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -2936,10 +2684,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2994,16 +2738,6 @@ export interface USDOMarketModule extends BaseContract { "precrime()"(overrides?: CallOverrides): Promise; - remove( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "remove(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - removeAsset( from: PromiseOrValue, to: PromiseOrValue, @@ -3507,10 +3241,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3573,40 +3303,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - lend( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "lend(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - lendInternal( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: CallOverrides - ): Promise; - - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))"( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: CallOverrides - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -3627,10 +3323,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3685,16 +3377,6 @@ export interface USDOMarketModule extends BaseContract { "precrime()"(overrides?: CallOverrides): Promise; - remove( - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "remove(bytes)"( - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - removeAsset( from: PromiseOrValue, to: PromiseOrValue, @@ -4015,33 +3697,6 @@ export interface USDOMarketModule extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -4380,10 +4035,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4446,40 +4097,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - lend( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "lend(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lendInternal( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))"( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -4500,10 +4117,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4558,16 +4171,6 @@ export interface USDOMarketModule extends BaseContract { "precrime()"(overrides?: CallOverrides): Promise; - remove( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "remove(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - removeAsset( from: PromiseOrValue, to: PromiseOrValue, @@ -5070,10 +4673,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -5136,40 +4735,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: CallOverrides ): Promise; - lend( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "lend(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lendInternal( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "lendInternal(address,(bool,uint256,uint256,address,address,bool,uint256,(bool,address,uint128,uint128,uint256),(bool,address,uint256)),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],(bool,uint256,bool,uint16,bytes))"( - to: PromiseOrValue, - lendParams: IUSDOBase.ILendOrRepayParamsStruct, - approvals: ICommonData.IApprovalStruct[], - withdrawParams: ICommonData.IWithdrawParamsStruct, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - lzEndpoint(overrides?: CallOverrides): Promise; "lzEndpoint()"(overrides?: CallOverrides): Promise; @@ -5190,10 +4755,6 @@ export interface USDOMarketModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -5248,16 +4809,6 @@ export interface USDOMarketModule extends BaseContract { "precrime()"(overrides?: CallOverrides): Promise; - remove( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "remove(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - removeAsset( from: PromiseOrValue, to: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOOptionsDestinationModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOOptionsDestinationModule.ts new file mode 100644 index 00000000..3a08e169 --- /dev/null +++ b/src/typechain/tapioca-bar/usd0/modules/USDOOptionsDestinationModule.ts @@ -0,0 +1,4947 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export declare namespace ITapiocaOptionsBrokerCrossChain { + export type IExerciseLZSendTapDataStruct = { + withdrawOnAnotherChain: PromiseOrValue; + tapOftAddress: PromiseOrValue; + lzDstChainId: PromiseOrValue; + amount: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + extraGas: PromiseOrValue; + }; + + export type IExerciseLZSendTapDataStructOutput = [ + boolean, + string, + number, + BigNumber, + string, + BigNumber + ] & { + withdrawOnAnotherChain: boolean; + tapOftAddress: string; + lzDstChainId: number; + amount: BigNumber; + zroPaymentAddress: string; + extraGas: BigNumber; + }; +} + +export declare namespace ICommonData { + export type IApprovalStruct = { + permitAll: PromiseOrValue; + allowFailure: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; + actionType: PromiseOrValue; + target: PromiseOrValue; + permitBorrow: PromiseOrValue; + owner: PromiseOrValue; + spender: PromiseOrValue; + value: PromiseOrValue; + deadline: PromiseOrValue; + v: PromiseOrValue; + r: PromiseOrValue; + s: PromiseOrValue; + }; + + export type IApprovalStructOutput = [ + boolean, + boolean, + boolean, + number, + string, + boolean, + string, + string, + BigNumber, + BigNumber, + number, + string, + string + ] & { + permitAll: boolean; + allowFailure: boolean; + yieldBoxTypeApproval: boolean; + actionType: number; + target: string; + permitBorrow: boolean; + owner: string; + spender: string; + value: BigNumber; + deadline: BigNumber; + v: number; + r: string; + s: string; + }; +} + +export declare namespace ICommonOFT { + export type LzCallParamsStruct = { + refundAddress: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + adapterParams: PromiseOrValue; + }; + + export type LzCallParamsStructOutput = [string, string, string] & { + refundAddress: string; + zroPaymentAddress: string; + adapterParams: string; + }; +} + +export interface USDOOptionsDestinationModuleInterface extends utils.Interface { + functions: { + "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment; + "NO_EXTRA_GAS()": FunctionFragment; + "PT_SEND()": FunctionFragment; + "PT_SEND_AND_CALL()": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "allowedBurner(uint256,address)": FunctionFragment; + "allowedMinter(uint256,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)": FunctionFragment; + "circulatingSupply()": FunctionFragment; + "cluster()": FunctionFragment; + "conservator()": FunctionFragment; + "creditedPackets(uint16,bytes,uint64)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; + "exercise(address,uint16,bytes,uint64,bytes)": FunctionFragment; + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)": FunctionFragment; + "failedMessages(uint16,bytes,uint64)": FunctionFragment; + "forceResumeReceive(uint16,bytes)": FunctionFragment; + "getConfig(uint16,uint16,address,uint256)": FunctionFragment; + "getTrustedRemoteAddress(uint16)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "isTrustedRemote(uint16,bytes)": FunctionFragment; + "lzEndpoint()": FunctionFragment; + "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "minDstGasLookup(uint16,uint16)": FunctionFragment; + "name()": FunctionFragment; + "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "paused()": FunctionFragment; + "payloadSizeLimitLookup(uint16)": FunctionFragment; + "precrime()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment; + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; + "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; + "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; + "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; + "setPrecrime(address)": FunctionFragment; + "setReceiveVersion(uint16)": FunctionFragment; + "setSendVersion(uint16)": FunctionFragment; + "setTrustedRemote(uint16,bytes)": FunctionFragment; + "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment; + "setUseCustomAdapterParams(bool)": FunctionFragment; + "sharedDecimals()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "token()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "trustedRemoteLookup(uint16)": FunctionFragment; + "useCustomAdapterParams()": FunctionFragment; + "yieldBox()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "DEFAULT_PAYLOAD_SIZE_LIMIT" + | "DEFAULT_PAYLOAD_SIZE_LIMIT()" + | "NO_EXTRA_GAS" + | "NO_EXTRA_GAS()" + | "PT_SEND" + | "PT_SEND()" + | "PT_SEND_AND_CALL" + | "PT_SEND_AND_CALL()" + | "allowance" + | "allowance(address,address)" + | "allowedBurner" + | "allowedBurner(uint256,address)" + | "allowedMinter" + | "allowedMinter(uint256,address)" + | "approve" + | "approve(address,uint256)" + | "balanceOf" + | "balanceOf(address)" + | "callOnOFTReceived" + | "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)" + | "circulatingSupply" + | "circulatingSupply()" + | "cluster" + | "cluster()" + | "conservator" + | "conservator()" + | "creditedPackets" + | "creditedPackets(uint16,bytes,uint64)" + | "decimals" + | "decimals()" + | "decreaseAllowance" + | "decreaseAllowance(address,uint256)" + | "estimateSendAndCallFee" + | "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)" + | "estimateSendFee" + | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" + | "exercise" + | "exercise(address,uint16,bytes,uint64,bytes)" + | "exerciseInternal" + | "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)" + | "failedMessages" + | "failedMessages(uint16,bytes,uint64)" + | "forceResumeReceive" + | "forceResumeReceive(uint16,bytes)" + | "getConfig" + | "getConfig(uint16,uint16,address,uint256)" + | "getTrustedRemoteAddress" + | "getTrustedRemoteAddress(uint16)" + | "increaseAllowance" + | "increaseAllowance(address,uint256)" + | "isTrustedRemote" + | "isTrustedRemote(uint16,bytes)" + | "lzEndpoint" + | "lzEndpoint()" + | "lzReceive" + | "lzReceive(uint16,bytes,uint64,bytes)" + | "minDstGasLookup" + | "minDstGasLookup(uint16,uint16)" + | "name" + | "name()" + | "nonblockingLzReceive" + | "nonblockingLzReceive(uint16,bytes,uint64,bytes)" + | "owner" + | "owner()" + | "paused" + | "paused()" + | "payloadSizeLimitLookup" + | "payloadSizeLimitLookup(uint16)" + | "precrime" + | "precrime()" + | "renounceOwnership" + | "renounceOwnership()" + | "retryMessage" + | "retryMessage(uint16,bytes,uint64,bytes)" + | "sendAndCall" + | "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))" + | "sendFrom" + | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" + | "setConfig" + | "setConfig(uint16,uint16,uint256,bytes)" + | "setMinDstGas" + | "setMinDstGas(uint16,uint16,uint256)" + | "setPayloadSizeLimit" + | "setPayloadSizeLimit(uint16,uint256)" + | "setPrecrime" + | "setPrecrime(address)" + | "setReceiveVersion" + | "setReceiveVersion(uint16)" + | "setSendVersion" + | "setSendVersion(uint16)" + | "setTrustedRemote" + | "setTrustedRemote(uint16,bytes)" + | "setTrustedRemoteAddress" + | "setTrustedRemoteAddress(uint16,bytes)" + | "setUseCustomAdapterParams" + | "setUseCustomAdapterParams(bool)" + | "sharedDecimals" + | "sharedDecimals()" + | "supportsInterface" + | "supportsInterface(bytes4)" + | "symbol" + | "symbol()" + | "token" + | "token()" + | "totalSupply" + | "totalSupply()" + | "transfer" + | "transfer(address,uint256)" + | "transferFrom" + | "transferFrom(address,address,uint256)" + | "transferOwnership" + | "transferOwnership(address)" + | "trustedRemoteLookup" + | "trustedRemoteLookup(uint16)" + | "useCustomAdapterParams" + | "useCustomAdapterParams()" + | "yieldBox" + | "yieldBox()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "NO_EXTRA_GAS()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "PT_SEND", values?: undefined): string; + encodeFunctionData(functionFragment: "PT_SEND()", values?: undefined): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PT_SEND_AND_CALL()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedBurner(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowedMinter(uint256,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "circulatingSupply()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "cluster", values?: undefined): string; + encodeFunctionData(functionFragment: "cluster()", values?: undefined): string; + encodeFunctionData( + functionFragment: "conservator", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "conservator()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "creditedPackets", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "exercise", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "exercise(address,uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "exerciseInternal", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[], + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + PromiseOrValue, + ICommonData.IApprovalStruct[], + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "failedMessages(uint16,bytes,uint64)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "forceResumeReceive(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTrustedRemoteAddress(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzEndpoint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "lzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minDstGasLookup(uint16,uint16)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "name()", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData(functionFragment: "paused()", values?: undefined): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "payloadSizeLimitLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "precrime", values?: undefined): string; + encodeFunctionData( + functionFragment: "precrime()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "retryMessage", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ICommonOFT.LzCallParamsStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setPrecrime(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setReceiveVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSendVersion(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemote(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setUseCustomAdapterParams(bool)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "sharedDecimals()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface(bytes4)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData(functionFragment: "token()", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "trustedRemoteLookup(uint16)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "useCustomAdapterParams()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "yieldBox", values?: undefined): string; + encodeFunctionData( + functionFragment: "yieldBox()", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "NO_EXTRA_GAS()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "PT_SEND", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "PT_SEND()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PT_SEND_AND_CALL()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedBurner(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowedMinter(uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "circulatingSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "cluster", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "cluster()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "conservator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "conservator()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "creditedPackets(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "exercise", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "exercise(address,uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "exerciseInternal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "failedMessages(uint16,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "forceResumeReceive(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getConfig(uint16,uint16,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTrustedRemoteAddress(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzEndpoint()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minDstGasLookup(uint16,uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nonblockingLzReceive(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "payloadSizeLimitLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "precrime()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "retryMessage(uint16,bytes,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "sendFrom", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setConfig(uint16,uint16,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinDstGas(uint16,uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPayloadSizeLimit(uint16,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPrecrime(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setReceiveVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSendVersion(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemote(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTrustedRemoteAddress(uint16,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setUseCustomAdapterParams(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sharedDecimals()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface(bytes4)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transfer(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "trustedRemoteLookup(uint16)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "useCustomAdapterParams()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "yieldBox", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "yieldBox()", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; + "NonContractAddress(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PausedUpdated(bool,bool)": EventFragment; + "ReceiveFromChain(uint16,address,uint256)": EventFragment; + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment; + "SendToChain(uint16,address,bytes32,uint256)": EventFragment; + "SetBurnerStatus(address,bool)": EventFragment; + "SetMinDstGas(uint16,uint16,uint256)": EventFragment; + "SetMinterStatus(address,bool)": EventFragment; + "SetPrecrime(address)": EventFragment; + "SetTrustedRemote(uint16,bytes)": EventFragment; + "SetTrustedRemoteAddress(uint16,bytes)": EventFragment; + "SetUseCustomAdapterParams(bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Approval(address,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "CallOFTReceivedSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "NonContractAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "NonContractAddress(address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PausedUpdated(bool,bool)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ReceiveFromChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "ReceiveFromChain(uint16,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "RetryMessageSuccess(uint16,bytes,uint64,bytes32)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SendToChain"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SendToChain(uint16,address,bytes32,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetBurnerStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetBurnerStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinDstGas(uint16,uint16,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetMinterStatus"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetMinterStatus(address,bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetPrecrime(address)"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemote(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetTrustedRemoteAddress(uint16,bytes)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetUseCustomAdapterParams"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SetUseCustomAdapterParams(bool)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Transfer(address,address,uint256)" + ): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface CallOFTReceivedSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _hash: string; +} +export type CallOFTReceivedSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + CallOFTReceivedSuccessEventObject +>; + +export type CallOFTReceivedSuccessEventFilter = + TypedEventFilter; + +export interface MessageFailedEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payload: string; + _reason: string; +} +export type MessageFailedEvent = TypedEvent< + [number, string, BigNumber, string, string], + MessageFailedEventObject +>; + +export type MessageFailedEventFilter = TypedEventFilter; + +export interface NonContractAddressEventObject { + _address: string; +} +export type NonContractAddressEvent = TypedEvent< + [string], + NonContractAddressEventObject +>; + +export type NonContractAddressEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PausedUpdatedEventObject { + oldState: boolean; + newState: boolean; +} +export type PausedUpdatedEvent = TypedEvent< + [boolean, boolean], + PausedUpdatedEventObject +>; + +export type PausedUpdatedEventFilter = TypedEventFilter; + +export interface ReceiveFromChainEventObject { + _srcChainId: number; + _to: string; + _amount: BigNumber; +} +export type ReceiveFromChainEvent = TypedEvent< + [number, string, BigNumber], + ReceiveFromChainEventObject +>; + +export type ReceiveFromChainEventFilter = + TypedEventFilter; + +export interface RetryMessageSuccessEventObject { + _srcChainId: number; + _srcAddress: string; + _nonce: BigNumber; + _payloadHash: string; +} +export type RetryMessageSuccessEvent = TypedEvent< + [number, string, BigNumber, string], + RetryMessageSuccessEventObject +>; + +export type RetryMessageSuccessEventFilter = + TypedEventFilter; + +export interface SendToChainEventObject { + _dstChainId: number; + _from: string; + _toAddress: string; + _amount: BigNumber; +} +export type SendToChainEvent = TypedEvent< + [number, string, string, BigNumber], + SendToChainEventObject +>; + +export type SendToChainEventFilter = TypedEventFilter; + +export interface SetBurnerStatusEventObject { + _for: string; + _status: boolean; +} +export type SetBurnerStatusEvent = TypedEvent< + [string, boolean], + SetBurnerStatusEventObject +>; + +export type SetBurnerStatusEventFilter = TypedEventFilter; + +export interface SetMinDstGasEventObject { + _dstChainId: number; + _type: number; + _minDstGas: BigNumber; +} +export type SetMinDstGasEvent = TypedEvent< + [number, number, BigNumber], + SetMinDstGasEventObject +>; + +export type SetMinDstGasEventFilter = TypedEventFilter; + +export interface SetMinterStatusEventObject { + _for: string; + _status: boolean; +} +export type SetMinterStatusEvent = TypedEvent< + [string, boolean], + SetMinterStatusEventObject +>; + +export type SetMinterStatusEventFilter = TypedEventFilter; + +export interface SetPrecrimeEventObject { + precrime: string; +} +export type SetPrecrimeEvent = TypedEvent<[string], SetPrecrimeEventObject>; + +export type SetPrecrimeEventFilter = TypedEventFilter; + +export interface SetTrustedRemoteEventObject { + _remoteChainId: number; + _path: string; +} +export type SetTrustedRemoteEvent = TypedEvent< + [number, string], + SetTrustedRemoteEventObject +>; + +export type SetTrustedRemoteEventFilter = + TypedEventFilter; + +export interface SetTrustedRemoteAddressEventObject { + _remoteChainId: number; + _remoteAddress: string; +} +export type SetTrustedRemoteAddressEvent = TypedEvent< + [number, string], + SetTrustedRemoteAddressEventObject +>; + +export type SetTrustedRemoteAddressEventFilter = + TypedEventFilter; + +export interface SetUseCustomAdapterParamsEventObject { + _useCustomAdapterParams: boolean; +} +export type SetUseCustomAdapterParamsEvent = TypedEvent< + [boolean], + SetUseCustomAdapterParamsEventObject +>; + +export type SetUseCustomAdapterParamsEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface USDOOptionsDestinationModule extends BaseContract { + contractName: "USDOOptionsDestinationModule"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: USDOOptionsDestinationModuleInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise<[BigNumber]>; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + PT_SEND(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND()"(overrides?: CallOverrides): Promise<[number]>; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise<[number]>; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise<[number]>; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "circulatingSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + cluster(overrides?: CallOverrides): Promise<[string]>; + + "cluster()"(overrides?: CallOverrides): Promise<[string]>; + + conservator(overrides?: CallOverrides): Promise<[string]>; + + "conservator()"(overrides?: CallOverrides): Promise<[string]>; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + "decimals()"(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + exercise( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exercise(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + exerciseInternal( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + lzEndpoint(overrides?: CallOverrides): Promise<[string]>; + + "lzEndpoint()"(overrides?: CallOverrides): Promise<[string]>; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + "name()"(overrides?: CallOverrides): Promise<[string]>; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + "paused()"(overrides?: CallOverrides): Promise<[boolean]>; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + precrime(overrides?: CallOverrides): Promise<[string]>; + + "precrime()"(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise<[number]>; + + "sharedDecimals()"(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + "symbol()"(overrides?: CallOverrides): Promise<[string]>; + + token(overrides?: CallOverrides): Promise<[string]>; + + "token()"(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + useCustomAdapterParams(overrides?: CallOverrides): Promise<[boolean]>; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise<[boolean]>; + + yieldBox(overrides?: CallOverrides): Promise<[string]>; + + "yieldBox()"(overrides?: CallOverrides): Promise<[string]>; + }; + + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"(overrides?: CallOverrides): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + exercise( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exercise(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + exerciseInternal( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } + >; + + exercise( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "exercise(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + exerciseInternal( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "renounceOwnership()"(overrides?: CallOverrides): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: CallOverrides + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + CallOFTReceivedSuccess( + _srcChainId?: PromiseOrValue | null, + _srcAddress?: null, + _nonce?: null, + _hash?: null + ): CallOFTReceivedSuccessEventFilter; + + "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + MessageFailed( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payload?: null, + _reason?: null + ): MessageFailedEventFilter; + + "NonContractAddress(address)"( + _address?: null + ): NonContractAddressEventFilter; + NonContractAddress(_address?: null): NonContractAddressEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PausedUpdated(bool,bool)"( + oldState?: null, + newState?: null + ): PausedUpdatedEventFilter; + PausedUpdated(oldState?: null, newState?: null): PausedUpdatedEventFilter; + + "ReceiveFromChain(uint16,address,uint256)"( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + ReceiveFromChain( + _srcChainId?: PromiseOrValue | null, + _to?: PromiseOrValue | null, + _amount?: null + ): ReceiveFromChainEventFilter; + + "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + RetryMessageSuccess( + _srcChainId?: null, + _srcAddress?: null, + _nonce?: null, + _payloadHash?: null + ): RetryMessageSuccessEventFilter; + + "SendToChain(uint16,address,bytes32,uint256)"( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + SendToChain( + _dstChainId?: PromiseOrValue | null, + _from?: PromiseOrValue | null, + _toAddress?: PromiseOrValue | null, + _amount?: null + ): SendToChainEventFilter; + + "SetBurnerStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + SetBurnerStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetBurnerStatusEventFilter; + + "SetMinDstGas(uint16,uint16,uint256)"( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + SetMinDstGas( + _dstChainId?: null, + _type?: null, + _minDstGas?: null + ): SetMinDstGasEventFilter; + + "SetMinterStatus(address,bool)"( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + SetMinterStatus( + _for?: PromiseOrValue | null, + _status?: null + ): SetMinterStatusEventFilter; + + "SetPrecrime(address)"(precrime?: null): SetPrecrimeEventFilter; + SetPrecrime(precrime?: null): SetPrecrimeEventFilter; + + "SetTrustedRemote(uint16,bytes)"( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + SetTrustedRemote( + _remoteChainId?: null, + _path?: null + ): SetTrustedRemoteEventFilter; + + "SetTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + SetTrustedRemoteAddress( + _remoteChainId?: null, + _remoteAddress?: null + ): SetTrustedRemoteAddressEventFilter; + + "SetUseCustomAdapterParams(bool)"( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + SetUseCustomAdapterParams( + _useCustomAdapterParams?: null + ): SetUseCustomAdapterParamsEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"(overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + exercise( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exercise(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + exerciseInternal( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams(overrides?: CallOverrides): Promise; + + "useCustomAdapterParams()"(overrides?: CallOverrides): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_PAYLOAD_SIZE_LIMIT( + overrides?: CallOverrides + ): Promise; + + "DEFAULT_PAYLOAD_SIZE_LIMIT()"( + overrides?: CallOverrides + ): Promise; + + NO_EXTRA_GAS(overrides?: CallOverrides): Promise; + + "NO_EXTRA_GAS()"(overrides?: CallOverrides): Promise; + + PT_SEND(overrides?: CallOverrides): Promise; + + "PT_SEND()"(overrides?: CallOverrides): Promise; + + PT_SEND_AND_CALL(overrides?: CallOverrides): Promise; + + "PT_SEND_AND_CALL()"( + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedBurner( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedBurner(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowedMinter( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowedMinter(uint256,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callOnOFTReceived( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _from: PromiseOrValue, + _to: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _gasForCall: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + circulatingSupply(overrides?: CallOverrides): Promise; + + "circulatingSupply()"( + overrides?: CallOverrides + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + conservator(overrides?: CallOverrides): Promise; + + "conservator()"(overrides?: CallOverrides): Promise; + + creditedPackets( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "creditedPackets(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + "decimals()"(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "decreaseAllowance(address,uint256)"( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + estimateSendAndCallFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + estimateSendFee( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "estimateSendFee(uint16,bytes32,uint256,bool,bytes)"( + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _useZro: PromiseOrValue, + _adapterParams: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + exercise( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exercise(address,uint16,bytes,uint64,bytes)"( + module: PromiseOrValue, + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + exerciseInternal( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( + from: PromiseOrValue, + oTAPTokenID: PromiseOrValue, + paymentToken: PromiseOrValue, + tapAmount: PromiseOrValue, + target: PromiseOrValue, + tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, + paymentTokenAmount: PromiseOrValue, + approvals: ICommonData.IApprovalStruct[], + airdropAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + failedMessages( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "failedMessages(uint16,bytes,uint64)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + arg2: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forceResumeReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "forceResumeReceive(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getConfig(uint16,uint16,address,uint256)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + arg2: PromiseOrValue, + _configType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getTrustedRemoteAddress(uint16)"( + _remoteChainId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "increaseAllowance(address,uint256)"( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isTrustedRemote( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "isTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + lzEndpoint(overrides?: CallOverrides): Promise; + + "lzEndpoint()"(overrides?: CallOverrides): Promise; + + lzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "lzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + minDstGasLookup( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "minDstGasLookup(uint16,uint16)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + "name()"(overrides?: CallOverrides): Promise; + + nonblockingLzReceive( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "nonblockingLzReceive(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + payloadSizeLimitLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "payloadSizeLimitLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + precrime(overrides?: CallOverrides): Promise; + + "precrime()"(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "renounceOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + retryMessage( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "retryMessage(uint16,bytes,uint64,bytes)"( + _srcChainId: PromiseOrValue, + _srcAddress: PromiseOrValue, + _nonce: PromiseOrValue, + _payload: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendAndCall( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _payload: PromiseOrValue, + _dstGasForCall: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + sendFrom( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))"( + _from: PromiseOrValue, + _dstChainId: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + _callParams: ICommonOFT.LzCallParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + setConfig( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(uint16,uint16,uint256,bytes)"( + _version: PromiseOrValue, + _chainId: PromiseOrValue, + _configType: PromiseOrValue, + _config: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinDstGas( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinDstGas(uint16,uint16,uint256)"( + _dstChainId: PromiseOrValue, + _packetType: PromiseOrValue, + _minGas: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPayloadSizeLimit( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPayloadSizeLimit(uint16,uint256)"( + _dstChainId: PromiseOrValue, + _size: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setPrecrime( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setPrecrime(address)"( + _precrime: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setReceiveVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setReceiveVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSendVersion( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSendVersion(uint16)"( + _version: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemote( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemote(uint16,bytes)"( + _srcChainId: PromiseOrValue, + _path: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTrustedRemoteAddress( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setTrustedRemoteAddress(uint16,bytes)"( + _remoteChainId: PromiseOrValue, + _remoteAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setUseCustomAdapterParams( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setUseCustomAdapterParams(bool)"( + _useCustomAdapterParams: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + sharedDecimals(overrides?: CallOverrides): Promise; + + "sharedDecimals()"( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "supportsInterface(bytes4)"( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + "symbol()"(overrides?: CallOverrides): Promise; + + token(overrides?: CallOverrides): Promise; + + "token()"(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address)"( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + trustedRemoteLookup( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "trustedRemoteLookup(uint16)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + useCustomAdapterParams( + overrides?: CallOverrides + ): Promise; + + "useCustomAdapterParams()"( + overrides?: CallOverrides + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/usd0/modules/USDOOptionsModule.ts b/src/typechain/tapioca-bar/usd0/modules/USDOOptionsModule.ts index b2333395..3926cd05 100644 --- a/src/typechain/tapioca-bar/usd0/modules/USDOOptionsModule.ts +++ b/src/typechain/tapioca-bar/usd0/modules/USDOOptionsModule.ts @@ -29,31 +29,6 @@ import type { } from "../../common"; export declare namespace ITapiocaOptionsBrokerCrossChain { - export type IExerciseLZSendTapDataStruct = { - withdrawOnAnotherChain: PromiseOrValue; - tapOftAddress: PromiseOrValue; - lzDstChainId: PromiseOrValue; - amount: PromiseOrValue; - zroPaymentAddress: PromiseOrValue; - extraGas: PromiseOrValue; - }; - - export type IExerciseLZSendTapDataStructOutput = [ - boolean, - string, - number, - BigNumber, - string, - BigNumber - ] & { - withdrawOnAnotherChain: boolean; - tapOftAddress: string; - lzDstChainId: number; - amount: BigNumber; - zroPaymentAddress: string; - extraGas: BigNumber; - }; - export type IExerciseOptionsDataStruct = { from: PromiseOrValue; target: PromiseOrValue; @@ -90,13 +65,38 @@ export declare namespace ITapiocaOptionsBrokerCrossChain { zroPaymentAddress: string; extraGas: BigNumber; }; + + export type IExerciseLZSendTapDataStruct = { + withdrawOnAnotherChain: PromiseOrValue; + tapOftAddress: PromiseOrValue; + lzDstChainId: PromiseOrValue; + amount: PromiseOrValue; + zroPaymentAddress: PromiseOrValue; + extraGas: PromiseOrValue; + }; + + export type IExerciseLZSendTapDataStructOutput = [ + boolean, + string, + number, + BigNumber, + string, + BigNumber + ] & { + withdrawOnAnotherChain: boolean; + tapOftAddress: string; + lzDstChainId: number; + amount: BigNumber; + zroPaymentAddress: string; + extraGas: BigNumber; + }; } export declare namespace ICommonData { export type IApprovalStruct = { permitAll: PromiseOrValue; allowFailure: PromiseOrValue; - approveOnYieldBox: PromiseOrValue; + yieldBoxTypeApproval: PromiseOrValue; actionType: PromiseOrValue; target: PromiseOrValue; permitBorrow: PromiseOrValue; @@ -126,7 +126,7 @@ export declare namespace ICommonData { ] & { permitAll: boolean; allowFailure: boolean; - approveOnYieldBox: boolean; + yieldBoxTypeApproval: boolean; actionType: number; target: string; permitBorrow: boolean; @@ -154,20 +154,6 @@ export declare namespace ICommonOFT { }; } -export declare namespace ISendFrom { - export type LzCallParamsStruct = { - refundAddress: PromiseOrValue; - zroPaymentAddress: PromiseOrValue; - adapterParams: PromiseOrValue; - }; - - export type LzCallParamsStructOutput = [string, string, string] & { - refundAddress: string; - zroPaymentAddress: string; - adapterParams: string; - }; -} - export interface USDOOptionsModuleInterface extends utils.Interface { functions: { "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment; @@ -188,11 +174,8 @@ export interface USDOOptionsModuleInterface extends utils.Interface { "decreaseAllowance(address,uint256)": FunctionFragment; "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment; "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment; - "exercise(address,uint16,bytes,uint64,bytes)": FunctionFragment; - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)": FunctionFragment; "exerciseOption((address,address,uint256,uint256,address,uint256),(uint16,address,uint256),(bool,address,uint16,uint256,address,uint256),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],bytes)": FunctionFragment; "failedMessages(uint16,bytes,uint64)": FunctionFragment; - "flashMintFee()": FunctionFragment; "forceResumeReceive(uint16,bytes)": FunctionFragment; "getConfig(uint16,uint16,address,uint256)": FunctionFragment; "getTrustedRemoteAddress(uint16)": FunctionFragment; @@ -200,7 +183,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { "isTrustedRemote(uint16,bytes)": FunctionFragment; "lzEndpoint()": FunctionFragment; "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; - "maxFlashMint()": FunctionFragment; "minDstGasLookup(uint16,uint16)": FunctionFragment; "name()": FunctionFragment; "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment; @@ -212,7 +194,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment; "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment; "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment; - "sendFromDestination(bytes)": FunctionFragment; "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment; "setMinDstGas(uint16,uint16,uint256)": FunctionFragment; "setPayloadSizeLimit(uint16,uint256)": FunctionFragment; @@ -230,7 +211,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; "transferOwnership(address)": FunctionFragment; - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])": FunctionFragment; "trustedRemoteLookup(uint16)": FunctionFragment; "useCustomAdapterParams()": FunctionFragment; "yieldBox()": FunctionFragment; @@ -274,16 +254,10 @@ export interface USDOOptionsModuleInterface extends utils.Interface { | "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)" | "estimateSendFee" | "estimateSendFee(uint16,bytes32,uint256,bool,bytes)" - | "exercise" - | "exercise(address,uint16,bytes,uint64,bytes)" - | "exerciseInternal" - | "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)" | "exerciseOption" | "exerciseOption((address,address,uint256,uint256,address,uint256),(uint16,address,uint256),(bool,address,uint16,uint256,address,uint256),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],bytes)" | "failedMessages" | "failedMessages(uint16,bytes,uint64)" - | "flashMintFee" - | "flashMintFee()" | "forceResumeReceive" | "forceResumeReceive(uint16,bytes)" | "getConfig" @@ -298,8 +272,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { | "lzEndpoint()" | "lzReceive" | "lzReceive(uint16,bytes,uint64,bytes)" - | "maxFlashMint" - | "maxFlashMint()" | "minDstGasLookup" | "minDstGasLookup(uint16,uint16)" | "name" @@ -322,8 +294,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { | "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))" | "sendFrom" | "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))" - | "sendFromDestination" - | "sendFromDestination(bytes)" | "setConfig" | "setConfig(uint16,uint16,uint256,bytes)" | "setMinDstGas" @@ -358,8 +328,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { | "transferFrom(address,address,uint256)" | "transferOwnership" | "transferOwnership(address)" - | "triggerSendFrom" - | "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])" | "trustedRemoteLookup" | "trustedRemoteLookup(uint16)" | "useCustomAdapterParams" @@ -551,54 +519,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "exercise", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "exercise(address,uint16,bytes,uint64,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "exerciseInternal", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - PromiseOrValue, - ICommonData.IApprovalStruct[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - PromiseOrValue, - ICommonData.IApprovalStruct[], - PromiseOrValue - ] - ): string; encodeFunctionData( functionFragment: "exerciseOption", values: [ @@ -635,14 +555,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "flashMintFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "flashMintFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "forceResumeReceive", values: [PromiseOrValue, PromiseOrValue] @@ -719,14 +631,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "maxFlashMint", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "maxFlashMint()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "minDstGasLookup", values: [PromiseOrValue, PromiseOrValue] @@ -842,14 +746,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { ICommonOFT.LzCallParamsStruct ] ): string; - encodeFunctionData( - functionFragment: "sendFromDestination", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sendFromDestination(bytes)", - values: [PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "setConfig", values: [ @@ -1000,26 +896,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "transferOwnership(address)", values: [PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "triggerSendFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ISendFrom.LzCallParamsStruct, - ICommonData.IApprovalStruct[] - ] - ): string; - encodeFunctionData( - functionFragment: "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ISendFrom.LzCallParamsStruct, - ICommonData.IApprovalStruct[] - ] - ): string; encodeFunctionData( functionFragment: "trustedRemoteLookup", values: [PromiseOrValue] @@ -1159,19 +1035,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "estimateSendFee(uint16,bytes32,uint256,bool,bytes)", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "exercise", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "exercise(address,uint16,bytes,uint64,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "exerciseInternal", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "exerciseOption", data: BytesLike @@ -1188,14 +1051,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "failedMessages(uint16,bytes,uint64)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "flashMintFee()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "forceResumeReceive", data: BytesLike @@ -1243,14 +1098,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "lzReceive(uint16,bytes,uint64,bytes)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "maxFlashMint()", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "minDstGasLookup", data: BytesLike @@ -1312,14 +1159,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "sendFromDestination", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sendFromDestination(bytes)", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setConfig(uint16,uint16,uint256,bytes)", @@ -1438,14 +1277,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { functionFragment: "transferOwnership(address)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "triggerSendFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "trustedRemoteLookup", data: BytesLike @@ -1468,9 +1299,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment; - "ConservatorUpdated(address,address)": EventFragment; - "FlashMintFeeUpdated(uint256,uint256)": EventFragment; - "MaxFlashMintUpdated(uint256,uint256)": EventFragment; "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment; "NonContractAddress(address)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; @@ -1496,18 +1324,6 @@ export interface USDOOptionsModuleInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "FlashMintFeeUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "FlashMintFeeUpdated(uint256,uint256)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "MaxFlashMintUpdated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MaxFlashMintUpdated(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment; getEvent( nameOrSignatureOrTopic: "MessageFailed(uint16,bytes,uint64,bytes,bytes)" @@ -1592,42 +1408,6 @@ export type CallOFTReceivedSuccessEvent = TypedEvent< export type CallOFTReceivedSuccessEventFilter = TypedEventFilter; -export interface ConservatorUpdatedEventObject { - old: string; - _new: string; -} -export type ConservatorUpdatedEvent = TypedEvent< - [string, string], - ConservatorUpdatedEventObject ->; - -export type ConservatorUpdatedEventFilter = - TypedEventFilter; - -export interface FlashMintFeeUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type FlashMintFeeUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - FlashMintFeeUpdatedEventObject ->; - -export type FlashMintFeeUpdatedEventFilter = - TypedEventFilter; - -export interface MaxFlashMintUpdatedEventObject { - _old: BigNumber; - _new: BigNumber; -} -export type MaxFlashMintUpdatedEvent = TypedEvent< - [BigNumber, BigNumber], - MaxFlashMintUpdatedEventObject ->; - -export type MaxFlashMintUpdatedEventFilter = - TypedEventFilter; - export interface MessageFailedEventObject { _srcChainId: number; _srcAddress: string; @@ -2023,50 +1803,6 @@ export interface USDOOptionsModule extends BaseContract { [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } >; - exercise( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exercise(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exerciseInternal( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - exerciseOption( optionsData: ITapiocaOptionsBrokerCrossChain.IExerciseOptionsDataStruct, lzData: ITapiocaOptionsBrokerCrossChain.IExerciseLZDataStruct, @@ -2099,10 +1835,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise<[string]>; - flashMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "flashMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2185,10 +1917,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise<[BigNumber]>; - - "maxFlashMint()"(overrides?: CallOverrides): Promise<[BigNumber]>; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2307,16 +2035,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - sendFromDestination( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sendFromDestination(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -2485,24 +2203,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - triggerSendFrom( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - trustedRemoteLookup( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2710,50 +2410,6 @@ export interface USDOOptionsModule extends BaseContract { [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } >; - exercise( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exercise(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exerciseInternal( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - exerciseOption( optionsData: ITapiocaOptionsBrokerCrossChain.IExerciseOptionsDataStruct, lzData: ITapiocaOptionsBrokerCrossChain.IExerciseLZDataStruct, @@ -2786,10 +2442,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -2872,10 +2524,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -2994,16 +2642,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - sendFromDestination( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sendFromDestination(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -3172,24 +2810,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - triggerSendFrom( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - trustedRemoteLookup( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3399,50 +3019,6 @@ export interface USDOOptionsModule extends BaseContract { [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber } >; - exercise( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "exercise(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - exerciseInternal( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - exerciseOption( optionsData: ITapiocaOptionsBrokerCrossChain.IExerciseOptionsDataStruct, lzData: ITapiocaOptionsBrokerCrossChain.IExerciseLZDataStruct, @@ -3475,10 +3051,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -3561,10 +3133,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -3679,16 +3247,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - sendFromDestination( - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sendFromDestination(bytes)"( - _payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -3857,24 +3415,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - triggerSendFrom( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: CallOverrides - ): Promise; - - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: CallOverrides - ): Promise; - trustedRemoteLookup( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3919,33 +3459,6 @@ export interface USDOOptionsModule extends BaseContract { _hash?: null ): CallOFTReceivedSuccessEventFilter; - "ConservatorUpdated(address,address)"( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - ConservatorUpdated( - old?: PromiseOrValue | null, - _new?: PromiseOrValue | null - ): ConservatorUpdatedEventFilter; - - "FlashMintFeeUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - FlashMintFeeUpdated( - _old?: null, - _new?: null - ): FlashMintFeeUpdatedEventFilter; - - "MaxFlashMintUpdated(uint256,uint256)"( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - MaxFlashMintUpdated( - _old?: null, - _new?: null - ): MaxFlashMintUpdatedEventFilter; - "MessageFailed(uint16,bytes,uint64,bytes,bytes)"( _srcChainId?: null, _srcAddress?: null, @@ -4270,50 +3783,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - exercise( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exercise(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exerciseInternal( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - exerciseOption( optionsData: ITapiocaOptionsBrokerCrossChain.IExerciseOptionsDataStruct, lzData: ITapiocaOptionsBrokerCrossChain.IExerciseLZDataStruct, @@ -4346,10 +3815,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -4432,10 +3897,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -4554,16 +4015,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - sendFromDestination( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sendFromDestination(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -4732,24 +4183,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - triggerSendFrom( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - trustedRemoteLookup( arg0: PromiseOrValue, overrides?: CallOverrides @@ -4958,50 +4391,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - exercise( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exercise(address,uint16,bytes,uint64,bytes)"( - module: PromiseOrValue, - _srcChainId: PromiseOrValue, - _srcAddress: PromiseOrValue, - _nonce: PromiseOrValue, - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exerciseInternal( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "exerciseInternal(address,uint256,address,uint256,address,(bool,address,uint16,uint256,address,uint256),uint256,(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[],uint256)"( - from: PromiseOrValue, - oTAPTokenID: PromiseOrValue, - paymentToken: PromiseOrValue, - tapAmount: PromiseOrValue, - target: PromiseOrValue, - tapSendData: ITapiocaOptionsBrokerCrossChain.IExerciseLZSendTapDataStruct, - paymentTokenAmount: PromiseOrValue, - approvals: ICommonData.IApprovalStruct[], - airdropAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - exerciseOption( optionsData: ITapiocaOptionsBrokerCrossChain.IExerciseOptionsDataStruct, lzData: ITapiocaOptionsBrokerCrossChain.IExerciseLZDataStruct, @@ -5034,10 +4423,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: CallOverrides ): Promise; - flashMintFee(overrides?: CallOverrides): Promise; - - "flashMintFee()"(overrides?: CallOverrides): Promise; - forceResumeReceive( _srcChainId: PromiseOrValue, _srcAddress: PromiseOrValue, @@ -5120,10 +4505,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - maxFlashMint(overrides?: CallOverrides): Promise; - - "maxFlashMint()"(overrides?: CallOverrides): Promise; - minDstGasLookup( arg0: PromiseOrValue, arg1: PromiseOrValue, @@ -5242,16 +4623,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise; - sendFromDestination( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sendFromDestination(bytes)"( - _payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - setConfig( _version: PromiseOrValue, _chainId: PromiseOrValue, @@ -5422,24 +4793,6 @@ export interface USDOOptionsModule extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - triggerSendFrom( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "triggerSendFrom(uint16,bytes,uint256,(address,address,bytes),(bool,bool,bool,uint16,address,bool,address,address,uint256,uint256,uint8,bytes32,bytes32)[])"( - lzDstChainId: PromiseOrValue, - airdropAdapterParams: PromiseOrValue, - amount: PromiseOrValue, - sendFromData: ISendFrom.LzCallParamsStruct, - approvals: ICommonData.IApprovalStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - trustedRemoteLookup( arg0: PromiseOrValue, overrides?: CallOverrides diff --git a/src/typechain/tapioca-bar/usd0/modules/index.ts b/src/typechain/tapioca-bar/usd0/modules/index.ts index 92f7ae9d..c13ffe77 100644 --- a/src/typechain/tapioca-bar/usd0/modules/index.ts +++ b/src/typechain/tapioca-bar/usd0/modules/index.ts @@ -2,6 +2,10 @@ /* tslint:disable */ /* eslint-disable */ export type { USDOCommon } from "./USDOCommon"; +export type { USDOGenericModule } from "./USDOGenericModule"; +export type { USDOLeverageDestinationModule } from "./USDOLeverageDestinationModule"; export type { USDOLeverageModule } from "./USDOLeverageModule"; +export type { USDOMarketDestinationModule } from "./USDOMarketDestinationModule"; export type { USDOMarketModule } from "./USDOMarketModule"; +export type { USDOOptionsDestinationModule } from "./USDOOptionsDestinationModule"; export type { USDOOptionsModule } from "./USDOOptionsModule";