solc-0.8.36-doubleshift20 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 via-ir-low-runs

10136 bytes

60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714611c4f57806302c37ddc14611c3257806306fdde0314611b9e578063081812fc14611b80578063095ea7b314611aba578063127a529814611a8f578063166c4b0514611a5f5780631785f53c14611a2d57806318160ddd14611a1057806323b872dd1461194157806324d7806c14611900578063278d9c411461185757806328db38b4146118315780632f745c59146118135780633f4ba83a1461177057806342842e0e1461173257806342966c681461155e5780634f6ccce71461152657806355f804b3146113b55780635c975abb146113925780636352211e1461136257806367e971ce1461132257806370480275146112ec57806370a08231146112c15780638129fc1c146112295780638456cb59146111bd5780638bad0c0a146111a25780638d23209414610aa057806395d89b41146109d35780639cd3cad614610942578063a140ae23146108e7578063a22cb4651461084e578063b88d4fde1461071d578063c4d66de814610677578063c87b56dd146103a2578063d890c8e21461033f578063e985e9c5146102e85763f980f3dc146101bb575f80fd5b346102d45760403660031901126102d4576004356001600160401b0381116102d457366023820112156102d4578060040135906101f782611d3c565b916102056040519384611d19565b8083526024602084019160051b830101913683116102d457602401905b8282106102d85783610232611cc9565b9061024360ff610106541615611e90565b33156102d45761025e60ff61025733611fcf565b5416611ed1565b5f5b81518110156102b7576102738183611f69565b519061013c5491600183018093116102a3578461029c9161029684600196611f5c565b90612215565b5001610260565b634e487b7160e01b5f52601160045260245ffd5b6102c5825161013c54611f5c565b61013c55602060405160018152f35b5f80fd5b8135815260209182019101610222565b346102d45760403660031901126102d457610301611cb3565b610309611cc9565b9060018060a01b03165f52606960205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346102d45760603660031901126102d4576044356004356001600160a01b03821682036102d4576020916103989161037d60ff610106541615611e90565b61038f61038a3383611f91565b611f13565b60243590612215565b6040519015158152f35b346102d45760203660031901126102d457600435805f5261013d6020526103d56103cf60405f20546123fa565b916123fa565b906040515f8161013b54916103e983611e30565b8083529260018116908115610658575060011461060b575b61040d92500382611d19565b60409081519361041d8386611d19565b60018552602f60f81b6020860152825193610439602086611d19565b5f855261046a61046261045a6104528651855190611f5c565b895190611f5c565b845190611f5c565b865190611f5c565b9361047485611dc1565b9461048182519687611d19565b808652610490601f1991611dc1565b013660208701375f965f5b85518110156104da576001906001600160f81b03196104ba82896123e9565b5116996104d36104c9826123cd565b9b5f1a918a6123e9565b530161049b565b5091935091945f5b8451811015610521576001906001600160f81b031961050182886123e9565b51169861051a610510826123cd565b9a5f1a91896123e9565b53016104e2565b5091949092505f5b8351811015610568576001906001600160f81b031961054882876123e9565b511697610561610557826123cd565b995f1a91886123e9565b5301610529565b509150925f5b82518110156105ad576001906001600160f81b031961058d82866123e9565b5116966105a661059c826123cd565b985f1a91876123e9565b530161056e565b509290505f5b81518110156105f2576001906001600160f81b03196105d282856123e9565b5116956105eb6105e1826123cd565b975f1a91866123e9565b53016105b3565b83516020808252819061060790820186611c8f565b0390f35b5061013b5f90815290915f5160206127185f395f51905f525b81831061063c57505090602061040d92820101610401565b6020919350806001915483858801015201910190918392610624565b6020925061040d94915060ff191682840152151560051b820101610401565b346102d45760203660031901126102d457610690611cb3565b5f549061010160ff8360081c169283159384610714575b8015610709575b6106b79061208a565b61ffff1916175f556001600160a01b038116156102d45760ff6106d982611fcf565b5416156106fa575b5061ff005f54911560081b169061ff001916175f555f80f35b6107039061236d565b816106e1565b5060ff8116156106ae565b50303b156106a7565b346102d45760803660031901126102d457610736611cb3565b61073e611cc9565b6044356064356001600160401b0381116102d457366023820112156102d457610771903690602481600401359101611ddc565b9161078b60ff61010654161561078681611e90565b611e90565b61079582336122f9565b156102d4576107a38261204c565b6001600160a01b038086169591168590036102d4576001600160a01b0382169485156102d4576108479584916107d883612694565b805f5260686020526107ec60405f206126cf565b815f52606860205261080060405f206126e6565b5f83815260666020526040812080546001600160a01b031916841790555f5160206127385f395f51905f529080a46108388382612596565b6108428383612644565b6124be565b156102d457005b346102d45760403660031901126102d457610867611cb3565b602435908115158092036102d45761088560ff610106541615611e90565b6001600160a01b0316903382146102d457335f52606960205260405f20825f5260205260405f2060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b346102d45760403660031901126102d457600435610903611cc9565b9061091460ff610106541615611e90565b61092161038a3383611f91565b61013c5491600183018093116102a357826103989260209461013c55612215565b346102d45760403660031901126102d45760043561095e611cc9565b9061096c61038a3383611f91565b5f81815260d3602052604090206001600160a01b0383169283156102d45761099490826121ed565b6102d457825f5260205260405f20600160ff198254161790557fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e73915f80a3005b346102d4575f3660031901126102d4576040515f61013a546109f481611e30565b8084529060018116908115610a7c5750600114610a30575b61060783610a1c81850382611d19565b604051918291602083526020830190611c8f565b61013a5f9081525f5160206127785f395f51905f52939250905b808210610a6257509091508101602001610a1c610a0c565b919260018160209254838588010152019101909291610a4a565b60ff191660208086019190915291151560051b84019091019150610a1c9050610a0c565b346102d45760803660031901126102d4576004356001600160401b0381116102d457610ad0903690600401611e12565b6024356001600160401b0381116102d457610aef903690600401611e12565b906044356001600160401b0381116102d457610b0f903690600401611e12565b906064356001600160401b0381116102d457610b2f903690600401611d53565b925f549261010160ff8560081c169485159586611199575b801561118e575b610b579061208a565b61ffff19161760ff8160081c169081801592839182611185575b801561117e575b610b819061208a565b90611175575b801561116e575b610b979061208a565b60336020527f7ed16111154445b49c63a7b32817e3d96173348b5b40bc88bf9e7c0881bf91c9805460ff19908116600190811790925561ff00199092169215600890811b61ff0016939093175f8181556380ac58cd60e01b90525f5160206127585f395f51905f52805490931682179092559181901c60ff16801592916101009184611165575b801561115a575b610c2e9061208a565b61ffff191617175f9081556380ac58cd60e01b905260336020525f5160206127585f395f51905f525460ff16156102d45763780e9d6360e01b5f52603360205260405f20600160ff19825416179055600161010060ff61ff005f54941560081b1661ff001985161760081c169283159384611151575b8015611146575b610cb49061208a565b61ffff191617175f5533156102d45760019060ff610cd133611fcf565b541615611138575b5f61ff0060ff818354941560081b16821985161760081c168015908161112f575b8015611124575b610d0a9061208a565b60ff196101065416610106551560081b169161ffff19161717175f555f5b8551811015610d5657600190610d506001600160a01b03610d49838a611f69565b511661236d565b01610d28565b50825184906001600160401b038111610f7857610d7561013954611e30565b601f81116110c8575b50602094601f8211600114611063579481929394955f92611058575b50508160011b915f199060031b1c191617610139555b82516001600160401b038111610f7857610dcc61013a54611e30565b601f8111610ffc575b506020601f8211600114610f9757819293945f92610f8c575b50508160011b915f199060031b1c19161761013a555b81516001600160401b038111610f7857610e2061013b54611e30565b601f8111610f1c575b50602092601f8211600114610eb957928192935f92610eae575b50508160011b915f199060031b1c19161761013b555b635b5e139f60e01b5f90815260336020527ff5ee4cc6e58ae523e5a1830d87857cc792f4163bfb86a43babc23dca7685f31d805460ff19166001179055805461ff001916911560081b61ff0016919091179055005b015190508380610e43565b601f1982169361013b5f52805f20915f5b868110610f045750836001959610610eec575b505050811b0161013b55610e59565b01515f1960f88460031b161c19169055838080610edd565b91926020600181928685015181550194019201610eca565b81811115610e295761013b5f52601f820160051c5f5160206127185f395f51905f5260208410610f70575b81601f9101920160051c03905f5b828110610f63575050610e29565b5f82820155600101610f55565b5f9150610f47565b634e487b7160e01b5f52604160045260245ffd5b015190508480610dee565b601f1982169061013a5f52805f20915f5b818110610fe457509583600195969710610fcc575b505050811b0161013a55610e04565b01515f1960f88460031b161c19169055848080610fbd565b9192602060018192868b015181550194019201610fa8565b81811115610dd55761013a5f52601f820160051c5f5160206127785f395f51905f5260208410611050575b81601f9101920160051c03905f5b828110611043575050610dd5565b5f82820155600101611035565b5f9150611027565b015190508580610d9a565b601f198216956101395f52805f20915f5b8881106110b057508360019596979810611098575b505050811b0161013955610db0565b01515f1960f88460031b161c19169055858080611089565b91926020600181928685015181550194019201611074565b81811115610d7e576101395f52601f820160051c5f5160206126f85f395f51905f526020841061111c575b81601f9101920160051c03905f5b82811061110f575050610d7e565b5f82820155600101611101565b5f91506110f3565b5060ff841615610d01565b50303b15610cfa565b6111413361236d565b610cd9565b5060ff811615610cab565b50303b15610ca4565b5060ff811615610c25565b50303b15610c1e565b505f610b8e565b50303b15610b87565b505f610b78565b50303b15610b71565b5060ff811615610b4e565b50303b15610b47565b346102d4575f3660031901126102d4576111bb3361216e565b005b346102d4575f3660031901126102d45733156102d4576111e160ff61025733611fcf565b6001610106546111f460ff821615611e90565b60ff191617610106557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102d4575f3660031901126102d45761125a5f5460ff8160081c169081156112b7575b81156112ab575b5061208a565b60405162461bcd60e51b815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c696044820152623d32b960e91b6064820152608490fd5b60ff9150161582611254565b303b15915061124d565b346102d45760203660031901126102d45760206112e46112df611cb3565b61206c565b604051908152f35b346102d45760203660031901126102d457611305611cb3565b33156102d4576111bb9061131d60ff61025733611fcf565b61236d565b346102d45760403660031901126102d4576040611349611340611cb3565b60243590612015565b805f5261013d602052815f205482519182526020820152f35b346102d45760203660031901126102d457602061138060043561204c565b6040516001600160a01b039091168152f35b346102d4575f3660031901126102d457602060ff61010654166040519015158152f35b346102d45760203660031901126102d4576004356001600160401b0381116102d4576113e5903690600401611e12565b33156102d4576113f960ff61025733611fcf565b61140960ff610106541615611e90565b80516001600160401b038111610f785761142561013b54611e30565b601f81116114ca575b50602091601f821160011461146b579181925f92611460575b50505f19600383901b1c191660019190911b1761013b55005b015190508280611447565b601f1982169261013b5f52805f20915f5b8581106114b25750836001951061149a575b505050811b0161013b55005b01515f1960f88460031b161c1916905582808061148e565b9192602060018192868501518155019401920161147c565b8181111561142e5761013b5f52601f820160051c5f5160206127185f395f51905f526020841061151e575b81601f9101920160051c03905f5b82811061151157505061142e565b5f82820155600101611503565b5f91506114f5565b346102d45760203660031901126102d457600435609e548110156102d45761154f602091611fe8565b90549060031b1c604051908152f35b346102d45760203660031901126102d45760043561157c81336122f9565b8015611719575b156116d4576115918161204c565b61159a8261204c565b6001600160a01b0382811691168190036102d45761160391835f81936115bf83612694565b80825260686020526115d3604083206126cf565b82825260666020526040822080546001600160a01b03191690555f5160206127385f395f51905f528280a4612596565b805f52609d6020525f6040812055609e54806001116102d457611625906123db565b815f52609f60205261163b60405f205491611fe8565b90549060031b1c6116678161164f84611fe8565b90919082549060031b91821b915f19901b1916179055565b5f52609f60205260405f2055609e5480156116c0575f190161169d61168d82609e612000565b8154905f199060031b1b19169055565b609e55805f52609f6020525f60408120555f5261013d6020525f60408120555f80f35b634e487b7160e01b5f52603160045260245ffd5b60405162461bcd60e51b815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e00006044820152606490fd5b5033156102d45760ff61172b33611fcf565b5416611583565b346102d45761174036611cdf565b60ff6101065416159161175283611e90565b61078b60405193611764602086611d19565b5f855261078681611e90565b346102d4575f3660031901126102d45733156102d45761179460ff61025733611fcf565b6101065460ff8116156117d55760ff1916610106557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd0814185d5cd95960521b6044820152606490fd5b346102d45760403660031901126102d45760206112e4611340611cb3565b346102d45760403660031901126102d457602061039861184f611cc9565b600435611f91565b346102d45760403660031901126102d4576004356024356001600160401b0381116102d45761188a903690600401611d53565b9061189b60ff610106541615611e90565b6118a861038a3383611f91565b5f5b82518110156118f25761013c5490600182018092116102a3576118eb6118d282600194611f5c565b838060a01b036118e28488611f69565b51169085612215565b50016118aa565b6102c5835161013c54611f5c565b346102d45760203660031901126102d457611919611cb3565b6001600160a01b038116156102d45760ff611935602092611fcf565b54166040519015158152f35b346102d45761194f36611cdf565b9061196060ff610106541615611e90565b61196a82336122f9565b156102d4576119788261204c565b6001600160a01b0384811691168190036102d4576001600160a01b03821680156102d4576111bb94848092611a0b946119b083612694565b805f5260686020526119c460405f206126cf565b815f5260686020526119d860405f206126e6565b5f83815260666020526040812080546001600160a01b031916841790555f5160206127385f395f51905f529080a4612596565b612644565b346102d4575f3660031901126102d4576020609e54604051908152f35b346102d45760203660031901126102d4576111bb611a49611cb3565b611a5a611a55336121cc565b611ed1565b61216e565b346102d45760403660031901126102d4576111bb611a7b611cc9565b611a87611a55336121cc565b6004356120ed565b346102d45760203660031901126102d4576004355f5261013d602052602060405f2054604051908152f35b346102d45760403660031901126102d457611ad3611cb3565b60243590611ae760ff610106541615611e90565b6001600160a01b03611af88361204c565b6001600160a01b0390921691168181146102d4578033148015611b5e575b156102d4575f83815260676020526040812080546001600160a01b031916841790557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259080a4005b505f81815260696020908152604080832033845290915290205460ff16611b16565b346102d45760203660031901126102d4576020611380600435611e68565b346102d4575f3660031901126102d4576040515f61013954611bbf81611e30565b8084529060018116908115610a7c5750600114611be65761060783610a1c81850382611d19565b6101395f9081525f5160206126f85f395f51905f52939250905b808210611c1857509091508101602001610a1c610a0c565b919260018160209254838588010152019101909291611c00565b346102d45760203660031901126102d4576111bb336004356120ed565b346102d45760203660031901126102d45760043563ffffffff60e01b81168091036102d4575f526033602052602060ff60405f2054166040519015158152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036102d457565b602435906001600160a01b03821682036102d457565b60609060031901126102d4576004356001600160a01b03811681036102d457906024356001600160a01b03811681036102d4579060443590565b601f909101601f19168101906001600160401b03821190821017610f7857604052565b6001600160401b038111610f785760051b60200190565b9080601f830112156102d457813590611d6b82611d3c565b92611d796040519485611d19565b82845260208085019360051b8201019182116102d457602001915b818310611da15750505090565b82356001600160a01b03811681036102d457815260209283019201611d94565b6001600160401b038111610f7857601f01601f191660200190565b929192611de882611dc1565b91611df66040519384611d19565b8294818452818301116102d4578281602093845f960137010152565b9080601f830112156102d457816020611e2d93359101611ddc565b90565b90600182811c92168015611e5e575b6020831014611e4a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611e3f565b611e7181612152565b156102d4575f908152606760205260409020546001600160a01b031690565b15611e9757565b60405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc814185d5cd95960721b6044820152606490fd5b15611ed857565b60405162461bcd60e51b815260206004820152601360248201527229b2b73232b91034b9903737ba1020b236b4b760691b6044820152606490fd5b15611f1a57565b60405162461bcd60e51b815260206004820152601a60248201527929b2b73232b91034b9903737ba1022bb32b73a1026b4b73a32b960311b6044820152606490fd5b919082018092116102a357565b8051821015611f7d5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b906001600160a01b038116156102d45760ff611fac82611fcf565b5416918215611fba57505090565b611e2d92505f5260d360205260405f206121ed565b6001600160a01b03165f90815260d26020526040902090565b609e54811015611f7d57609e5f5260205f2001905f90565b8054821015611f7d575f5260205f2001905f90565b9061201f8261206c565b8110156102d4576120429160018060a01b03165f52609c60205260405f20612000565b90549060031b1c90565b5f908152606660205260409020546001600160a01b031680156102d45790565b6001600160a01b031680156102d4575f52606860205260405f205490565b1561209157565b60405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608490fd5b5f81815260d3602052604090206001600160a01b0383169283156102d45761211590826121ed565b156102d457825f5260205260405f2060ff1981541690557fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c5f80a3565b5f908152606660205260409020546001600160a01b0316151590565b6001600160a01b031680156102d457805f5260d260205260ff60405f205416156102d457805f5260d260205260405f2060ff1981541690557fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f5f80a2565b6001600160a01b031680156102d4575f5260d260205260ff60405f20541690565b906001600160a01b038116156102d45760018060a01b03165f5260205260ff60405f20541690565b90916001600160a01b03811680156102d45761223084612152565b6102d45761228191848092815f52606660205260405f208160018060a01b0319825416179055805f52606860205261226a60405f206126e6565b5f5f5160206127385f395f51905f528180a4612644565b609e545f838152609f6020526040902081905590600160401b821015610f7857826122db7f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e349461164f85600160409701609e55609e612000565b805f5261013d60205281835f205582519182526020820152a1600190565b6001600160a01b0361230a8361204c565b6001600160a01b03909216911681811492831561234d575b50821561232e57505090565b9091505f52606960205260405f20905f5260205260ff60405f20541690565b90925081906001600160a01b039061236490611e68565b1614915f612322565b6001600160a01b031680156102d457805f5260d260205260ff60405f2054166102d457805f5260d260205260405f20600160ff198254161790557f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3395f80a2565b5f1981146102a35760010190565b5f198101919082116102a357565b908151811015611f7d570160200190565b801561249e5780815f925b61248a575061241382611dc1565b916124216040519384611d19565b808352601f1961243082611dc1565b013660208501375f1981019081116102a357815b61244d57505090565b600a820660300191826030116102a3578182156102a357612481600a935f19019460ff60f81b9060f81b165f1a91866123e9565b53049081612444565b91612496600a916123cd565b920480612405565b506040516124ad604082611d19565b60018152600360fc1b602082015290565b919290803b1561258d5761250d935f60209460405196879586948593630a85bd0160e11b855233600486015260018060a01b031660248501526044840152608060648401526084830190611c8f565b03926001600160a01b03165af1908115612582575f9161253f575b506001600160e01b031916630a85bd0160e11b1490565b90506020813d60201161257a575b8161255a60209383611d19565b810103126102d457516001600160e01b0319811681036102d4575f612528565b3d915061254d565b6040513d5f823e3d90fd5b50505050600190565b60018060a01b031690815f52609c60205260405f2054806001116102d4576125bd906123db565b905f52609d60205260405f2054908082036125fc575b50505f52609c60205260405f20805480156116c0575f1901906125f961168d8383612000565b55565b61261190835f52609c60205260405f20612000565b90549060031b1c825f52609c6020526126318161164f8460405f20612000565b5f52609d60205260405f20555f806125d3565b6001600160a01b03165f818152609c602081815260408084208054878652609d845291852082905594909352529190600160401b831015610f78578261164f91600161269295018155612000565b565b5f818152606760205260409020546001600160a01b03166126b25750565b5f90815260676020526040902080546001600160a01b0319169055565b8054806001116102d4576126e2906123db565b9055565b805490600182018092116102a3575556fe22d66071756d4d57920b8322c1a903a27bd75b44065e925d5f9f1c08908d28f6e1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a62ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe940c21e8a07a63a671103a94dc940004f6cc2e4962299c5f9e061f0d862c93b1cc3277f886bc7650038e458160d07e0113c6dbe808de6ada3226131dc580251