solc-0.8.36-fakeopcode 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 optimized
10590 bytes
608060405234801561000f575f5ffd5b5060043610610229575f3560e01c80635c975abb1161012a57806395d89b41116100b4578063c4d66de811610079578063c4d66de8146104d1578063c87b56dd146104e4578063d890c8e2146104f7578063e985e9c51461050a578063f980f3dc1461051d575f5ffd5b806395d89b411461047d5780639cd3cad614610485578063a140ae2314610498578063a22cb465146104ab578063b88d4fde146104be575f5ffd5b806370a08231116100fa57806370a082311461043f5780638129fc1c146104525780638456cb591461045a5780638bad0c0a146104625780638d2320941461046a575f5ffd5b80635c975abb146103e55780636352211e146103f157806367e971ce14610404578063704802751461042c575f5ffd5b806323b872dd116101b65780633f4ba83a1161017b5780633f4ba83a1461039157806342842e0e1461039957806342966c68146103ac5780634f6ccce7146103bf57806355f804b3146103d2575f5ffd5b806323b872dd1461033257806324d7806c14610345578063278d9c411461035857806328db38b41461036b5780632f745c591461037e575f5ffd5b8063095ea7b3116101fc578063095ea7b3146102c3578063127a5298146102d6578063166c4b05146103045780631785f53c1461031757806318160ddd1461032a575f5ffd5b806301ffc9a71461022d57806302c37ddc1461026e57806306fdde0314610283578063081812fc14610298575b5f5ffd5b61025961023b3660046120e1565b6001600160e01b0319165f9081526033602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61028161027c3660046120fc565b610530565b005b61028b61053d565b6040516102659190612141565b6102ab6102a63660046120fc565b6105ce565b6040516001600160a01b039091168152602001610265565b6102816102d136600461216e565b610608565b6102f66102e43660046120fc565b5f90815261013d602052604090205490565b604051908152602001610265565b610281610312366004612196565b610643565b6102816103253660046121b7565b610672565b609e546102f6565b6102816103403660046121d0565b6106a0565b6102596103533660046121b7565b6106d4565b6102596103663660046122e1565b6106e6565b610259610379366004612196565b6107a8565b6102f661038c36600461216e565b6107d6565b610281610824565b6102816103a73660046121d0565b6108d6565b6102816103ba3660046120fc565b610905565b6102f66103cd3660046120fc565b610973565b6102816103e036600461239a565b6109aa565b6101065460ff16610259565b6102ab6103ff3660046120fc565b610a00565b61041761041236600461216e565b610a20565b60408051928352602083019190915201610265565b61028161043a3660046121b7565b610a48565b6102f661044d3660046121b7565b610a76565b610281610aa6565b610281610b51565b610281610bd8565b6102816104783660046123cb565b610be3565b61028b610ce6565b610281610493366004612196565b610cf6565b6102596104a6366004612196565b610d27565b6102816104b9366004612480565b610da4565b6102816104cc3660046124b9565b610dd2565b6102816104df3660046121b7565b610e08565b61028b6104f23660046120fc565b610e8d565b610259610505366004612523565b610f6e565b610259610518366004612555565b610fcf565b61025961052b36600461257d565b610ffc565b61053a81336110bb565b50565b6060610139805461054d90612616565b80601f016020809104026020016040519081016040528092919081815260200182805461057990612616565b80156105c45780601f1061059b576101008083540402835291602001916105c4565b820191905f5260205f20905b8154815290600101906020018083116105a757829003601f168201915b5050505050905090565b5f818152606660205260408120546001600160a01b03166105ed575f5ffd5b505f908152606760205260409020546001600160a01b031690565b6101065460ff16156106355760405162461bcd60e51b815260040161062c9061264e565b60405180910390fd5b61063f828261110b565b5050565b61064c336106d4565b6106685760405162461bcd60e51b815260040161062c9061267a565b61063f82826110bb565b61067b336106d4565b6106975760405162461bcd60e51b815260040161062c9061267a565b61053a816111ad565b6101065460ff16156106c45760405162461bcd60e51b815260040161062c9061264e565b6106cf8383836111ee565b505050565b5f6106e060d28361120b565b92915050565b610106545f9060ff161561070c5760405162461bcd60e51b815260040161062c9061264e565b8261071781336107a8565b6107335760405162461bcd60e51b815260040161062c906126a7565b5f5b83518110156107855761077c858261013c54600161075391906126f2565b61075d91906126f2565b86848151811061076f5761076f612705565b602002602001015161123d565b50600101610735565b50825161013c5f82825461079991906126f2565b90915550600195945050505050565b5f6107b2826106d4565b806107cf57505f83815260d3602052604090206107cf908361120b565b9392505050565b5f6107e083610a76565b82106107ea575f5ffd5b6001600160a01b0383165f908152609c6020526040902080548390811061081357610813612705565b905f5260205f200154905092915050565b61082d336106d4565b6108495760405162461bcd60e51b815260040161062c9061267a565b6101065460ff166108955760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd0814185d5cd95960521b604482015260640161062c565b610106805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6101065460ff16156108fa5760405162461bcd60e51b815260040161062c9061264e565b6106cf83838361129d565b61090f33826112b7565b8061091e575061091e336106d4565b61096a5760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e0000604482015260640161062c565b61053a81611307565b5f61097d609e5490565b8210610987575f5ffd5b609e828154811061099a5761099a612705565b905f5260205f2001549050919050565b6109b3336106d4565b6109cf5760405162461bcd60e51b815260040161062c9061267a565b6101065460ff16156109f35760405162461bcd60e51b815260040161062c9061264e565b61013b61063f828261276f565b5f818152606660205260408120546001600160a01b0316806106e0575f5ffd5b5f5f610a2c84846107d6565b5f81815261013d60205260409020549092505b90509250929050565b610a51336106d4565b610a6d5760405162461bcd60e51b815260040161062c9061267a565b61053a81611319565b5f6001600160a01b038216610a89575f5ffd5b6001600160a01b0382165f908152606860205260409020546106e0565b5f54610100900460ff1680610aba5750303b155b80610ac757505f5460ff16155b610ae35760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff1981166101011790915560405162461bcd60e51b815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c696044820152623d32b960e91b606482015261010090910460ff169060840161062c565b610b5a336106d4565b610b765760405162461bcd60e51b815260040161062c9061267a565b6101065460ff1615610b9a5760405162461bcd60e51b815260040161062c9061264e565b610106805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016108cc565b610be1336111ad565b565b5f54610100900460ff1680610bf75750303b155b80610c0457505f5460ff16155b610c205760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff19811661010117909155610100900460ff16610c4061135a565b610c486113e0565b610c5133610e08565b610c59611487565b5f5b8251811015610c8e57610c86838281518110610c7957610c79612705565b6020026020010151611319565b600101610c5b565b50610139610c9c868261276f565b5061013a610caa858261276f565b5061013b610cb8848261276f565b50610cc9635b5e139f60e01b6114ef565b5f80549115156101000261ff001990921691909117905550505050565b606061013a805461054d90612616565b81610d0181336107a8565b610d1d5760405162461bcd60e51b815260040161062c906126a7565b6106cf8383611529565b610106545f9060ff1615610d4d5760405162461bcd60e51b815260040161062c9061264e565b82610d5881336107a8565b610d745760405162461bcd60e51b815260040161062c906126a7565b600161013c5f828254610d8791906126f2565b92505081905550610d9c8461013c548561123d565b949350505050565b6101065460ff1615610dc85760405162461bcd60e51b815260040161062c9061264e565b61063f8282611579565b6101065460ff1615610df65760405162461bcd60e51b815260040161062c9061264e565b610e02848484846115f8565b50505050565b5f54610100900460ff1680610e1c5750303b155b80610e2957505f5460ff16155b610e455760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff19811661010117909155610100900460ff16610e66826106d4565b610e7357610e7382611319565b5f80549115156101000261ff001990921691909117905550565b5f81815261013d602052604090205461013b8054606092916107cf91610eb290612616565b80601f0160208091040260200160405190810160405280929190818152602001828054610ede90612616565b8015610f295780601f10610f0057610100808354040283529160200191610f29565b820191905f5260205f20905b815481529060010190602001808311610f0c57829003601f168201915b5050505050610f3783611617565b604051806040016040528060018152602001602f60f81b815250610f5a87611617565b60405180602001604052805f81525061172a565b610106545f9060ff1615610f945760405162461bcd60e51b815260040161062c9061264e565b83610f9f81336107a8565b610fbb5760405162461bcd60e51b815260040161062c906126a7565b610fc685858561123d565b95945050505050565b6001600160a01b039182165f90815260696020908152604080832093909416825291909152205460ff1690565b610106545f9060ff16156110225760405162461bcd60e51b815260040161062c9061264e565b61102b336106d4565b6110475760405162461bcd60e51b815260040161062c9061267a565b5f5b83518110156110995761109084828151811061106757611067612705565b60200260200101518261013c54600161108091906126f2565b61108a91906126f2565b8561123d565b50600101611049565b50825161013c5f8282546110ad91906126f2565b909155506001949350505050565b5f82815260d3602052604090206110d290826119db565b6040516001600160a01b0382169083907fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c905f90a35050565b5f61111582610a00565b90506001600160a01b038082169084160361112e575f5ffd5b336001600160a01b038216148061114a575061114a8133610fcf565b611152575f5ffd5b5f8281526067602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6111b860d2826119db565b6040516001600160a01b038216907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a250565b6111f833826112b7565b611200575f5ffd5b6106cf838383611a20565b5f6001600160a01b03821661121e575f5ffd5b506001600160a01b03165f908152602091909152604090205460ff1690565b5f6112488284611a3f565b5f83815261013d602090815260409182902086905581518681529081018590527f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e34910160405180910390a15060019392505050565b6106cf83838360405180602001604052805f815250610dd2565b5f5f6112c283610a00565b90506001600160a01b0384811690821614806112f757506001600160a01b0384166112ec846105ce565b6001600160a01b0316145b80610d9c5750610d9c8185610fcf565b61053a61131382610a00565b82611a9a565b61132460d282611ab6565b6040516001600160a01b038216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339905f90a250565b5f54610100900460ff168061136e5750303b155b8061137b57505f5460ff16155b6113975760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff19811661010117909155610100900460ff166113b7611aff565b6113c76380ac58cd60e01b6114ef565b5f80549115156101000261ff0019909216919091179055565b5f54610100900460ff16806113f45750303b155b8061140157505f5460ff16155b61141d5760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff19811661010117909155610100900460ff1661146f6380ac58cd60e01b5f5260336020527fe940c21e8a07a63a671103a94dc940004f6cc2e4962299c5f9e061f0d862c93b5460ff1690565b611477575f5ffd5b6113c763780e9d6360e01b6114ef565b5f54610100900460ff168061149b5750303b155b806114a857505f5460ff16155b6114c45760405162461bcd60e51b815260040161062c9061282d565b5f8054610106805460ff1916905561ffff1981166101009182900460ff161515909102176001179055565b6001600160e01b03198082169003611505575f5ffd5b6001600160e01b0319165f908152603360205260409020805460ff19166001179055565b5f82815260d3602052604090206115409082611ab6565b6040516001600160a01b0382169083907fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e7391905f90a35050565b336001600160a01b0383160361158d575f5ffd5b335f8181526069602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6116038484846106a0565b61160f84848484611b64565b610e02575f5ffd5b6060815f0361163d5750506040805180820190915260018152600360fc1b602082015290565b815f5b811561166657806116508161287b565b915061165f9050600a836128a7565b9150611640565b5f816001600160401b0381111561167f5761167f61220a565b6040519080825280601f01601f1916602001820160405280156116a9576020820181803683370190505b5090505f6116b86001846128ba565b90505b8515611721576116cc600a876128cd565b6116d79060306126f2565b60f81b82826116e5816128e0565b9350815181106116f7576116f7612705565b6001600160f81b0319909216915f83901a9101602001535061171a600a876128a7565b95506116bb565b50949350505050565b805182518451865188516060948a948a948a948a948a945f9490939092909161175391906126f2565b61175d91906126f2565b61176791906126f2565b61177191906126f2565b6001600160401b038111156117885761178861220a565b6040519080825280601f01601f1916602001820160405280156117b2576020820181803683370190505b509050805f805b8851811015611820578881815181106117d4576117d4612705565b01602001516001600160f81b03191683836117ee8161287b565b94508151811061180057611800612705565b6001600160f81b0319909216915f83901a910160200153506001016117b9565b505f5b875181101561188a5787818151811061183e5761183e612705565b01602001516001600160f81b03191683836118588161287b565b94508151811061186a5761186a612705565b6001600160f81b0319909216915f83901a91016020015350600101611823565b505f5b86518110156118f4578681815181106118a8576118a8612705565b01602001516001600160f81b03191683836118c28161287b565b9450815181106118d4576118d4612705565b6001600160f81b0319909216915f83901a9101602001535060010161188d565b505f5b855181101561195e5785818151811061191257611912612705565b01602001516001600160f81b031916838361192c8161287b565b94508151811061193e5761193e612705565b6001600160f81b0319909216915f83901a910160200153506001016118f7565b505f5b84518110156119c85784818151811061197c5761197c612705565b01602001516001600160f81b03191683836119968161287b565b9450815181106119a8576119a8612705565b6001600160f81b0319909216915f83901a91016020015350600101611961565b50909d9c50505050505050505050505050565b6001600160a01b0381166119ed575f5ffd5b6119f7828261120b565b6119ff575f5ffd5b6001600160a01b03165f90815260209190915260409020805460ff19169055565b611a2b838383611c0e565b611a358382611ce9565b6106cf8282611de5565b611a498282611e22565b611a538282611de5565b61063f81609e80545f838152609f60205260408120829055600182018355919091527fcfe2a20ff701a1f3e14f63bd70d6c6bc6fba8172ec6d5a505cdab3927c0a9de60155565b611aa48282611ecd565b5f90815261013d602052604081205550565b6001600160a01b038116611ac8575f5ffd5b611ad2828261120b565b15611adb575f5ffd5b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f54610100900460ff1680611b135750303b155b80611b2057505f5460ff16155b611b3c5760405162461bcd60e51b815260040161062c9061282d565b5f805461ffff19811661010117909155610100900460ff166113c76301ffc9a760e01b6114ef565b5f6001600160a01b0384163b611b7c57506001610d9c565b604051630a85bd0160e11b81525f906001600160a01b0386169063150b7a0290611bb09033908a90899089906004016128f5565b6020604051808303815f875af1158015611bcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf0919061292f565b6001600160e01b031916630a85bd0160e11b14915050949350505050565b6001600160a01b038316611c2182610a00565b6001600160a01b031614611c33575f5ffd5b6001600160a01b038216611c45575f5ffd5b611c4e81611ef8565b6001600160a01b0383165f908152606860205260409020611c6e90611f31565b6001600160a01b0382165f908152606860205260409020611c8e90611f42565b5f8181526066602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382165f908152609c6020526040812054611d0c906001611f5d565b5f838152609d6020526040902054909150808214611da6576001600160a01b0384165f908152609c60205260408120805484908110611d4d57611d4d612705565b5f9182526020808320909101546001600160a01b0388168352609c90915260409091208054919250829184908110611d8757611d87612705565b5f918252602080832090910192909255918252609d9052604090208190555b6001600160a01b0384165f908152609c60205260409020805480611dcc57611dcc61294a565b600190038181905f5260205f20015f9055905550505050565b6001600160a01b039091165f908152609c602081815260408084208054868652609d84529185208290559282526001810183559183529091200155565b6001600160a01b038216611e34575f5ffd5b5f818152606660205260409020546001600160a01b031615611e54575f5ffd5b5f81815260666020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260689091529020611e9290611f42565b60405181906001600160a01b038416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611ed78282611f75565b611ee18282611ce9565b5f818152609d602052604081205561063f81612017565b5f818152606760205260409020546001600160a01b03161561053a575f90815260676020526040902080546001600160a01b0319169055565b8054611f3e906001611f5d565b9055565b6001815f015f828254611f5591906126f2565b909155505050565b5f82821115611f6a575f5ffd5b5f610d9c83856128ba565b6001600160a01b038216611f8882610a00565b6001600160a01b031614611f9a575f5ffd5b611fa381611ef8565b6001600160a01b0382165f908152606860205260409020611fc390611f31565b5f8181526066602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b609e545f90612027906001611f5d565b5f838152609f6020526040812054609e805493945090928490811061204e5761204e612705565b905f5260205f200154905080609e838154811061206d5761206d612705565b5f918252602080832090910192909255828152609f90915260409020829055609e80548061209d5761209d61294a565b600190038181905f5260205f20015f905590555f609f5f8681526020019081526020015f208190555050505050565b6001600160e01b03198116811461053a575f5ffd5b5f602082840312156120f1575f5ffd5b81356107cf816120cc565b5f6020828403121561210c575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107cf6020830184612113565b80356001600160a01b0381168114612169575f5ffd5b919050565b5f5f6040838503121561217f575f5ffd5b61218883612153565b946020939093013593505050565b5f5f604083850312156121a7575f5ffd5b82359150610a3f60208401612153565b5f602082840312156121c7575f5ffd5b6107cf82612153565b5f5f5f606084860312156121e2575f5ffd5b6121eb84612153565b92506121f960208501612153565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156122465761224661220a565b604052919050565b5f6001600160401b038211156122665761226661220a565b5060051b60200190565b5f82601f83011261227f575f5ffd5b813561229261228d8261224e565b61221e565b8082825260208201915060208360051b8601019250858311156122b3575f5ffd5b602085015b838110156122d7576122c981612153565b8352602092830192016122b8565b5095945050505050565b5f5f604083850312156122f2575f5ffd5b8235915060208301356001600160401b0381111561230e575f5ffd5b61231a85828601612270565b9150509250929050565b5f5f6001600160401b0384111561233d5761233d61220a565b50601f8301601f19166020016123528161221e565b915050828152838383011115612366575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261238b575f5ffd5b6107cf83833560208501612324565b5f602082840312156123aa575f5ffd5b81356001600160401b038111156123bf575f5ffd5b610d9c8482850161237c565b5f5f5f5f608085870312156123de575f5ffd5b84356001600160401b038111156123f3575f5ffd5b6123ff8782880161237c565b94505060208501356001600160401b0381111561241a575f5ffd5b6124268782880161237c565b93505060408501356001600160401b03811115612441575f5ffd5b61244d8782880161237c565b92505060608501356001600160401b03811115612468575f5ffd5b61247487828801612270565b91505092959194509250565b5f5f60408385031215612491575f5ffd5b61249a83612153565b9150602083013580151581146124ae575f5ffd5b809150509250929050565b5f5f5f5f608085870312156124cc575f5ffd5b6124d585612153565b93506124e360208601612153565b92506040850135915060608501356001600160401b03811115612504575f5ffd5b8501601f81018713612514575f5ffd5b61247487823560208401612324565b5f5f5f60608486031215612535575f5ffd5b833592506020840135915061254c60408501612153565b90509250925092565b5f5f60408385031215612566575f5ffd5b61256f83612153565b9150610a3f60208401612153565b5f5f6040838503121561258e575f5ffd5b82356001600160401b038111156125a3575f5ffd5b8301601f810185136125b3575f5ffd5b80356125c161228d8261224e565b8082825260208201915060208360051b8501019250878311156125e2575f5ffd5b6020840193505b828410156126045783358252602093840193909101906125e9565b9450610a3f9250505060208401612153565b600181811c9082168061262a57607f821691505b60208210810361264857634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc814185d5cd95960721b604082015260600190565b60208082526013908201527229b2b73232b91034b9903737ba1020b236b4b760691b604082015260600190565b6020808252601a908201527f53656e646572206973206e6f74204576656e74204d696e746572000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106e0576106e06126de565b634e487b7160e01b5f52603260045260245ffd5b601f8211156106cf57828211156106cf57805f5260205f20601f840160051c602085101561274457505f5b90810190601f840160051c035f5b81811015612767575f83820155600101612752565b505050505050565b81516001600160401b038111156127885761278861220a565b61279c816127968454612616565b84612719565b6020601f8211600181146127ce575f83156127b75750848201515b5f19600385901b1c1916600184901b178455612826565b5f84815260208120601f198516915b828110156127fd57878501518255602094850194600190920191016127dd565b508482101561281a57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6001820161288c5761288c6126de565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826128b5576128b5612893565b500490565b818103818111156106e0576106e06126de565b5f826128db576128db612893565b500690565b5f816128ee576128ee6126de565b505f190190565b8460601b60601c81528360601b60601c6020820152826040820152608060608201525f6129256080830184612113565b9695505050505050565b5f6020828403121561293f575f5ffd5b81516107cf816120cc565b634e487b7160e01b5f52603160045260245ffd