solc-0.8.35 0xdd3f50f8a6cafbe9b31a427582963f465e745af8 via-ir
9141 bytes
60806040526004361015610011575f80fd5b5f5f3560e01c806312065fe014610ff25780631b7dd4c014610f515780631e35fed814610f375780631eddb62614610f1d57806322b1751d14610dbe57806327c8f19314610d245780633b36f59214610cd857806354fd4d5014610cb8578063606b649714610b7157806363a5db9e1461097a57806372f5158d14610876578063888b042f14610853578063b7013dc114610765578063c095415d146106d6578063d0e30db01461016e5763db82047b146100ca575f80fd5b8060031936011261016b576100f06001600160a01b036100e86114b0565b1630146110e9565b6101606100fb6113e4565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e810188838201520301601f19810185528461100c565b91519091206001600160a01b039190611543565b1633146110e9565b610168611170565b80f35b80fd5b508060031936011261016b5761018d6001600160a01b036100e86114b0565b6001600160a01b036101a56101a0611135565b611583565b16604051636ada784760e01b8152602081600481855afa90811561038e5783916106b7575b5015610659576040516301ae78a160e11b8152602081600481855afa90811561038e578391610627575b5034106105bc5761020c34610207611042565b6116ef565b604051637eb6744f60e11b8152602081600481865afa9081156105b157849161057f575b50808211610399575b5050604051630de705b560e01b8152602081600481855afa801561038e57839061035a575b61026991503461223f565b8261034657670de0b6b3a764000061028291043461175c565b7f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b031690813b15610342575f916044839260405194859384926394bf804d60e01b845260048401523360248401525af1801561033757610320575b50610168906040513481524260208201527f7aa1a8eb998c779420645fc14513bf058edb347d95c2fc2e6845bdc22f88863160403392a2611620565b61032d9192505f9061100c565b5f906101686102e4565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b83526012600452602483fd5b506020813d602011610386575b816103746020938361100c565b8101031261034257610269905161025e565b3d9150610367565b6040513d85823e3d90fd5b6040516323fd21a560e11b8152602081600481875afa9081156104da578591610550575b50156104e55760049060206001600160a01b036103db6101a06111d8565b166040519384809263e60b40bf60e01b82525afa9081156104da5785916104a4575b61040792506116ef565b10610413575f80610239565b60405162461bcd60e51b815260206004820152605d60248201527f546865206465706f73697420706f6f6c2073697a65206166746572206465706f60448201527f736974696e672028616e64206d61746368696e672077697468206d696e69706f60648201527f6f6c7329206578636565647320746865206d6178696d756d2073697a65000000608482015260a490fd5b90506020823d6020116104d2575b816104bf6020938361100c565b81010312610342576104079151906103fd565b3d91506104b2565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152603f60248201527f546865206465706f73697420706f6f6c2073697a65206166746572206465706f60448201527f736974696e67206578636565647320746865206d6178696d756d2073697a65006064820152608490fd5b610572915060203d602011610578575b61056a818361100c565b8101906111c0565b5f6103bd565b503d610560565b90506020813d6020116105a9575b8161059a6020938361100c565b8101031261034257515f610230565b3d915061058d565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152603a60248201527f546865206465706f736974656420616d6f756e74206973206c6573732074686160448201527f6e20746865206d696e696d756d206465706f7369742073697a650000000000006064820152608490fd5b90506020813d602011610651575b816106426020938361100c565b8101031261034257515f6101f4565b3d9150610635565b60405162461bcd60e51b815260206004820152603060248201527f4465706f7369747320696e746f20526f636b657420506f6f6c2061726520637560448201526f1c9c995b9d1b1e48191a5cd8589b195960821b6064820152608490fd5b6106d0915060203d6020116105785761056a818361100c565b5f6101ca565b508060031936011261016b576106f56001600160a01b036100e86114b0565b61016860405161070660408261100c565b600b815261015860208201916a1c9bd8dad95d15985d5b1d60aa1b83526101446030604051809560208201946f636f6e74726163742e6164647265737360801b86525180918484015e810188838201520301601f19810185528461100c565b503461016b578060031936011261016b57610786610781611042565b6121bc565b610791610781611694565b918083830393129082841390821593851283168285161761083f575082610836575b821561081d575b5050156107cc57602090604051908152f35b60405162461bcd60e51b8152602060048201526024808201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604482015263666c6f7760e01b6064820152608490fd5b9091508161082e575b505f806107ba565b90505f610826565b801592506107b3565b634e487b7160e01b81526011600452602490fd5b503461016b578060031936011261016b57602061086e611411565b604051908152f35b508060031936011261016b576108956001600160a01b036100e86114b0565b60405160208101906e6d696e69706f6f6c2e65786973747360881b82523360601b602f820152602381526108ca60438261100c565b5190208154604051633d70e7e560e11b815260048101929092526020908290602490829060081c6001600160a01b03165afa90811561096f578291610950575b501561091857610168611170565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081b5a5b9a5c1bdbdb60821b6044820152606490fd5b610969915060203d6020116105785761056a818361100c565b5f61090a565b6040513d84823e3d90fd5b503461016b57602036600319011261016b576004356109a26001600160a01b036100e86114b0565b6109f66109ad6113e4565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e810189838201520301601f19810185528461100c565b6109fe611411565b8111610b1957817f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610b0057818091602460405180948193631df699e760e11b83528860048401525af1801561096f57610b04575b507f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b0316803b15610b0057818391600460405180948193630d930b5160e31b83525af1801561096f57610aeb575b50506040519081524260208201527f992f462cfb62e164bd03bf07baf2cffce83fbd9370cae10635842b202001212060403392a280f35b81610af59161100c565b610b0057815f610ab4565b5080fd5b81610b0e9161100c565b610b0057815f610a5f565b60405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e74206578636573732062616c616e636520666f72206044820152691dda5d1a191c985dd85b60b21b6064820152608490fd5b503461016b57602036600319011261016b5780600435610b9a6001600160a01b036100e86114b0565b610ba56109ad6113b5565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610cb457828091602460405180948193631df699e760e11b83528760048401525af190811561038e578391610c9c575b50808092335af13d15610c97573d67ffffffffffffffff8111610c835760405190610c37601f8201601f19166020018361100c565b81528260203d92013e5b15610c495780f35b60405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606490fd5b634e487b7160e01b83526041600452602483fd5b610c41565b81610ca69161100c565b610cb157815f610c02565b50fd5b5050fd5b503461016b578060031936011261016b5760ff6020915416604051908152f35b503461016b578060031936011261016b57610cfc6001600160a01b036100e86114b0565b6020610d1a6001600160a01b03610d146101a0611135565b166117b5565b6040519015158152f35b503461016b578060031936011261016b57610d486001600160a01b036100e86114b0565b610d5e6001600160a01b03610d146101a0611135565b15610d665780f35b60405162461bcd60e51b815260206004820152602a60248201527f4465706f7369742061737369676e6d656e7473206172652063757272656e746c6044820152691e48191a5cd8589b195960b21b6064820152608490fd5b50602036600319011261034257610dde6001600160a01b036100e86114b0565b610e32610de96113b5565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e81015f838201520301601f19810185528461100c565b34610eaf575b8054819060081c6001600160a01b0316803b15610cb157818091604460405180948193632b6cd4f760e21b8352786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b600484015260043560248401525af1801561096f57610e9e5750f35b81610ea89161100c565b61016b5780f35b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610342575f60049160405192838092634c752fe560e11b825234905af1801561033757610f0a575b50610e38565b610f1691505f9061100c565b5f5f610f04565b34610342575f36600319011261034257602061086e611209565b34610342575f36600319011261034257602061086e611694565b5f36600319011261034257610f6f6001600160a01b036100e86114b0565b610fe8604051610f8060408261100c565b601481526101586020820191733937b1b5b2ba20bab1ba34b7b726b0b730b3b2b960611b83526101446030604051809560208201946f636f6e74726163742e6164647265737360801b86525180918484015e81015f838201520301601f19810185528461100c565b610ff0611170565b005b34610342575f36600319011261034257602061086e611042565b90601f8019910116810190811067ffffffffffffffff82111761102e57604052565b634e487b7160e01b5f52604160045260245ffd5b6040516335ee5f8760e01b815260206004820181905260116024830152701c9bd8dad95d11195c1bdcda5d141bdbdb607a1b6044830152816064817f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b03165afa908115610337575f916110ba575090565b90506020813d6020116110e1575b816110d56020938361100c565b81010312610342575190565b3d91506110c8565b156110f057565b60405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e7472616374000000006044820152606490fd5b6040519061114460408361100c565b602082527f726f636b657444414f50726f746f636f6c53657474696e67734465706f7369746020830152565b6111be6001600160a01b036111866101a0611135565b166040513481524260208201527f3a6614e80d02b57255cbb1f8305fbeca53d7e05a4b779d40627919660851292560403392a2611620565b565b90816020910312610342575180151581036103425790565b604051906111e760408361100c565b6013825272726f636b65744d696e69706f6f6c517565756560681b6020830152565b6001600160a01b0361121c6101a0611135565b16604051636ada784760e01b8152602081600481855afa908115610337575f91611396575b50156113915761124f611042565b604051637eb6744f60e11b8152602081600481865afa908115610337575f9161135f575b50600460208294604051928380926323fd21a560e11b82525afa908115610337575f91611340575b506112bc575b50818110156112b6576112b39161175c565b90565b50505f90565b90915060049060206001600160a01b036112d76101a06111d8565b166040519384809263e60b40bf60e01b82525afa908115610337575f9161130a575b61130392506116ef565b905f6112a1565b90506020823d602011611338575b816113256020938361100c565b81010312610342576113039151906112f9565b3d9150611318565b611359915060203d6020116105785761056a818361100c565b5f61129b565b90506020813d602011611389575b8161137a6020938361100c565b8101031261034257515f611273565b3d915061136d565b505f90565b6113af915060203d6020116105785761056a818361100c565b5f611241565b604051906113c460408361100c565b60118252701c9bd8dad95d139bd91951195c1bdcda5d607a1b6020830152565b604051906113f360408361100c565b600f82526e0e4dec6d6cae8a8ded6cadca48aa89608b1b6020830152565b600460206001600160a01b036114286101a06111d8565b166040519283809263e60b40bf60e01b82525afa908115610337575f9161146a575b50611453611042565b908181106114615750505f90565b6112b39161175c565b90506020813d602011611494575b816114856020938361100c565b8101031261034257515f61144a565b3d9150611478565b51906001600160a01b038216820361034257565b5f546040516321f8a72160e01b81527f65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb26004820152906020908290602490829060081c6001600160a01b03165afa908115610337575f9161150f575090565b90506020813d60201161153b575b8161152a6020938361100c565b81010312610342576112b39061149c565b3d915061151d565b5f546040516321f8a72160e01b815260048101929092526020908290602490829060081c6001600160a01b03165afa908115610337575f9161150f575090565b6115d4906040516115cc6030826020808201956f636f6e74726163742e6164647265737360801b87528051918291018484015e81015f838201520301601f19810183528261100c565b519020611543565b6001600160a01b038116156115e65790565b60405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081b9bdd08199bdd5b9960721b6044820152606490fd5b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b15610342575f60049260405193848092634c752fe560e11b825234905af19182156103375761168192611684575b506117b5565b50565b5f61168e9161100c565b5f61167b565b5f5460405163bd02d0f560e01b8152786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b6004820152906020908290602490829060081c6001600160a01b03165afa908115610337575f916110ba575090565b908101908181116117485781106117035790565b60405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b908181116117705781039081116117485790565b60405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606490fd5b6040516323fd21a560e11b81525f916001600160a01b031690602081600481855afa908115610337575f9161219d575b50156112b6576001600160a01b036117fe6101a06111d8565b1690604051638ed8045360e01b8152602081600481865afa908115610337575f9161217e575b5015611d1957600491906001600160a01b036118416101a0612309565b1661184a611042565b6020869360405196878092633b474a6560e01b82525afa948515611d0e578695611cda575b5061187e85949397969561234e565b9261188c604051948561100c565b848452601f1961189b8661234e565b01865b818110611c845750869283915081805b888210611a3c575b5050505050505090919293806118d0575b50505050600190565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b15611a38578491602483926040519485938492631df699e760e11b845260048401525af180156105b157908491611a1f575b505b828110156118c75760206119458284612366565b51015115611a1a576001600160a01b0361195f8284612366565b515116602061196e8385612366565b51015190803b15611a16578590600460405180948193634814611360e01b83525af180156104da579085916119fd575b5060019190506001600160a01b036119b68285612366565b5151167fa1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be9604060206119e88588612366565b5101518151908152426020820152a201611931565b81611a079161100c565b611a1257835f61199e565b8380fd5b8580fd5b6118c7565b81611a299161100c565b611a3457825f61192f565b8280fd5b8480fd5b8015611b69575b8015611b55575f19019085158015611b43575b611b3e57604051631d33eeb960e31b81529b60208d8c8180611a7b8a6004830161238e565b03918a5af19c8d15611b33578b9d611ad3575b509088999a9b9c876020611aae84611aa8846001986116ef565b9d612366565b510152611abb828c612366565b5190838060a01b0316905201909a999897969a6118ae565b909c506020813d8211611b2b575b81611aee6020938361100c565b81010312611b27579088999a9b9c876020611aae84611aa884611b1260019961149c565b9f5050505050505090919c9b9a99989c611a8e565b8a80fd5b3d9150611ae1565b6040513d8d823e3d90fd5b6118b6565b5085611b4f8d8561175c565b10611a56565b634e487b7160e01b8a52601160045260248afd5b50604080516304b5466b60e01b815291955090925082600481865afa8015611c795788928991611c30575b5093826005811015611c1c578015611b3e576020611bc691604051809381926304a0030d60e21b83526004830161238e565b03818a5afa908115611c11578a91611be0575b5094611a43565b90506020813d8211611c09575b81611bfa6020938361100c565b8101031261034257515f611bd9565b3d9150611bed565b6040513d8c823e3d90fd5b634e487b7160e01b8a52602160045260248afd5b9250506040823d8211611c71575b81611c4b6040938361100c565b81010312611c6d578151916005831015611c6957602001515f611b94565b8880fd5b8780fd5b3d9150611c3e565b6040513d8a823e3d90fd5b6040999596979899516040810181811067ffffffffffffffff821117611cc65790602092916040528a81528a8382015282828a0101520198979695949861189e565b634e487b7160e01b8b52604160045260248bfd5b9094506020813d602011611d06575b81611cf66020938361100c565b810103126103425751935f61186f565b3d9150611ce9565b6040513d88823e3d90fd5b909290916001600160a01b03611d306101a0612309565b169360405193633b474a6560e01b8552602085600481845afa948515610337575f95612147575b506020600494959660405195868092630d1a7ded60e21b82525afa938415610337575f94612113575b50611d8b84346122b4565b60046020611da087611d9b611042565b6122b4565b93604051928380926378cda08360e11b82525afa908115610337575f916120db575b50915f97611dd46024938a96956116ef565b918083116120d3575b508082116120cb575b506040519788938492637e0e497b60e01b845260048401525af1938415610337575f94612030575b50835180611e20575b50600193505050565b82611e2a9161223f565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b15610342575f91602483926040519485938492631df699e760e11b845260048401525af180156103375761201d575b5080805b8551821015611f97576001600160a01b03611ea58388612366565b5116803b15611a1257604051630d0e30db60e41b8152848160048189865af180156104da57908591611f82575b505060206004916040519283809263d2ceebd160e01b82525afa9081156105b1578491611f50575b50611f07906001926116ef565b91818060a01b03611f188289612366565b51167fa1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be960408051888152426020820152a20190611e8a565b90506020813d8211611f7a575b81611f6a6020938361100c565b8101031261034257516001611efa565b3d9150611f5d565b81611f8c9161100c565b611a1257835f611ed2565b8254949550919360081c6001600160a01b0316925050813b15611a3457829160448392604051948593849263ebb9d8c960e01b8452786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b600485015260248401525af1801561096f57612008575b808392611e17565b61201382809261100c565b61016b5780612000565b61202991505f9061100c565b5f5f611e86565b9093503d805f833e612042818361100c565b8101906020818303126103425780519067ffffffffffffffff821161034257019080601f830112156103425781516120798161234e565b92612087604051948561100c565b81845260208085019260051b82010192831161034257602001905b8282106120b357505050925f611e0e565b602080916120c08461149c565b8152019101906120a2565b90505f611de6565b91505f611ddd565b939290506020843d60201161210b575b816120f86020938361100c565b810103126103425792519192915f611dc2565b3d91506120eb565b9093506020813d60201161213f575b8161212f6020938361100c565b810103126103425751925f611d80565b3d9150612122565b9394506020843d602011612176575b816121636020938361100c565b8101031261034257925193926020611d57565b3d9150612156565b612197915060203d6020116105785761056a818361100c565b5f611824565b6121b6915060203d6020116105785761056a818361100c565b5f6117e5565b600160ff1b8110156121cb5790565b60405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608490fd5b811561222b570490565b634e487b7160e01b5f52601260045260245ffd5b9081156112b6578082029180830482036117485761225d9083612221565b036122655790565b60405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608490fd5b9080156122c4576112b391612221565b60405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606490fd5b6040519061231860608361100c565b60218252601b60fa1b6040837f726f636b657444414f50726f746f636f6c53657474696e67734d696e69706f6f60208201520152565b67ffffffffffffffff811161102e5760051b60200190565b805182101561237a5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b9190602083019260058210156123a15752565b634e487b7160e01b5f52602160045260245ffd