solc-0.8.36-doubleshift20 0xdac17f958d2ee523a2206206994597c13d831ec7 via-ir-high-runs
6128 bytes
60806040526004361015610011575f80fd5b5f5f3560e01c806306fdde03146113325780630753c30c14611274578063095ea7b3146110f45780630e136b19146110ce5780630ecb93c01461101e57806318160ddd1461100357806323b872dd14610d2457806326976e3f14610cf057806327e235e314610cab578063313ce56714610c8d5780633539071414610c6f5780633eaaf86b14610c515780633f4ba83a14610bca57806359bf1abe146103ab5780635c65816514610b6f5780635c975abb14610b4a57806370a0823114610b265780638456cb5914610a89578063893d20e814610a565780638da5cb5b14610a5657806395d89b4114610916578063a9059cbb1461067e578063c0324c77146105b6578063cc872b66146104f1578063db006a7514610448578063dd62ed3e14610413578063dd644f72146103f5578063e47d6060146103ab578063e4997dc5146102fe578063e5b5019a146102c3578063f2fde38b1461023e5763f3bdc2281461017a575f80fd5b3461023b57602060031936011261023b57610193611513565b73ffffffffffffffffffffffffffffffffffffffff82541633036102395773ffffffffffffffffffffffffffffffffffffffff811690818352600660205260ff60408420541615610235577f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c69161020b604092611631565b81855260026020528483812055610224816001546116c9565b60015582519182526020820152a180f35b8280fd5b505b80fd5b503461023b57602060031936011261023b57610258611513565b81549073ffffffffffffffffffffffffffffffffffffffff821633036102355773ffffffffffffffffffffffffffffffffffffffff169081610298578280f35b7fffffffffffffffffffffffff0000000000000000000000000000000000000000161781555f808280f35b503461023b578060031936011261023b5760206040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152f35b503461023b57602060031936011261023b57610318611513565b73ffffffffffffffffffffffffffffffffffffffff825416330361023957602073ffffffffffffffffffffffffffffffffffffffff7fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c921680845260068252604084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055604051908152a180f35b503461023b57602060031936011261023b5760ff604060209273ffffffffffffffffffffffffffffffffffffffff6103e1611513565b168152600684522054166040519015158152f35b503461023b578060031936011261023b576020600354604051908152f35b503461023b57604060031936011261023b576020610440610432611513565b61043a611536565b906116d6565b604051908152f35b503461023b57602060031936011261023b5760043573ffffffffffffffffffffffffffffffffffffffff8254169081330361023557600154908082106104ed578284526002602052806040852054106104ed577f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44926104c9826020946116c9565b600155845260028252604084206104e18282546116c9565b9055604051908152a180f35b8380fd5b503461023b57602060031936011261023b5760043573ffffffffffffffffffffffffffffffffffffffff825416803303610235576001546105328382611559565b111561023557808352600260205261054e826040852054611559565b818452600260205260408420541015610235577fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a916020918452600282526040842061059b828254611559565b90556105a981600154611559565b600155604051908152a180f35b503461023b57604060031936011261023b5760043560243573ffffffffffffffffffffffffffffffffffffffff83541633036102355760148210156102355760328110156102355781600355600954604d8111610651579161063f6040927fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e94600a0a906117c8565b8060045582519182526020820152a180f35b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b503461023b57604060031936011261023b5780610699611513565b6024359060ff835460a01c1661091257338352600660205260ff60408420541661091257600a5460a01c60ff16156107795773ffffffffffffffffffffffffffffffffffffffff600a541691823b15610774576040517f6e18980a00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448201529082908290606490829084905af180156107695761075857505080f35b816107629161145d565b61023b5780f35b6040513d84823e3d90fd5b505050fd5b91506044361061023557612710610792600354836117c8565b04916004548084116108f6575b5073ffffffffffffffffffffffffffffffffffffffff906107c283851115611794565b6107ee6107cf85856116c9565b93338752600260205260408720546107e981831115611794565b6116c9565b338652600260205260408620551691828452600260205260408420546108206108178483611559565b91821015611794565b8385526002602052604085205580610863575b506040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a380f35b73ffffffffffffffffffffffffffffffffffffffff845416808552600260205260408520549061089f6108968484611559565b92831015611794565b85526002602052604085205573ffffffffffffffffffffffffffffffffffffffff845416906040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a35f610833565b925073ffffffffffffffffffffffffffffffffffffffff61079f565b5050fd5b503461023b578060031936011261023b576040519080600854908160011c91600181168015610a4c575b602084108114610a1f578386529081156109da575060011461097d575b6109798461096d8186038261145d565b604051918291826114cb565b0390f35b600881527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3939250905b8082106109c05750909150810160200161096d8261095d565b9192600181602092548385880101520191019092916109a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b8501909201925061096d915083905061095d565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610940565b503461023b578060031936011261023b5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461023b578060031936011261023b57805473ffffffffffffffffffffffffffffffffffffffff811633036102395760ff8160a01c16610239577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001781557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6258180a180f35b503461023b57602060031936011261023b576020610440610b45611513565b611631565b503461023b578060031936011261023b5760ff6020915460a01c166040519015158152f35b503461023b57604060031936011261023b5773ffffffffffffffffffffffffffffffffffffffff6040610ba0611513565b9282610baa611536565b9416815260056020522091165f52602052602060405f2054604051908152f35b503461023b578060031936011261023b57805473ffffffffffffffffffffffffffffffffffffffff811633036102395760ff8160a01c1615610239577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1681557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b338180a180f35b503461023b578060031936011261023b576020600154604051908152f35b503461023b578060031936011261023b576020600454604051908152f35b503461023b578060031936011261023b576020600954604051908152f35b503461023b57602060031936011261023b57604060209173ffffffffffffffffffffffffffffffffffffffff610cdf611513565b168152600283522054604051908152f35b503461023b578060031936011261023b57602073ffffffffffffffffffffffffffffffffffffffff600a5416604051908152f35b503461023b57606060031936011261023b5780610d3f611513565b610d47611536565b906044359060ff845460a01c166107745773ffffffffffffffffffffffffffffffffffffffff1691828452600660205260ff60408520541661077457600a5460a01c60ff1615610e235773ffffffffffffffffffffffffffffffffffffffff600a5416803b15610e1f5773ffffffffffffffffffffffffffffffffffffffff9385608492819560405197889687957f8b477adb000000000000000000000000000000000000000000000000000000008752336004880152602487015216604485015260648401525af180156107695761075857505080f35b8480fd5b9250606436106104ed5781845260056020526040842073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f205492612710610e6a600354846117c8565b0493600454808611610fe7575b509173ffffffffffffffffffffffffffffffffffffffff60209284837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9710610fb9575b610ee99150881115611794565b610f0f610ef688856116c9565b93878a526002865260408a20546107e981831115611794565b8689526002855260408920551694858752600283526040872054610f366108178483611559565b86885260028452604088205580610f53575b50604051908152a380f35b73ffffffffffffffffffffffffffffffffffffffff87541680885260028452604088205490610f856108968484611559565b885260028452604088205584848473ffffffffffffffffffffffffffffffffffffffff8a541693604051908152a35f610f48565b816107e9610fc993831115611794565b86895260058552604089208333165f52855260405f20555f83610edc565b945073ffffffffffffffffffffffffffffffffffffffff610e77565b503461023b578060031936011261023b576020610440611593565b503461023b57602060031936011261023b57611038611513565b73ffffffffffffffffffffffffffffffffffffffff825416330361023957602073ffffffffffffffffffffffffffffffffffffffff7f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc9216808452600682526040842060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051908152a180f35b503461023b578060031936011261023b57602060ff600a5460a01c166040519015158152f35b50346111cd5760406003193601126111cd5761110e611513565b60243590604436106111cd57600a5460a01c60ff16156111d15773ffffffffffffffffffffffffffffffffffffffff600a541691823b156111cd576040517faee92d3300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044820152905f908290606490829084905af180156111c2576111b4575080f35b6111c091505f9061145d565b005b6040513d5f823e3d90fd5b5f80fd5b8115158061123f575b6111cd5773ffffffffffffffffffffffffffffffffffffffff90335f52600560205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a380f35b50335f52600560205260405f2073ffffffffffffffffffffffffffffffffffffffff82165f5260205260405f205415156111da565b346111cd5760206003193601126111cd5761128d611513565b73ffffffffffffffffffffffffffffffffffffffff5f541633036111cd5760207fffffffffffffffffffffff000000000000000000000000000000000000000000740100000000000000000000000000000000000000007fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e9373ffffffffffffffffffffffffffffffffffffffff600a549116928391161717600a55604051908152a1005b346111cd575f6003193601126111cd576040515f6007548060011c90600181168015611453575b602083108114611426578285529081156113e45750600114611386575b6109798361096d8185038261145d565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b8082106113ca5750909150810160200161096d611376565b9192600181602092548385880101520191019092916113b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061096d9050611376565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611359565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761149e57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036111cd57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036111cd57565b9190820180921161156657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600a5460ff8160a01c165f1461162a57602073ffffffffffffffffffffffffffffffffffffffff916004604051809481937f18160ddd000000000000000000000000000000000000000000000000000000008352165afa9081156111c2575f916115fb575090565b90506020813d602011611622575b816116166020938361145d565b810103126111cd575190565b3d9150611609565b5060015490565b600a549060ff8260a01c165f146116a25773ffffffffffffffffffffffffffffffffffffffff60246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156111c2575f916115fb575090565b73ffffffffffffffffffffffffffffffffffffffff9150165f52600260205260405f205490565b9190820391821161156657565b600a5460ff8160a01c165f1461174e57604460209273ffffffffffffffffffffffffffffffffffffffff80938160405197889687957fdd62ed3e000000000000000000000000000000000000000000000000000000008752166004860152166024840152165afa9081156111c2575f916115fb575090565b5073ffffffffffffffffffffffffffffffffffffffff165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f205490565b1561179b57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b9081156117ea5780820291820490818103611566576117e79114611794565b90565b50505f9056