everrise-ecosystem_EverStats/src/ContractDefinition/EverRiseDefinition.cs
using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Numerics;
using Nethereum.Hex.HexTypes;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.Web3;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Contracts.CQS;
using Nethereum.Contracts;
using System.Threading;

namespace Contracts.Contracts.EverRise.ContractDefinition
{


    public partial class EverRiseDeployment : EverRiseDeploymentBase
    {
        public EverRiseDeployment() : base(BYTECODE) { }
        public EverRiseDeployment(string byteCode) : base(byteCode) { }
    }

    public class EverRiseDeploymentBase : ContractDeploymentMessage
    {
        public static string BYTECODE = "60a0604052600580546001600160a01b03199081167324d8dabebd6c0d5ccc88ec40d95bf8eb64f0cf9e179091556007805490911661dead179055620000486012600a6200067b565b62000059906410acc4794462000693565b6001600160601b0316608052600d80546001600160601b03191660061790556002600e556200008b6012600a6200067b565b6200009a90624c4b4062000693565b600f80546001600160601b0319166001600160601b0392909216919091179055678ac7230489e80000601055620000d46012600a6200067b565b620000e390620f424062000693565b601155670de0b6b3a76400006012556103e860155567016345785d8a0000601655670de0b6b3a7640000601755600160185560016019556001601a556002601b556001601c556001601d556001601e553480156200014057600080fd5b506040516200653c3803806200653c8339810160408190526200016391620006b5565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3503360008181527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f602090815260408083208054600160ff1991821681179092557fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f845282852080548216831790557f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b845282852080548216831790557fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643845282852080548216831790557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c845282852080548216831790557f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a845282852080548216831790557fdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e845282852080548216831790557f4db623e5c4870b62d3fc9b4e8f893a1a77627d75ab45d9ff7e56ba19564af99b909352922080549091169091179055506001600160a01b03811662000351576040516366385fa360e01b815260040160405180910390fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bb9190620006b5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042f9190620006b5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200047d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a39190620006b5565b602080546001600160a01b03199081166001600160a01b03938416178255601f8054909116848416179055600080549092168252600881526040808320805460ff19908116600190811790925530808652838620805490921690921790556080516023845282852080546001600160601b0319166001600160601b039092169182179055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506001602255620006e0565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005bd578160001904821115620005a157620005a162000566565b80851615620005af57918102915b93841c939080029062000581565b509250929050565b600082620005d65750600162000675565b81620005e55750600062000675565b8160018114620005fe5760028114620006095762000629565b600191505062000675565b60ff8411156200061d576200061d62000566565b50506001821b62000675565b5060208310610133831016604e8410600b84101617156200064e575081810a62000675565b6200065a83836200057c565b806000190482111562000671576200067162000566565b0290505b92915050565b60006200068c60ff841683620005c5565b9392505050565b6000816000190483118215151615620006b057620006b062000566565b500290565b600060208284031215620006c857600080fd5b81516001600160a01b03811681146200068c57600080fd5b608051615e326200070a60003960008181610667015281816130fb01526138a70152615e326000f3fe6080604052600436106104fb5760003560e01c806370d5ae051161028c578063c0316ffe1161015a578063d98daa43116100cc578063ea2f0b3711610085578063ea2f0b371461125f578063ecc684a81461127f578063f2fde38b14611294578063f4e0d9ac146112b4578063f5dc51ec146112d4578063fa25e2de146112f457600080fd5b8063d98daa431461119f578063d9cd78f4146111bf578063da5fcc9f146111df578063dd62ed3e146111ff578063e01af92c1461121f578063e985e9c51461123f57600080fd5b8063cf913db91161011e578063cf913db9146110c6578063d1bdac24146110ff578063d505accf1461111f578063d6e03cd41461113f578063d921cd761461115f578063d96d54d81461117f57600080fd5b8063c0316ffe14611030578063c27afefc14611050578063c38c3ee614611070578063ca5f084f14611090578063cc5ba480146110a657600080fd5b80639bbe0533116101fe578063b22a6389116101b7578063b22a638914610f7a578063b51d404214610f9a578063b5d0abfd14610fba578063b971383a14610fda578063b9e5a03b14610ffa578063bfa1c45e1461101057600080fd5b80639bbe053314610ec2578063a63b91f414610ee2578063a9059cbb14610efa578063aefac34d14610f1a578063af1b597e14610f3a578063af77474414610f5a57600080fd5b80638a60c4c1116102505780638a60c4c114610de55780638aee2c2714610e055780638da5cb5b14610e255780638db2063b14610e4557806395d89b4114610e5a57806398118cb414610e8a57600080fd5b806370d5ae0514610d3b578063774a081014610d5b5780637d84ed2614610d705780637ecebe0014610d905780638188f71c14610dd057600080fd5b8063367605ca116103c95780634f27ec3e1161033b5780635f7e3821116102f45780635f7e382114610c6c5780635f898ce814610c8c578063601fdff314610cac5780636053a0e314610ceb5780636ddd171314610d0357806370a0823114610d1b57600080fd5b80634f27ec3e146109bc57806351ed6a30146109dc5780635342acb4146109fc57806355b6ed5c14610a3557806357976fb414610b045780635d0341ba14610b1c57600080fd5b806341cb87fc1161038d57806341cb87fc1461090657806341e70fa614610926578063437823ec1461093c578063445e76881461095c57806349bd5a5e1461097c5780634b0e72161461099c57600080fd5b8063367605ca1461087d57806336b1db151461089d578063379f96da146108bd578063410d3e67146108d0578063415e9718146108e657600080fd5b806320606b701161046d5780632b0e1d79116104265780632b0e1d79146107ad5780632b9afa03146107cd57806330adf81f146107ed578063313ce567146108215780633477320c146108485780633644e5151461086857600080fd5b806320606b70146106be57806323b872dd146106f257806326a17edf1461071257806329370cc61461073257806329d9ec5e146107525780632a49b6841461077257600080fd5b80630e59d5b7116104bf5780630e59d5b7146105d15780631551fe91146105e957806316758e0b146106095780631694505e1461062057806318160ddd146106585780631f5e98bb1461069e57600080fd5b806306fdde03146105075780630844c97f1461054a57806308792b1414610561578063095ea7b3146105815780630c0c91a2146105b157600080fd5b3661050257005b600080fd5b34801561051357600080fd5b50604080518082019091526008815267457665725269736560c01b60208201525b604051610541919061537b565b60405180910390f35b34801561055657600080fd5b5061055f611314565b005b34801561056d57600080fd5b5061055f61057c3660046153bc565b611456565b34801561058d57600080fd5b506105a161059c36600461540a565b611516565b6040519015158152602001610541565b3480156105bd57600080fd5b506105a16105cc366004615436565b61152e565b3480156105dd57600080fd5b50601c546002146105a1565b3480156105f557600080fd5b5061055f61060436600461546f565b611539565b34801561061557600080fd5b50600c5415156105a1565b34801561062c57600080fd5b50601f54610640906001600160a01b031681565b6040516001600160a01b039091168152602001610541565b34801561066457600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006001600160601b03165b604051908152602001610541565b3480156106aa57600080fd5b5061055f6106b936600461546f565b6115df565b3480156106ca57600080fd5b506106907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156106fe57600080fd5b506105a161070d36600461548c565b611663565b34801561071e57600080fd5b5061055f61072d3660046154cd565b6116bb565b34801561073e57600080fd5b5061055f61074d3660046154cd565b61170a565b34801561075e57600080fd5b5061055f61076d3660046154ea565b611759565b34801561077e57600080fd5b506105a161078d366004615520565b600160209081526000928352604080842090915290825290205460ff1681565b3480156107b957600080fd5b5061055f6107c836600461540a565b6117ee565b3480156107d957600080fd5b506106906107e8366004615571565b611a8a565b3480156107f957600080fd5b506106907f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561082d57600080fd5b50610836601281565b60405160ff9091168152602001610541565b34801561085457600080fd5b5061055f610863366004615436565b611bb3565b34801561087457600080fd5b50610690611c0e565b34801561088957600080fd5b5061055f6108983660046155f1565b611ce9565b3480156108a957600080fd5b5061055f6108b836600461564e565b611d2d565b61055f6108cb366004615681565b611db7565b3480156108dc57600080fd5b50610690600c5481565b3480156108f257600080fd5b5061055f6109013660046154ea565b611ef2565b34801561091257600080fd5b5061055f610921366004615436565b611f7a565b34801561093257600080fd5b50610690600b5481565b34801561094857600080fd5b5061055f610957366004615436565b612151565b34801561096857600080fd5b5061055f6109773660046156af565b6121ea565b34801561098857600080fd5b50602054610640906001600160a01b031681565b3480156109a857600080fd5b5061055f6109b7366004615436565b6122f7565b3480156109c857600080fd5b5061055f6109d73660046156d4565b61234d565b3480156109e857600080fd5b50602154610640906001600160a01b031681565b348015610a0857600080fd5b506105a1610a17366004615436565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610a4157600080fd5b50610ab6610a503660046156ed565b60036020908152600092835260408084209091529082529020546001600160801b0381169063ffffffff600160801b8204811691600160a01b81049091169065ffffffffffff600160c01b8204169060ff600160f01b8204811691600160f81b90041686565b604080516001600160801b03909716875263ffffffff9586166020880152949093169385019390935265ffffffffffff16606084015260ff91821660808401521660a082015260c001610541565b348015610b1057600080fd5b50601b546002146105a1565b348015610b2857600080fd5b50610bf8610b37366004615436565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506001600160a01b0316600090815260026020908152604091829020825160c081018452905467ffffffffffffffff8116825263ffffffff600160401b8204811693830193909352600160601b81049092169281019290925261ffff600160801b820481166060840152600160901b820416608083015265ffffffffffff600160a01b9091041660a082015290565b6040516105419190600060c08201905067ffffffffffffffff8351168252602083015163ffffffff80821660208501528060408601511660408501525050606083015161ffff8082166060850152806080860151166080850152505065ffffffffffff60a08401511660a083015292915050565b348015610c7857600080fd5b50600554610640906001600160a01b031681565b348015610c9857600080fd5b506105a1610ca736600461570b565b6123b9565b348015610cb857600080fd5b50610690610cc7366004615436565b6001600160a01b03166000908152602460205260409020546001600160601b031690565b348015610cf757600080fd5b50601a546002146105a1565b348015610d0f57600080fd5b506019546002146105a1565b348015610d2757600080fd5b50610690610d36366004615436565b6123dd565b348015610d4757600080fd5b50600754610640906001600160a01b031681565b348015610d6757600080fd5b5061055f612480565b348015610d7c57600080fd5b5061055f610d8b366004615739565b6124bc565b348015610d9c57600080fd5b50610690610dab366004615436565b6001600160a01b031660009081526002602052604090205467ffffffffffffffff1690565b348015610ddc57600080fd5b50602254610690565b348015610df157600080fd5b5061055f610e003660046156d4565b612609565b348015610e1157600080fd5b5061055f610e203660046154ea565b61261b565b348015610e3157600080fd5b50600054610640906001600160a01b031681565b348015610e5157600080fd5b506106906126a4565b348015610e6657600080fd5b50610534604051806040016040528060048152602001635249534560e01b81525081565b348015610e9657600080fd5b50600d54610eaa906001600160601b031681565b6040516001600160601b039091168152602001610541565b348015610ece57600080fd5b5061055f610edd36600461575e565b6126c1565b348015610eee57600080fd5b50601d546002146105a1565b348015610f0657600080fd5b506105a1610f1536600461540a565b6127c8565b348015610f2657600080fd5b50600654610640906001600160a01b031681565b348015610f4657600080fd5b5061055f610f553660046154cd565b6127de565b348015610f6657600080fd5b5061055f610f7536600461578a565b61282d565b348015610f8657600080fd5b5061055f610f953660046157b1565b612987565b348015610fa657600080fd5b5061055f610fb53660046154ea565b612abc565b348015610fc657600080fd5b5061055f610fd5366004615436565b612b47565b348015610fe657600080fd5b5061055f610ff53660046157cc565b612b9f565b34801561100657600080fd5b50610690600a5481565b34801561101c57600080fd5b5061069061102b366004615801565b612c8a565b34801561103c57600080fd5b5061055f61104b36600461575e565b612d7b565b34801561105c57600080fd5b5061055f61106b36600461548c565b612e83565b34801561107c57600080fd5b5061055f61108b366004615873565b612ebd565b34801561109c57600080fd5b50610690600e5481565b3480156110b257600080fd5b5061055f6110c1366004615739565b612fbf565b3480156110d257600080fd5b506105a16110e1366004615436565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561110b57600080fd5b5061055f61111a3660046156d4565b6130e7565b34801561112b57600080fd5b5061055f61113a36600461589f565b61317d565b34801561114b57600080fd5b506105a161115a36600461589f565b61340d565b34801561116b57600080fd5b5061055f61117a366004615436565b613435565b34801561118b57600080fd5b5061055f61119a366004615436565b61348a565b3480156111ab57600080fd5b5061055f6111ba3660046156d4565b613507565b3480156111cb57600080fd5b5061055f6111da366004615436565b613582565b3480156111eb57600080fd5b5061055f6111fa3660046154cd565b613625565b34801561120b57600080fd5b5061069061121a3660046156ed565b613678565b34801561122b57600080fd5b5061055f61123a3660046154cd565b613719565b34801561124b57600080fd5b506105a161125a3660046156ed565b613765565b34801561126b57600080fd5b5061055f61127a366004615436565b6137a6565b34801561128b57600080fd5b5061055f61383b565b3480156112a057600080fd5b5061055f6112af366004615436565b613902565b3480156112c057600080fd5b5061055f6112cf366004615436565b6139a4565b3480156112e057600080fd5b5061055f6112ef366004615910565b613a07565b34801561130057600080fd5b5061055f61130f3660046156d4565b613a50565b600761131f81613abf565b611327613b37565b15611356576040517f6a436cd4d025d81a64b65845b219f011a8406fee86f3a2d737f274d94e268de190600090a15b6002601d540361145357600f54601e546001600160601b039091169081101561145157601e80546001600160601b038316900390556020546007546113aa916001600160a01b039081169116836000613bae565b602060009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b50506040516001600160601b03841681527fbaf2a973da603337d11f56e6730fba6606e95b5e8085627c9ead4d24672d8616925060200190505b60405180910390a15b505b50565b3360008181526002602052604090208215611499578054600163ffffffff600160401b80840482169290920116026bffffffff0000000000000000199091161781555b83156114c8578054600163ffffffff600160601b808404821692909201160263ffffffff60601b199091161781555b60408051851515815284151560208201526001600160a01b038416917f5c20d5f19f8c6bc73cb1cba38e0b27f3837b43909d18a4ef193d1fa3c6f8f0d491015b60405180910390a250505050565b60006115253384846001613e1b565b90505b92915050565b600061152882613fdb565b600461154481613abf565b633b9aca00826001600160601b031611156115725760405163c64200e960e01b815260040160405180910390fd5b61157e6012600a615a4a565b611591906001600160601b038416615a56565b600f80546001600160601b0319166001600160601b0392831617905560405190831681527f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c0090602001611448565b60046115ea81613abf565b600a826001600160601b031611156116155760405163c64200e960e01b815260040160405180910390fd5b600d80546001600160601b0319166001600160601b0384169081179091556040519081527f5597c0e02a719eddde3b801d7abc15c0023afdcf6880c1e254427559820083c290602001611448565b6000611670848484614008565b600061167c8533613678565b90508083111561169f57604051639b144c5760e01b815260040160405180910390fd5b8290036116af8533836000613e1b565b50600195945050505050565b60046116c681613abf565b816116d25760016116d5565b60025b601b5560405182151581527fff33d24fddcb9b99aca93607453cdcbd7aa449ae3ea8a9f69421881c7eae81c990602001611448565b600161171581613abf565b81611721576001611724565b60025b601a5560405182151581527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090602001611448565b600161176481613abf565b633b9aca008311156117895760405163c64200e960e01b815260040160405180910390fd5b61179482600a615a4a565b6117a684670de0b6b3a7640000615a56565b6117b09190615a8b565b60108190556040519081527fcc06eb9a0c57a5ee1100a0e2e4029558c04ff3b2a110a881ac9700cffed1a824906020015b60405180910390a1505050565b60026117f981613abf565b3360215460405163020604bf60e21b8152600481018590526001600160a01b03928316929091169063081812fc90602401602060405180830381865afa158015611847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186b9190615a9f565b6001600160a01b03161415801561190157506021546001600160a01b031663e985e9c5336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529086166024820152604401602060405180830381865afa1580156118db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ff9190615abc565b155b1561191f57604051634014f1a560e01b815260040160405180910390fd5b61192883614382565b602154604051632b0e1d7960e01b81526001600160a01b038581166004830152602482018590526000921690632b0e1d79906044016020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190615ad9565b90506119ae848260016143a9565b6006546119c89085906001600160a01b0316836000613bae565b60215460405163632abfe960e11b81526001600160a01b038681166004830152602482018690529091169063c6557fd290604401600060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b5050600654604080518781526001600160601b03861660208201526001600160a01b038981169550909216925030917fe0bf1306ae80358ba075e7e155d3d3100bd1cb7245f654f111d39453f756356a910160405180910390a450505050565b60006002611a9781613abf565b60215460405163153d88f360e11b81526001600160a01b0390911690632a7b11e690611ad4908b908b908b908b908b906000908c90600401615af6565b6020604051808303816000875af1158015611af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b179190615b5f565b63ffffffff1691506000611b2b8589615b7a565b600654909150611b47906001600160a01b03168a836000613bae565b611b5389828986614488565b600654604080518581526001600160601b03841660208201526001600160a01b038c811693169130917f339e4100371ca3951325b190c421cb3c67f09635d57fc14e6aacfcb52d387329910160405180910390a450509695505050505050565b611bbb614544565b611bc481612151565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f1501eda19b56071bf17a0a32e2efdeb611ccec1e2da5c7612bf674204901ce7a90600090a250565b3360009081526002602090815260409182902054825180840184526008815267457665725269736560c01b908301528251600160601b90910460e01b6001600160e01b03191681830152825180820360040181526024820184528051908301207f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60448301527fce794fa9785f2c930c5f814f254aa188dca4e3e9bde647a87f3a0c8d20d90736606483015260848201524660a48201523060c4808301919091528351808303909101815260e4909101909252815191012090565b6021546001600160a01b0316336001600160a01b031614611d1d57604051637c1aebb760e01b815260040160405180910390fd5b611d28838383614571565b505050565b6000336001600160a01b038116600081815260026020908152604091829020805463ffffffff60801b1916600160801b61ffff89811691820261ffff60901b191692909217600160901b928b169283021783558451918252928101929092529394507f6d8d587cf6c6d60a0dcd1fa635969d1d69787cfdf26d9f83ebaba44408fc1d2d9101611508565b33611dc181614382565b602154604080516305f00a1f60e21b8152905133926001600160a01b0316916317c0287c9160048083019260209291908290030181865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190615ba2565b341015611e4e5760405163627554ed60e01b815260040160405180910390fd5b60215460405163615eaa5960e01b81526001600160a01b0383811660048301526001600160601b038716602483015260ff86166044830152600092169063615eaa59906064016020604051808303816000875af1158015611eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed79190615b5f565b9050611eeb8286868463ffffffff16614488565b5050505050565b6001611efd81613abf565b6103e8831115611f205760405163c64200e960e01b815260040160405180910390fd5b611f2b82600a615a4a565b611f3d84670de0b6b3a7640000615a56565b611f479190615a8b565b6016556040518381527f2d2d4e5324f4ce25e3d52eea5f16c64ccd01d35f9f80f30b73346811cc9b951d906020016117e1565b6004611f8581613abf565b6001600160a01b038216611fac576040516366385fa360e01b815260040160405180910390fd5b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190615a9f565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120849190615a9f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190615a9f565b602080546001600160a01b03199081166001600160a01b0393841617909155601f8054909116838316179055604051908416907fafec26814d7c5e0716cdb68343bdf123509d8bae8a1a877de1c3869411985c5590600090a2505050565b600561215c81613abf565b6001600160a01b03821660009081526008602052604090205460ff16156121965760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600081815260086020908152604091829020805460ff1916600117905590519182527f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9101611448565b336121f481614382565b60003360215460405163d22d6f4360e01b81526001600160a01b0380841660048301526024820188905286151560448301529293506000929091169063d22d6f43906064016020604051808303816000875af1158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190615ad9565b905061228a828260016143a9565b60215460405163632abfe960e11b81526001600160a01b038481166004830152602482018890529091169063c6557fd290604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050505050565b600461230281613abf565b600780546001600160a01b0319166001600160a01b0384169081179091556040517f6feb2294766fb161940a49b92df0ad4a47ffb6ef8255e0b9f80c8c05b7ec6b0f90600090a25050565b600461235881613abf565b600d546001600160601b03168211156123845760405163c64200e960e01b815260040160405180910390fd5b600e8290556040518281527f160ad92b724bb5157ba7574b379ecc4ec5a5f5220cd651c3b44b4b1c12332b1190602001611448565b600060086123c681613abf565b6123d33085856000613bae565b5060019392505050565b6006546000906001600160a01b0383811691161480156123ff57506002601c54145b1561240c57506000919050565b6000612417836146bd565b905060026018541415801561243757506028544363ffffffff9081169116145b801561244c57506001600160a01b0383163b15155b801561247157506001600160a01b03831660009081526008602052604090205460ff16155b156115285761152883826146e1565b600461248b81613abf565b6001601e556040517f38e9e1bdbb19e199e2318a4fdd4145df21973acc643c88012128eeb61a386c6090600090a150565b336124c681614382565b336124d18184614845565b60215460405163e2c281db60e01b81526001600160a01b038381166004830152602482018790526001600160601b0386166044830152600092839291169063e2c281db906064016060604051808303816000875af1158015612537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255b9190615bbb565b6040516001600160601b03831681529094509092506001600160a01b03851691507fbedcdd66d86f5dc81286de7b36cc38398208ffb595a3e95330fca4fb21f08cba9060200160405180910390a26001600160a01b0383167ff4476f182b22aa6860f6aea0edf736040fd43167d941069fadffe4aef18ef7286125de8784615bfa565b604080516001600160601b03909216825260ff861660208301520160405180910390a2505050505050565b612611614544565b61145333826148ff565b600161262681613abf565b620f424083111561264a5760405163c64200e960e01b815260040160405180910390fd5b61265582600a615a4a565b61266784670de0b6b3a7640000615a56565b6126719190615a8b565b6017556040518381527fb25c7820d9392eafa2a90c45ca6438ae395e13490da78f2e2c77168cbb951534906020016117e1565b6006546000906126bc906001600160a01b03166146bd565b905090565b6126c9614544565b60008160088111156126dd576126dd615c25565b036126fa576040516252b55360e31b815260040160405180910390fd5b6001600160a01b038216612721576040516366385fa360e01b815260040160405180910390fd5b600180600083600881111561273857612738615c25565b600881111561274957612749615c25565b8152602080820192909252604090810160009081206001600160a01b03871682529092529020805460ff191691151591909117905580600881111561279057612790615c25565b6040516001600160a01b038416907fda7159b01021254a0864c86d0163ad02e9f9ce045913f19dc9315ce339a7270a90600090a35050565b60006127d5338484614008565b50600192915050565b60046127e981613abf565b816127f55760016127f8565b60025b601d5560405182151581527f381a2ba311289fc64532188b12030ca4ad77b2dc7c3a88ab03bacbf13da52a1c90602001611448565b3361283781614382565b600033602154604051632af7e50d60e21b81526001600160a01b038084166004830152602482018990526001600160601b038816604483015286151560648301529293506000929091169063abdf9434906084016020604051808303816000875af11580156128aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ce9190615b5f565b90506001600160601b038516156128eb576128eb828660016143a9565b8063ffffffff168614158015612906575063ffffffff811615155b1561297f57602154604051630b40697b60e31b81526001600160a01b0384811660048301526024820189905263ffffffff8416604483015290911690635a034bd8906064015b600060405180830381600087803b15801561296657600080fd5b505af115801561297a573d6000803e3d6000fd5b505050505b505050505050565b6312cc03006129996201518083615c3b565b65ffffffffffff1611156129c057604051635b30744d60e11b815260040160405180910390fd5b33600090815260026020526040902054600160a01b900465ffffffffffff1642811015612a00576040516319aad37160e01b815260040160405180910390fd5b6000612a0c8342615c60565b90508065ffffffffffff168265ffffffffffff161115612a3f57604051636badcecf60e01b815260040160405180910390fd5b336000818152600260205260409020805465ffffffffffff60a01b1916600160a01b65ffffffffffff85160217905560405165ffffffffffff851681526001600160a01b0391909116907f402f92847e995eb87d15fd380cf11ec5c61ca69a5f6cd305fd26cd1cb6a41757906020015b60405180910390a2505050565b6001612ac781613abf565b620186a0831115612aeb5760405163c64200e960e01b815260040160405180910390fd5b612af682600a615a4a565b612b0884670de0b6b3a7640000615a56565b612b129190615a8b565b60128190556040519081527fac218d80006936a5fb23226f25ffed76cd856dbcc539b7dd7a8abb5a418a8da4906020016117e1565b6006612b5281613abf565b6001600160a01b038216600081815260096020526040808220805460ff19166001179055517f07eccb5a6343032639dc3f1a913d254583bf745e350cdaa19ffc2b4cc2ebff6b9190a25050565b6001600160a01b03831660009081527fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f602052604090205460ff16612bf75760405163d9716e4360e01b815260040160405180910390fd5b6021546001600160a01b031663e1f21c67336040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908616602482015260448101859052606401600060405180830381600087803b158015612c5957600080fd5b505af1158015612c6d573d6000803e3d6000fd5b50505050612c84612c7b3390565b84836001613e1b565b50505050565b60006008612c9781613abf565b60215460405163153d88f360e11b81526001600160a01b0390911690632a7b11e690612cd4908b908a908a908a908a908f90600090600401615af6565b6020604051808303816000875af1158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190615b5f565b63ffffffff1691506000612d2b8488615b7a565b9050612d3a308a836000613bae565b6001600160601b03881615612d6357602154612d639030906001600160a01b03168a6000613bae565b612d6f89828886614488565b50509695505050505050565b612d83614544565b6000816008811115612d9757612d97615c25565b03612db4576040516252b55360e31b815260040160405180910390fd5b6001600160a01b038216612ddb576040516366385fa360e01b815260040160405180910390fd5b600060016000836008811115612df357612df3615c25565b6008811115612e0457612e04615c25565b8152602080820192909252604090810160009081206001600160a01b03871682529092529020805460ff1916911515919091179055806008811115612e4b57612e4b615c25565b6040516001600160a01b038416907f99b197980951aeda56a24210ac7963b47fac50b2277554a4fc7dc06fd305b57490600090a35050565b612e8b614544565b6001600160a01b038316612eb2576040516366385fa360e01b815260040160405180910390fd5b611d28838383614973565b33612ec781614382565b6001600160a01b038316612eee576040516366385fa360e01b815260040160405180910390fd5b6312cc0300612f006201518084615c3b565b65ffffffffffff161115612f2757604051635b30744d60e11b815260040160405180910390fd5b612f318242615c60565b336000818152600260209081526040808320805465ffffffffffff60a01b1916600160a01b65ffffffffffff97881602179055600482529182902080546001600160a01b0389166001600160a01b0319909116811790915582519081529386169084015290917f9141f23a32bd7f35c8ce161a6f9d05eba59799700a6a44094330bd68b3e251039101612aaf565b33612fc981614382565b60003360215460405163012a6efb60e21b81526001600160a01b038084166004830152602482018890526001600160601b0387166044830152929350600092839216906304a9bbec9060640160408051808303816000875af1158015613033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130579190615c81565b91509150613067838660016143a9565b6001600160601b038116156130a2576021546130909084906001600160a01b0316836000613bae565b6130a2816001600160601b0316614a2c565b602154604051630b40697b60e31b81526001600160a01b0385811660048301526024820189905263ffffffff8516604483015290911690635a034bd89060640161294c565b60036130f281613abf565b61311f620186a07f0000000000000000000000000000000000000000000000000000000000000000615cad565b6001600160601b03168210156131485760405163c64200e960e01b815260040160405180910390fd5b600c8290556040518281527f699d1c4c28f453c7c162bf9ab9d182bcca9b5860718f5dbc0dadb620c0aa077e90602001611448565b6001600160a01b0386166131a4576040516366385fa360e01b815260040160405180910390fd5b428410156131c557604051630407b05b60e31b815260040160405180910390fd5b6001600160a01b03871660009081526002602052604081208054909167ffffffffffffffff909116906131f6611c0e565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808e1692820192909252908b166060820152608081018a905267ffffffffffffffff841660a082015260c0810189905260e0016040516020818303038152906040528051906020012060405160200161329892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181529190528051602090910120835467ffffffffffffffff600190940193841667ffffffffffffffff199091161784559050601b60ff871610156132f3576132ec601b87615cc7565b955061334b565b601e8660ff16111561334b576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052605c016040516020818303038152906040528051906020012090505b6040805160008082526020820180845284905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561339f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615806133d457508a6001600160a01b0316816001600160a01b031614155b156133f257604051638baa579f60e01b815260040160405180910390fd5b6133ff8b8b8b6001613e1b565b505050505050505050505050565b600061341e8833888888888861317d565b613429888888611663565b98975050505050505050565b600661344081613abf565b6001600160a01b038216600081815260096020526040808220805460ff19169055517fe96bbe78c8bc645f0ee444e35730f56b458ea663d1b2a35cf93cefd7fce93dc19190a25050565b600461349581613abf565b6001600160a01b0382166134bc576040516366385fa360e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0384169081179091556040517f6a679ad6371327969c9ddeade76f85c3e657fd6d020eeb491becdd1b6d608db390600090a25050565b600161351281613abf565b6305f5e1008211156135375760405163c64200e960e01b815260040160405180910390fd5b6135436012600a615a4a565b61354d9083615a56565b60118190556040519081527f29b4862b0ac325a5ba77a99236953f6a42e083f4f886db919d7b0b5e9f2cee0090602001611448565b6001600160a01b038181166000908152600460205260409020541633146135bc57604051634014f1a560e01b815260040160405180910390fd5b33600090815260026020526040902054600160a01b900465ffffffffffff16428110156135fc576040516319aad37160e01b815260040160405180910390fd5b5050336000908152600260205260409020805465ffffffffffff60a01b1916600160a01b179055565b61362d614544565b8061363957600161363c565b60025b601c5560405181151581527f3d7f39af0cf901fec3da1b0ecfab4a0eb553ed671de67850e09cca22848dd866906020015b60405180910390a150565b6001600160a01b038083166000908152600260209081526040808320546003835281842094861684529390915281208054919263ffffffff600160601b909104811692600160a01b900416821415806136e057508054600160c01b900465ffffffffffff1642115b806136f757508054600160f81b900460ff16600114155b1561370757600092505050611528565b546001600160801b0316949350505050565b613721614544565b8061372d576001613730565b60025b60195560405181151581527f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a129060200161366d565b6021546000906001600160a01b0316336001600160a01b03161461379c57604051637c1aebb760e01b815260040160405180910390fd5b6115258383614ac1565b60056137b181613abf565b6001600160a01b03821660009081526008602052604090205460ff166137ea5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600081815260086020908152604091829020805460ff1916905590519182527fead11242b7eb5b3a03a27edc0039f1305d251bf91b3d1e94c3861c3d6e4ac1289101611448565b613843614544565b600c54156138645760405163e529091f60e01b815260040160405180910390fd5b61389530333060009081526023602052604090205461388e906001906001600160601b0316615b7a565b6000613bae565b6002601a8190556019556138cb6103e87f0000000000000000000000000000000000000000000000000000000000000000615cad565b6001600160601b0316600c556040517f994a0442f4498644e0bb3fe4b4c74ad21fbbb80e04b2fd1cb31f4248796d3dde90600090a1565b61390a614544565b6001600160a01b038116613931576040516366385fa360e01b815260040160405180910390fd5b600080546001600160a01b03169061394a908290614b5b565b613955826001614b5b565b600080546001600160a01b0319166001600160a01b0384811691821783556040519192908416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6139ac614544565b602180546001600160a01b0319166001600160a01b0383161790556139d081612151565b6040516001600160a01b038216907f8ae96d8af35324a34b19e4f33e72d620b502f69595bb43870ab5fd7a7de7823990600090a250565b82613a1181614382565b6021546001600160a01b0316336001600160a01b031614613a4557604051637c1aebb760e01b815260040160405180910390fd5b612c84848484614cec565b6001613a5b81613abf565b6064821080613a6c5750620f424082115b15613a8a5760405163c64200e960e01b815260040160405180910390fd5b60158290556040518281527fe24723968dd1fe95c864bec60a98788d4f02a5a3e1e9e80ccafdee9146ff54c790602001611448565b60016000826008811115613ad557613ad5615c25565b6008811115613ae657613ae6615c25565b81526020019081526020016000206000613afd3390565b6001600160a01b0316815260208101919091526040016000205460ff1661145357604051634014f1a560e01b815260040160405180910390fd5b60006002601a5403613bab57601254479081118015613b645750601554601454613b619190615cec565b43115b15613ba957613b74600a82615a8b565b60135460175491925090811115613b8a57506017545b81811115613b955750805b8015613ba757613ba481614dfe565b92505b505b505b90565b6001600160a01b038416600090815260236020526040812054613bdb9084906001600160601b0316615b7a565b6001600160a01b038616600090815260236020526040812080546001600160601b0319166001600160601b03841617905590915082613c1b576000613c3e565b600d54606490613c34906001600160601b031686615d04565b613c3e9190615cad565b90506000613c4c8286615b7a565b6001600160a01b0387166000908152602360205260409020549091506001600160601b0316613c7b8282615bfa565b6001600160a01b038816600090815260236020526040902080546001600160601b0319166001600160601b03928316179055831615613d01573060009081526023602052604081208054859290613cdc9084906001600160601b0316615bfa565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b613d0b8482614f39565b6006546001600160a01b0390811690891603613d73576006546040516001600160601b03881681526001600160a01b038981169216907f0e128c83dc42be0b80a07793e5b69c77c3981238a44754802b90d92ae85b3b489060200160405180910390a3613dd7565b6006546001600160a01b0390811690881603613dd7576006546040516001600160601b03881681526001600160a01b038a81169216907f5cd522aff7a2bf4d0c00ba029b9cebb7a25ed4a77695101f28f01f865421d0409060200160405180910390a35b6040516001600160601b03831681526001600160a01b0380891691908a1690600080516020615ddd8339815191529060200160405180910390a35050505050505050565b60006001600160a01b038516613e44576040516366385fa360e01b815260040160405180910390fd5b6001600160a01b038416613e6b576040516366385fa360e01b815260040160405180910390fd5b6001600160801b03831115613e85576001600160801b0392505b6001600160a01b03858116600090815260026020908152604080832060038352818420948916845293909152902080546fffffffffffffffffffffffffffffffff1981166001600160801b0387169081178355835477ffffffff00000000ffffffffffffffffffffffffffffffff1990921617600160601b90910463ffffffff16600160a01b021781558315613f71578154600160901b900461ffff168015613f4357613f3481610e10615d33565b613f3e9042615c60565b613f4b565b65ffffffffffff5b825465ffffffffffff91909116600160c01b0265ffffffffffff60c01b19909116178255505b80546001600160f81b0316600160f81b1781556040516001600160a01b0380881691908916907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590613fc69089815260200190565b60405180910390a35060019695505050505050565b6001600160a01b031660009081526002602052604090205442600160a01b90910465ffffffffffff161190565b8261401281614382565b6001600160a01b038416158061402f57506001600160a01b038316155b1561404d576040516366385fa360e01b815260040160405180910390fd5b8160000361406e57604051635e85ae7360e01b815260040160405180910390fd5b6001600160a01b0384166000908152602460205260409020546001600160601b0316614099856146bd565b6140a39190615d58565b8211156140c3576040516305c2afdf60e21b815260040160405180910390fd5b6001600160a01b03841660009081526008602052604081205460ff168061410257506001600160a01b03841660009081526008602052604090205460ff165b601854909150600214156000614119600c54151590565b6020549091506001600160a01b0390811690878116821490891682148561427857306001600160a01b038a16036141635760405163d9716e4360e01b815260040160405180910390fd5b600c5488111561418657604051631b97a87560e01b815260040160405180910390fd5b836141a4576040516306c3d31f60e51b815260040160405180910390fd5b84156142785781806141b35750805b80156141cd57503260009081526025602052604090205443145b156141eb5760405163e069ee1d60e01b815260040160405180910390fd5b32600090815260256020526040902043905581801561420c57506002601954145b1561427857600f546001600160601b031680614227306146bd565b111561423f5761423f816001600160601b0316614f86565b614247613b37565b15614276576040517fac401825222c905dafef53f897e1fe565e107a9b114737f28ad26c699784bd8d90600090a15b505b83156143105780156142a15787600a60008282546142969190615cec565b909155506143109050565b81156143105787600b60008282546142b99190615cec565b90915550506011548811156143105760006142d5606447615a8b565b9050600060646010546142e89190615a8b565b9050808211156142f6578091505b81601360008282546143089190615cec565b909155505050505b6001868061433657506001600160a01b038a1660009081526009602052604090205460ff165b1561433f575060005b8515614369578615614360576028805463ffffffff19166001179055614369565b6143698a6150e0565b6143758b8b8b84613bae565b5050505050505050505050565b61438b81613fdb565b15611453576040516335543b4960e21b815260040160405180910390fd5b6001600160a01b038316600090815260246020526040812080548492906143da9084906001600160601b0316615b7a565b92506101000a8154816001600160601b0302191690836001600160601b031602179055508015611d28576040516001600160601b03831681526001600160a01b038416907fbedcdd66d86f5dc81286de7b36cc38398208ffb595a3e95330fca4fb21f08cba9060200160405180910390a26040516001600160601b03831681526001600160a01b038416908190600080516020615ddd833981519152906020015b60405180910390a3505050565b6144928484614845565b60215460405163238d3a8f60e11b81526001600160a01b038681166004830152602482018490529091169063471a751e90604401600060405180830381600087803b1580156144e057600080fd5b505af11580156144f4573d6000803e3d6000fd5b5050604080516001600160601b038716815260ff861660208201526001600160a01b03881693507ff4476f182b22aa6860f6aea0edf736040fd43167d941069fadffe4aef18ef728925001611508565b6000546001600160a01b0316331461456f57604051632e6c18c960e11b815260040160405180910390fd5b565b6001600160a01b038216614598576040516366385fa360e01b815260040160405180910390fd5b6001600160a01b038084166000818152600360209081526040808320948716835293815283822092825260029052919091208215614678578054600160801b900461ffff1660008115614604576145f182610e10615d6f565b6145ff9061ffff1642615c60565b61460c565b65ffffffffffff5b8354855460ff60f01b1965ffffffffffff909316600160c01b0265ffffffffffff60c01b19600160801b63ffffffff600160401b9095049490941693909302929092166dffffffffffff00000000ffffffff60801b19909116171716600160f01b17845550611eeb9050565b5481546eff00000000000000000000ffffffff60801b1916600160801b600160401b90920463ffffffff90811660001901169190910260ff60f01b1916179055505050565b6001600160a01b03166000908152602360205260409020546001600160601b031690565b602754600160601b90046001600160a01b03163214158061471757506026546001600160a01b03838116600160601b9092041614155b15614720575050565b600080614735846001600160a01b0316615223565b90925090506001600160a01b03811661474e5750505050565b6000306001600160a01b0383160361476b57508190506001614782565b6001600160a01b0383163014614782575050505050565b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa1580156147cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f09190615ba2565b6026549091506001600160601b03166dffffffffffffffffffffffffffff861611801561482757506027546001600160601b031681115b1561297f5760405163878d636360e01b815260040160405180910390fd5b6001600160a01b0382166000908152602460205260408120546148729083906001600160601b0316615bfa565b905061487d836146bd565b816001600160601b031611156148a6576040516305c2afdf60e21b815260040160405180910390fd5b6001600160a01b03831660008181526024602090815260409182902080546001600160601b0319166001600160601b0386811691909117909155915191851682528291600080516020615ddd833981519152910161447b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461494c576040519150601f19603f3d011682016040523d82523d6000602084013e614951565b606091505b5050905080611d285760405163b5747cc760e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156149c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e69190615abc565b50816001600160a01b0316836001600160a01b03167ff217402c85197de87cd806653771027d1e91101ef79ab35684a580c62b91a9b58360405161447b91815260200190565b80156114535760215460405163d9fbb1e960e01b8152600481018390526001600160a01b039091169063d9fbb1e990602401600060405180830381600087803b158015614a7857600080fd5b505af1158015614a8c573d6000803e3d6000fd5b505050507fd3be3dbc076afa976ee7dfe1f596f6d7905e9441a1a426a244a12ef071272dd48160405161366d91815260200190565b6001600160a01b038083166000908152600260209081526040808320546003835281842094861684529390915281208054919263ffffffff600160401b909104811692600160801b90041682141580614b2957508054600160c01b900465ffffffffffff1642115b80614b4057508054600160f01b900460ff16600114155b15614b5057600092505050611528565b506001949350505050565b6001600160a01b039190911660009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f60209081526040808320805494151560ff1995861681179091557fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f835281842080548616821790557f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b835281842080548616821790557fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643835281842080548616821790557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c835281842080548616821790557f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a835281842080548616821790557fdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e835281842080548616821790557f4db623e5c4870b62d3fc9b4e8f893a1a77627d75ab45d9ff7e56ba19564af99b9092529091208054909216179055565b614cf8838260006143a9565b6001600160a01b038316600090815260236020526040812054614d259083906001600160601b0316615b7a565b6001600160a01b0385811660009081526023602052604080822080546001600160601b0319166001600160601b0386811691909117909155928716825290205491925016614d738382615bfa565b6001600160a01b038516600090815260236020526040902080546001600160601b0319166001600160601b0392909216919091179055614db38484614845565b614dbd8282614f39565b6040516001600160601b03841681526001600160a01b038086169190871690600080516020615ddd8339815191529060200160405180910390a35050505050565b6000600260185403614e0f57600080fd5b60026018556016546013558115614f2f57602154600090614e38906001600160a01b03166146bd565b601f5460215460405163f43ae45b60e01b81526001600160a01b039283166004820152911660248201526044810185905290915073__$a181ae1565cc5e39e7a26d42a8e8464bfb$__9063f43ae45b9060640160006040518083038186803b158015614ea357600080fd5b505af4158015614eb7573d6000803e3d6000fd5b505060215460009250839150614ed5906001600160a01b03166146bd565b614edf9190615d58565b60408051868152602081018390529192507f3967d46c5aa65ced73be27b4c6d249e552274da7a605101a66ef571a8e2608a4910160405180910390a143601455614f2881614a2c565b6001925050505b6001601855919050565b602254806001600160601b038416600003614f5a57614f5781615d90565b90505b826001600160601b0316600003614f7757614f7481615da7565b90505b808214612c8457602255505050565b600260185403614f9557600080fd5b6002601855601f544790614fb69030906001600160a01b0316846001613e1b565b50816001600160601b0316601e6000828254614fd29190615cec565b9091555050601f54604051637041046d60e01b81526001600160a01b0390911660048201526024810183905273__$a181ae1565cc5e39e7a26d42a8e8464bfb$__90637041046d9060440160006040518083038186803b15801561503557600080fd5b505af4158015615049573d6000803e3d6000fd5b505050506000814761505b9190615d58565b60408051858152602081018390529192507f1d835182508bc46cfe26167d5d6ca20231bf92fb2ee0d558d40553b29a40fdf9910160405180910390a1600d54600e546001600160601b03909116906150b39083615a56565b6150bd9190615a8b565b6005549091506150d6906001600160a01b0316826148ff565b5050600160185550565b60006150eb826146bd565b9050600080615102846001600160a01b0316615223565b9092509050306001600160a01b0382160361511a5750805b6001600160a01b03811661513e5750506028805463ffffffff191660011790555050565b6040516370a0823160e01b81526001600160a01b038581166004830152600091908316906370a0823190602401602060405180830381865afa158015615188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151ac9190615ba2565b6040805160a0810182526001600160601b039687168082526001600160a01b0398909816602082018190529290961690860181905232606087018190524363ffffffff166080909701879052600160601b928302909717602655950290941760275550506028805463ffffffff1916909117905550565b6000806001600160a01b0383163b61524057506000928392509050565b6040805160048152602481019091526020810180516001600160e01b0316630dfe168160e01b1790526152749084906152b1565b6040805160048152602481019091526020810180516001600160e01b031663d21220a760e01b1790526152a89085906152b1565b91509150915091565b6000806000846001600160a01b0316846040516152ce9190615dc0565b600060405180830381855afa9150503d8060008114615309576040519150601f19603f3d011682016040523d82523d6000602084013e61530e565b606091505b509150915081801561532257506020815110155b15615344578080602001905181019061533b9190615a9f565b92505050611528565b506000949350505050565b60005b8381101561536a578181015183820152602001615352565b83811115612c845750506000910152565b602081526000825180602084015261539a81604085016020870161534f565b601f01601f19169190910160400192915050565b801515811461145357600080fd5b600080604083850312156153cf57600080fd5b82356153da816153ae565b915060208301356153ea816153ae565b809150509250929050565b6001600160a01b038116811461145357600080fd5b6000806040838503121561541d57600080fd5b8235615428816153f5565b946020939093013593505050565b60006020828403121561544857600080fd5b8135615453816153f5565b9392505050565b6001600160601b038116811461145357600080fd5b60006020828403121561548157600080fd5b81356154538161545a565b6000806000606084860312156154a157600080fd5b83356154ac816153f5565b925060208401356154bc816153f5565b929592945050506040919091013590565b6000602082840312156154df57600080fd5b8135615453816153ae565b600080604083850312156154fd57600080fd5b50508035926020909101359150565b80356009811061551b57600080fd5b919050565b6000806040838503121561553357600080fd5b61553c8361550c565b915060208301356153ea816153f5565b60ff8116811461145357600080fd5b803565ffffffffffff8116811461551b57600080fd5b60008060008060008060c0878903121561558a57600080fd5b8635615595816153f5565b955060208701356155a58161545a565b945060408701356155b58161554c565b93506155c36060880161555b565b925060808701356155d38161545a565b915060a08701356155e3816153ae565b809150509295509295509295565b60008060006060848603121561560657600080fd5b8335615611816153f5565b92506020840135615621816153f5565b91506040840135615631816153ae565b809150509250925092565b803561ffff8116811461551b57600080fd5b6000806040838503121561566157600080fd5b61566a8361563c565b91506156786020840161563c565b90509250929050565b6000806040838503121561569457600080fd5b823561569f8161545a565b915060208301356153ea8161554c565b600080604083850312156156c257600080fd5b8235915060208301356153ea816153ae565b6000602082840312156156e657600080fd5b5035919050565b6000806040838503121561570057600080fd5b823561553c816153f5565b6000806040838503121561571e57600080fd5b8235615729816153f5565b915060208301356153ea8161545a565b6000806040838503121561574c57600080fd5b8235915060208301356153ea8161545a565b6000806040838503121561577157600080fd5b823561577c816153f5565b91506156786020840161550c565b60008060006060848603121561579f57600080fd5b8335925060208401356156218161545a565b6000602082840312156157c357600080fd5b6115258261555b565b6000806000606084860312156157e157600080fd5b83356157ec816153f5565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561581a57600080fd5b8635615825816153f5565b955060208701356158358161545a565b945060408701356158458161545a565b935060608701356158558161554c565b92506158636080880161555b565b915060a08701356155e38161545a565b6000806040838503121561588657600080fd5b8235615891816153f5565b91506156786020840161555b565b600080600080600080600060e0888a0312156158ba57600080fd5b87356158c5816153f5565b965060208801356158d5816153f5565b9550604088013594506060880135935060808801356158f38161554c565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561592557600080fd5b8335615930816153f5565b92506020840135615940816153f5565b915060408401356156318161545a565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156159a157816000190482111561598757615987615950565b8085161561599457918102915b93841c939080029061596b565b509250929050565b6000826159b857506001611528565b816159c557506000611528565b81600181146159db57600281146159e557615a01565b6001915050611528565b60ff8411156159f6576159f6615950565b50506001821b611528565b5060208310610133831016604e8410600b8410161715615a24575081810a611528565b615a2e8383615966565b8060001904821115615a4257615a42615950565b029392505050565b600061152583836159a9565b6000816000190483118215151615615a7057615a70615950565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615a9a57615a9a615a75565b500490565b600060208284031215615ab157600080fd5b8151615453816153f5565b600060208284031215615ace57600080fd5b8151615453816153ae565b600060208284031215615aeb57600080fd5b81516154538161545a565b6001600160a01b039790971687526001600160601b03958616602088015260ff94909416604087015265ffffffffffff9290921660608601528316608085015290911660a0830152151560c082015260e00190565b805163ffffffff8116811461551b57600080fd5b600060208284031215615b7157600080fd5b61152582615b4b565b60006001600160601b0383811690831681811015615b9a57615b9a615950565b039392505050565b600060208284031215615bb457600080fd5b5051919050565b600080600060608486031215615bd057600080fd5b615bd984615b4b565b92506020840151615be98161545a565b60408501519092506156318161554c565b60006001600160601b03808316818516808303821115615c1c57615c1c615950565b01949350505050565b634e487b7160e01b600052602160045260246000fd5b600065ffffffffffff80841680615c5457615c54615a75565b92169190910492915050565b600065ffffffffffff808316818516808303821115615c1c57615c1c615950565b60008060408385031215615c9457600080fd5b615c9d83615b4b565b915060208301516153ea8161545a565b60006001600160601b0380841680615c5457615c54615a75565b600060ff821660ff84168060ff03821115615ce457615ce4615950565b019392505050565b60008219821115615cff57615cff615950565b500190565b60006001600160601b0380831681851681830481118215151615615d2a57615d2a615950565b02949350505050565b600065ffffffffffff80831681851681830481118215151615615d2a57615d2a615950565b600082821015615d6a57615d6a615950565b500390565b600061ffff80831681851681830481118215151615615d2a57615d2a615950565b600081615d9f57615d9f615950565b506000190190565b600060018201615db957615db9615950565b5060010190565b60008251615dd281846020870161534f565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205e3af699fe1a512997109e546d86be480d58916217722b446005641b67abf6aa64736f6c634300080f0033";
        public EverRiseDeploymentBase() : base(BYTECODE) { }
        public EverRiseDeploymentBase(string byteCode) : base(byteCode) { }
        [Parameter("address", "routerAddress", 1)]
        public virtual string RouterAddress { get; set; }
    }

    public partial class DomainSeparatorFunction : DomainSeparatorFunctionBase { }

    [Function("DOMAIN_SEPARATOR", "bytes32")]
    public class DomainSeparatorFunctionBase : FunctionMessage
    {

    }

    public partial class DomainTypehashFunction : DomainTypehashFunctionBase { }

    [Function("DOMAIN_TYPEHASH", "bytes32")]
    public class DomainTypehashFunctionBase : FunctionMessage
    {

    }

    public partial class PermitTypehashFunction : PermitTypehashFunctionBase { }

    [Function("PERMIT_TYPEHASH", "bytes32")]
    public class PermitTypehashFunctionBase : FunctionMessage
    {

    }

    public partial class AddControlRoleFunction : AddControlRoleFunctionBase { }

    [Function("addControlRole")]
    public class AddControlRoleFunctionBase : FunctionMessage
    {
        [Parameter("address", "newController", 1)]
        public virtual string NewController { get; set; }
        [Parameter("uint8", "role", 2)]
        public virtual byte Role { get; set; }
    }

    public partial class AddExchangeHotWalletFunction : AddExchangeHotWalletFunctionBase { }

    [Function("addExchangeHotWallet")]
    public class AddExchangeHotWalletFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class AllowanceFunction : AllowanceFunctionBase { }

    [Function("allowance", "uint256")]
    public class AllowanceFunctionBase : FunctionMessage
    {
        [Parameter("address", "owner", 1)]
        public virtual string Owner { get; set; }
        [Parameter("address", "spender", 2)]
        public virtual string Spender { get; set; }
    }

    public partial class AllowancesFunction : AllowancesFunctionBase { }

    [Function("allowances", typeof(AllowancesOutputDTO))]
    public class AllowancesFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
        [Parameter("address", "", 2)]
        public virtual string ReturnValue2 { get; set; }
    }

    public partial class ApprovalsFunction : ApprovalsFunctionBase { }

    [Function("approvals", typeof(ApprovalsOutputDTO))]
    public class ApprovalsFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class ApproveFunction : ApproveFunctionBase { }

    [Function("approve", "bool")]
    public class ApproveFunctionBase : FunctionMessage
    {
        [Parameter("address", "spender", 1)]
        public virtual string Spender { get; set; }
        [Parameter("uint256", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class ApproveNFTAndTokensFunction : ApproveNFTAndTokensFunctionBase { }

    [Function("approveNFTAndTokens")]
    public class ApproveNFTAndTokensFunctionBase : FunctionMessage
    {
        [Parameter("address", "bridgeAddress", 1)]
        public virtual string BridgeAddress { get; set; }
        [Parameter("uint256", "nftId", 2)]
        public virtual BigInteger NftId { get; set; }
        [Parameter("uint256", "tokenAmount", 3)]
        public virtual BigInteger TokenAmount { get; set; }
    }

    public partial class AutoBurnFunction : AutoBurnFunctionBase { }

    [Function("autoBurn", "bool")]
    public class AutoBurnFunctionBase : FunctionMessage
    {

    }

    public partial class BalanceOfFunction : BalanceOfFunctionBase { }

    [Function("balanceOf", "uint256")]
    public class BalanceOfFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class BridgeStakeNftInFunction : BridgeStakeNftInFunctionBase { }

    [Function("bridgeStakeNftIn", "uint256")]
    public class BridgeStakeNftInFunctionBase : FunctionMessage
    {
        [Parameter("address", "toAddress", 1)]
        public virtual string ToAddress { get; set; }
        [Parameter("uint96", "depositTokens", 2)]
        public virtual BigInteger DepositTokens { get; set; }
        [Parameter("uint8", "numOfMonths", 3)]
        public virtual byte NumOfMonths { get; set; }
        [Parameter("uint48", "depositTime", 4)]
        public virtual ulong DepositTime { get; set; }
        [Parameter("uint96", "withdrawnAmount", 5)]
        public virtual BigInteger WithdrawnAmount { get; set; }
        [Parameter("bool", "achievementClaimed", 6)]
        public virtual bool AchievementClaimed { get; set; }
    }

    public partial class BridgeStakeNftOutFunction : BridgeStakeNftOutFunctionBase { }

    [Function("bridgeStakeNftOut")]
    public class BridgeStakeNftOutFunctionBase : FunctionMessage
    {
        [Parameter("address", "fromAddress", 1)]
        public virtual string FromAddress { get; set; }
        [Parameter("uint256", "nftId", 2)]
        public virtual BigInteger NftId { get; set; }
    }

    public partial class BridgeVaultLockedBalanceFunction : BridgeVaultLockedBalanceFunctionBase { }

    [Function("bridgeVaultLockedBalance", "uint256")]
    public class BridgeVaultLockedBalanceFunctionBase : FunctionMessage
    {

    }

    public partial class BurnAddressFunction : BurnAddressFunctionBase { }

    [Function("burnAddress", "address")]
    public class BurnAddressFunctionBase : FunctionMessage
    {

    }

    public partial class BusinessDevelopmentAddressFunction : BusinessDevelopmentAddressFunctionBase { }

    [Function("businessDevelopmentAddress", "address")]
    public class BusinessDevelopmentAddressFunctionBase : FunctionMessage
    {

    }

    public partial class BusinessDevelopmentDivisorFunction : BusinessDevelopmentDivisorFunctionBase { }

    [Function("businessDevelopmentDivisor", "uint256")]
    public class BusinessDevelopmentDivisorFunctionBase : FunctionMessage
    {

    }

    public partial class BuyBackEnabledFunction : BuyBackEnabledFunctionBase { }

    [Function("buyBackEnabled", "bool")]
    public class BuyBackEnabledFunctionBase : FunctionMessage
    {

    }

    public partial class CrossChainBuybackFunction : CrossChainBuybackFunctionBase { }

    [Function("crossChainBuyback")]
    public class CrossChainBuybackFunctionBase : FunctionMessage
    {

    }

    public partial class DecimalsFunction : DecimalsFunctionBase { }

    [Function("decimals", "uint8")]
    public class DecimalsFunctionBase : FunctionMessage
    {

    }

    public partial class EarlyWithdrawFunction : EarlyWithdrawFunctionBase { }

    [Function("earlyWithdraw")]
    public class EarlyWithdrawFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "nftId", 1)]
        public virtual BigInteger NftId { get; set; }
        [Parameter("uint96", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class EnterStakingFunction : EnterStakingFunctionBase { }

    [Function("enterStaking")]
    public class EnterStakingFunctionBase : FunctionMessage
    {
        [Parameter("uint96", "amount", 1)]
        public virtual BigInteger Amount { get; set; }
        [Parameter("uint8", "numOfMonths", 2)]
        public virtual byte NumOfMonths { get; set; }
    }

    public partial class EverBridgeVaultFunction : EverBridgeVaultFunctionBase { }

    [Function("everBridgeVault", "address")]
    public class EverBridgeVaultFunctionBase : FunctionMessage
    {

    }

    public partial class ExcludeFromFeeFunction : ExcludeFromFeeFunctionBase { }

    [Function("excludeFromFee")]
    public class ExcludeFromFeeFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class ExtendLockTokensAndNftsFunction : ExtendLockTokensAndNftsFunctionBase { }

    [Function("extendLockTokensAndNfts")]
    public class ExtendLockTokensAndNftsFunctionBase : FunctionMessage
    {
        [Parameter("uint48", "length", 1)]
        public virtual ulong Length { get; set; }
    }

    public partial class GetAmountLockedFunction : GetAmountLockedFunctionBase { }

    [Function("getAmountLocked", "uint256")]
    public class GetAmountLockedFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class HasTokenStartedFunction : HasTokenStartedFunctionBase { }

    [Function("hasTokenStarted", "bool")]
    public class HasTokenStartedFunctionBase : FunctionMessage
    {

    }

    public partial class HoldersFunction : HoldersFunctionBase { }

    [Function("holders", "uint256")]
    public class HoldersFunctionBase : FunctionMessage
    {

    }

    public partial class IncludeInFeeFunction : IncludeInFeeFunctionBase { }

    [Function("includeInFee")]
    public class IncludeInFeeFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class IncreaseStakeFunction : IncreaseStakeFunctionBase { }

    [Function("increaseStake")]
    public class IncreaseStakeFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "nftId", 1)]
        public virtual BigInteger NftId { get; set; }
        [Parameter("uint96", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class IsApprovedForAllFunction : IsApprovedForAllFunctionBase { }

    [Function("isApprovedForAll", "bool")]
    public class IsApprovedForAllFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
        [Parameter("address", "operator", 2)]
        public virtual string Operator { get; set; }
    }

    public partial class IsExchangeHotWalletFunction : IsExchangeHotWalletFunctionBase { }

    [Function("isExchangeHotWallet", "bool")]
    public class IsExchangeHotWalletFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class IsExcludedFromFeeFunction : IsExcludedFromFeeFunctionBase { }

    [Function("isExcludedFromFee", "bool")]
    public class IsExcludedFromFeeFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class IsWalletLockedFunction : IsWalletLockedFunctionBase { }

    [Function("isWalletLocked", "bool")]
    public class IsWalletLockedFunctionBase : FunctionMessage
    {
        [Parameter("address", "fromAddress", 1)]
        public virtual string FromAddress { get; set; }
    }

    public partial class LeaveStakingFunction : LeaveStakingFunctionBase { }

    [Function("leaveStaking")]
    public class LeaveStakingFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "nftId", 1)]
        public virtual BigInteger NftId { get; set; }
        [Parameter("bool", "overrideNotClaimed", 2)]
        public virtual bool OverrideNotClaimed { get; set; }
    }

    public partial class LiquidityFeeFunction : LiquidityFeeFunctionBase { }

    [Function("liquidityFee", "uint96")]
    public class LiquidityFeeFunctionBase : FunctionMessage
    {

    }

    public partial class LiquidityLockedFunction : LiquidityLockedFunctionBase { }

    [Function("liquidityLocked", "bool")]
    public class LiquidityLockedFunctionBase : FunctionMessage
    {

    }

    public partial class LockTokensAndNftsFunction : LockTokensAndNftsFunctionBase { }

    [Function("lockTokensAndNfts")]
    public class LockTokensAndNftsFunctionBase : FunctionMessage
    {
        [Parameter("address", "altAccount", 1)]
        public virtual string AltAccount { get; set; }
        [Parameter("uint48", "length", 2)]
        public virtual ulong Length { get; set; }
    }

    public partial class MirgateV1V2HolderFunction : MirgateV1V2HolderFunctionBase { }

    [Function("mirgateV1V2Holder", "bool")]
    public class MirgateV1V2HolderFunctionBase : FunctionMessage
    {
        [Parameter("address", "holder", 1)]
        public virtual string Holder { get; set; }
        [Parameter("uint96", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class MirgateV2StakerFunction : MirgateV2StakerFunctionBase { }

    [Function("mirgateV2Staker", "uint256")]
    public class MirgateV2StakerFunctionBase : FunctionMessage
    {
        [Parameter("address", "toAddress", 1)]
        public virtual string ToAddress { get; set; }
        [Parameter("uint96", "rewards", 2)]
        public virtual BigInteger Rewards { get; set; }
        [Parameter("uint96", "depositTokens", 3)]
        public virtual BigInteger DepositTokens { get; set; }
        [Parameter("uint8", "numOfMonths", 4)]
        public virtual byte NumOfMonths { get; set; }
        [Parameter("uint48", "depositTime", 5)]
        public virtual ulong DepositTime { get; set; }
        [Parameter("uint96", "withdrawnAmount", 6)]
        public virtual BigInteger WithdrawnAmount { get; set; }
    }

    public partial class NameFunction : NameFunctionBase { }

    [Function("name", "string")]
    public class NameFunctionBase : FunctionMessage
    {

    }

    public partial class NoncesFunction : NoncesFunctionBase { }

    [Function("nonces", "uint256")]
    public class NoncesFunctionBase : FunctionMessage
    {
        [Parameter("address", "owner", 1)]
        public virtual string Owner { get; set; }
    }

    public partial class OffchainBalanceExcludedFunction : OffchainBalanceExcludedFunctionBase { }

    [Function("offchainBalanceExcluded", "bool")]
    public class OffchainBalanceExcludedFunctionBase : FunctionMessage
    {

    }

    public partial class OwnerFunction : OwnerFunctionBase { }

    [Function("owner", "address")]
    public class OwnerFunctionBase : FunctionMessage
    {

    }

    public partial class PermitFunction : PermitFunctionBase { }

    [Function("permit")]
    public class PermitFunctionBase : FunctionMessage
    {
        [Parameter("address", "owner", 1)]
        public virtual string Owner { get; set; }
        [Parameter("address", "spender", 2)]
        public virtual string Spender { get; set; }
        [Parameter("uint256", "value", 3)]
        public virtual BigInteger Value { get; set; }
        [Parameter("uint256", "deadline", 4)]
        public virtual BigInteger Deadline { get; set; }
        [Parameter("uint8", "v", 5)]
        public virtual byte V { get; set; }
        [Parameter("bytes32", "r", 6)]
        public virtual byte[] R { get; set; }
        [Parameter("bytes32", "s", 7)]
        public virtual byte[] S { get; set; }
    }

    public partial class RemoveControlRoleFunction : RemoveControlRoleFunctionBase { }

    [Function("removeControlRole")]
    public class RemoveControlRoleFunctionBase : FunctionMessage
    {
        [Parameter("address", "oldController", 1)]
        public virtual string OldController { get; set; }
        [Parameter("uint8", "role", 2)]
        public virtual byte Role { get; set; }
    }

    public partial class RemoveExchangeHotWalletFunction : RemoveExchangeHotWalletFunctionBase { }

    [Function("removeExchangeHotWallet")]
    public class RemoveExchangeHotWalletFunctionBase : FunctionMessage
    {
        [Parameter("address", "account", 1)]
        public virtual string Account { get; set; }
    }

    public partial class RevokeApprovalsFunction : RevokeApprovalsFunctionBase { }

    [Function("revokeApprovals")]
    public class RevokeApprovalsFunctionBase : FunctionMessage
    {
        [Parameter("bool", "tokens", 1)]
        public virtual bool Tokens { get; set; }
        [Parameter("bool", "nfts", 2)]
        public virtual bool Nfts { get; set; }
    }

    public partial class RolesFunction : RolesFunctionBase { }

    [Function("roles", "bool")]
    public class RolesFunctionBase : FunctionMessage
    {
        [Parameter("uint8", "", 1)]
        public virtual byte ReturnValue1 { get; set; }
        [Parameter("address", "", 2)]
        public virtual string ReturnValue2 { get; set; }
    }

    public partial class SetApprovalForAllFunction : SetApprovalForAllFunctionBase { }

    [Function("setApprovalForAll")]
    public class SetApprovalForAllFunctionBase : FunctionMessage
    {
        [Parameter("address", "fromAddress", 1)]
        public virtual string FromAddress { get; set; }
        [Parameter("address", "operator", 2)]
        public virtual string Operator { get; set; }
        [Parameter("bool", "approved", 3)]
        public virtual bool Approved { get; set; }
    }

    public partial class SetAutoBurnFunction : SetAutoBurnFunctionBase { }

    [Function("setAutoBurn")]
    public class SetAutoBurnFunctionBase : FunctionMessage
    {
        [Parameter("bool", "_enabled", 1)]
        public virtual bool Enabled { get; set; }
    }

    public partial class SetAutoTimeoutFunction : SetAutoTimeoutFunctionBase { }

    [Function("setAutoTimeout")]
    public class SetAutoTimeoutFunctionBase : FunctionMessage
    {
        [Parameter("uint16", "tokensHrs", 1)]
        public virtual ushort TokensHrs { get; set; }
        [Parameter("uint16", "nftsHrs", 2)]
        public virtual ushort NftsHrs { get; set; }
    }

    public partial class SetBurnAddressFunction : SetBurnAddressFunctionBase { }

    [Function("setBurnAddress")]
    public class SetBurnAddressFunctionBase : FunctionMessage
    {
        [Parameter("address", "_burnAddress", 1)]
        public virtual string BurnAddress { get; set; }
    }

    public partial class SetBurnableTokensZeroFunction : SetBurnableTokensZeroFunctionBase { }

    [Function("setBurnableTokensZero")]
    public class SetBurnableTokensZeroFunctionBase : FunctionMessage
    {

    }

    public partial class SetBusinessDevelopmentAddressFunction : SetBusinessDevelopmentAddressFunctionBase { }

    [Function("setBusinessDevelopmentAddress")]
    public class SetBusinessDevelopmentAddressFunctionBase : FunctionMessage
    {
        [Parameter("address", "newAddress", 1)]
        public virtual string NewAddress { get; set; }
    }

    public partial class SetBusinessDevelopmentDivisorFunction : SetBusinessDevelopmentDivisorFunctionBase { }

    [Function("setBusinessDevelopmentDivisor")]
    public class SetBusinessDevelopmentDivisorFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "divisor", 1)]
        public virtual BigInteger Divisor { get; set; }
    }

    public partial class SetBuyBackEnabledFunction : SetBuyBackEnabledFunctionBase { }

    [Function("setBuyBackEnabled")]
    public class SetBuyBackEnabledFunctionBase : FunctionMessage
    {
        [Parameter("bool", "_enabled", 1)]
        public virtual bool Enabled { get; set; }
    }

    public partial class SetBuybackMinAvailabilityFunction : SetBuybackMinAvailabilityFunctionBase { }

    [Function("setBuybackMinAvailability")]
    public class SetBuybackMinAvailabilityFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "amount", 1)]
        public virtual BigInteger Amount { get; set; }
        [Parameter("uint256", "numOfDecimals", 2)]
        public virtual BigInteger NumOfDecimals { get; set; }
    }

    public partial class SetBuybackTriggerTokenLimitFunction : SetBuybackTriggerTokenLimitFunctionBase { }

    [Function("setBuybackTriggerTokenLimit")]
    public class SetBuybackTriggerTokenLimitFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "buyBackTriggerLimit", 1)]
        public virtual BigInteger BuyBackTriggerLimit { get; set; }
    }

    public partial class SetBuybackUpperLimitFunction : SetBuybackUpperLimitFunctionBase { }

    [Function("setBuybackUpperLimit")]
    public class SetBuybackUpperLimitFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "buyBackLimit", 1)]
        public virtual BigInteger BuyBackLimit { get; set; }
        [Parameter("uint256", "numOfDecimals", 2)]
        public virtual BigInteger NumOfDecimals { get; set; }
    }

    public partial class SetEverBridgeVaultAddressFunction : SetEverBridgeVaultAddressFunctionBase { }

    [Function("setEverBridgeVaultAddress")]
    public class SetEverBridgeVaultAddressFunctionBase : FunctionMessage
    {
        [Parameter("address", "contractAddress", 1)]
        public virtual string ContractAddress { get; set; }
    }

    public partial class SetLiquidityFeePercentFunction : SetLiquidityFeePercentFunctionBase { }

    [Function("setLiquidityFeePercent")]
    public class SetLiquidityFeePercentFunctionBase : FunctionMessage
    {
        [Parameter("uint96", "liquidityFeeRate", 1)]
        public virtual BigInteger LiquidityFeeRate { get; set; }
    }

    public partial class SetLiquidityLockFunction : SetLiquidityLockFunctionBase { }

    [Function("setLiquidityLock")]
    public class SetLiquidityLockFunctionBase : FunctionMessage
    {
        [Parameter("bool", "_enabled", 1)]
        public virtual bool Enabled { get; set; }
    }

    public partial class SetMaxBuybackAmountUpdatedFunction : SetMaxBuybackAmountUpdatedFunctionBase { }

    [Function("setMaxBuybackAmountUpdated")]
    public class SetMaxBuybackAmountUpdatedFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "maxAmount", 1)]
        public virtual BigInteger MaxAmount { get; set; }
        [Parameter("uint256", "numOfDecimals", 2)]
        public virtual BigInteger NumOfDecimals { get; set; }
    }

    public partial class SetMinBuybackAmountFunction : SetMinBuybackAmountFunctionBase { }

    [Function("setMinBuybackAmount")]
    public class SetMinBuybackAmountFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "minAmount", 1)]
        public virtual BigInteger MinAmount { get; set; }
        [Parameter("uint256", "numOfDecimals", 2)]
        public virtual BigInteger NumOfDecimals { get; set; }
    }

    public partial class SetNumTokensSellToAddToLiquidityFunction : SetNumTokensSellToAddToLiquidityFunctionBase { }

    [Function("setNumTokensSellToAddToLiquidity")]
    public class SetNumTokensSellToAddToLiquidityFunctionBase : FunctionMessage
    {
        [Parameter("uint96", "minimumTokensBeforeSwap", 1)]
        public virtual BigInteger MinimumTokensBeforeSwap { get; set; }
    }

    public partial class SetNumberOfBlocksForBuybackFunction : SetNumberOfBlocksForBuybackFunctionBase { }

    [Function("setNumberOfBlocksForBuyback")]
    public class SetNumberOfBlocksForBuybackFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "value", 1)]
        public virtual BigInteger Value { get; set; }
    }

    public partial class SetOffchainBalanceExcludedFunction : SetOffchainBalanceExcludedFunctionBase { }

    [Function("setOffchainBalanceExcluded")]
    public class SetOffchainBalanceExcludedFunctionBase : FunctionMessage
    {
        [Parameter("bool", "_enabled", 1)]
        public virtual bool Enabled { get; set; }
    }

    public partial class SetRouterAddressFunction : SetRouterAddressFunctionBase { }

    [Function("setRouterAddress")]
    public class SetRouterAddressFunctionBase : FunctionMessage
    {
        [Parameter("address", "newAddress", 1)]
        public virtual string NewAddress { get; set; }
    }

    public partial class SetStakingAddressFunction : SetStakingAddressFunctionBase { }

    [Function("setStakingAddress")]
    public class SetStakingAddressFunctionBase : FunctionMessage
    {
        [Parameter("address", "contractAddress", 1)]
        public virtual string ContractAddress { get; set; }
    }

    public partial class SetSwapEnabledFunction : SetSwapEnabledFunctionBase { }

    [Function("setSwapEnabled")]
    public class SetSwapEnabledFunctionBase : FunctionMessage
    {
        [Parameter("bool", "_enabled", 1)]
        public virtual bool Enabled { get; set; }
    }

    public partial class SetTransactionCapFunction : SetTransactionCapFunctionBase { }

    [Function("setTransactionCap")]
    public class SetTransactionCapFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "txAmount", 1)]
        public virtual BigInteger TxAmount { get; set; }
    }

    public partial class StakeTokenFunction : StakeTokenFunctionBase { }

    [Function("stakeToken", "address")]
    public class StakeTokenFunctionBase : FunctionMessage
    {

    }

    public partial class SwapEnabledFunction : SwapEnabledFunctionBase { }

    [Function("swapEnabled", "bool")]
    public class SwapEnabledFunctionBase : FunctionMessage
    {

    }

    public partial class SymbolFunction : SymbolFunctionBase { }

    [Function("symbol", "string")]
    public class SymbolFunctionBase : FunctionMessage
    {

    }

    public partial class TotalBuyVolumeFunction : TotalBuyVolumeFunctionBase { }

    [Function("totalBuyVolume", "uint256")]
    public class TotalBuyVolumeFunctionBase : FunctionMessage
    {

    }

    public partial class TotalSellVolumeFunction : TotalSellVolumeFunctionBase { }

    [Function("totalSellVolume", "uint256")]
    public class TotalSellVolumeFunctionBase : FunctionMessage
    {

    }

    public partial class TotalSupplyFunction : TotalSupplyFunctionBase { }

    [Function("totalSupply", "uint256")]
    public class TotalSupplyFunctionBase : FunctionMessage
    {

    }

    public partial class TransactionCapFunction : TransactionCapFunctionBase { }

    [Function("transactionCap", "uint256")]
    public class TransactionCapFunctionBase : FunctionMessage
    {

    }

    public partial class TransferFunction : TransferFunctionBase { }

    [Function("transfer", "bool")]
    public class TransferFunctionBase : FunctionMessage
    {
        [Parameter("address", "recipient", 1)]
        public virtual string Recipient { get; set; }
        [Parameter("uint256", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class TransferBalanceFunction : TransferBalanceFunctionBase { }

    [Function("transferBalance")]
    public class TransferBalanceFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "amount", 1)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class TransferExternalTokensFunction : TransferExternalTokensFunctionBase { }

    [Function("transferExternalTokens")]
    public class TransferExternalTokensFunctionBase : FunctionMessage
    {
        [Parameter("address", "tokenAddress", 1)]
        public virtual string TokenAddress { get; set; }
        [Parameter("address", "to", 2)]
        public virtual string To { get; set; }
        [Parameter("uint256", "amount", 3)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class TransferFromFunction : TransferFromFunctionBase { }

    [Function("transferFrom", "bool")]
    public class TransferFromFunctionBase : FunctionMessage
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
        [Parameter("address", "recipient", 2)]
        public virtual string Recipient { get; set; }
        [Parameter("uint256", "amount", 3)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class TransferFromWithPermitFunction : TransferFromWithPermitFunctionBase { }

    [Function("transferFromWithPermit", "bool")]
    public class TransferFromWithPermitFunctionBase : FunctionMessage
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
        [Parameter("address", "recipient", 2)]
        public virtual string Recipient { get; set; }
        [Parameter("uint256", "amount", 3)]
        public virtual BigInteger Amount { get; set; }
        [Parameter("uint256", "deadline", 4)]
        public virtual BigInteger Deadline { get; set; }
        [Parameter("uint8", "v", 5)]
        public virtual byte V { get; set; }
        [Parameter("bytes32", "r", 6)]
        public virtual byte[] R { get; set; }
        [Parameter("bytes32", "s", 7)]
        public virtual byte[] S { get; set; }
    }

    public partial class TransferOwnershipFunction : TransferOwnershipFunctionBase { }

    [Function("transferOwnership")]
    public class TransferOwnershipFunctionBase : FunctionMessage
    {
        [Parameter("address", "newOwner", 1)]
        public virtual string NewOwner { get; set; }
    }

    public partial class TransferStakeFunction : TransferStakeFunctionBase { }

    [Function("transferStake")]
    public class TransferStakeFunctionBase : FunctionMessage
    {
        [Parameter("address", "fromAddress", 1)]
        public virtual string FromAddress { get; set; }
        [Parameter("address", "toAddress", 2)]
        public virtual string ToAddress { get; set; }
        [Parameter("uint96", "amountToTransfer", 3)]
        public virtual BigInteger AmountToTransfer { get; set; }
    }

    public partial class UniswapV2PairFunction : UniswapV2PairFunctionBase { }

    [Function("uniswapV2Pair", "address")]
    public class UniswapV2PairFunctionBase : FunctionMessage
    {

    }

    public partial class UniswapV2RouterFunction : UniswapV2RouterFunctionBase { }

    [Function("uniswapV2Router", "address")]
    public class UniswapV2RouterFunctionBase : FunctionMessage
    {

    }

    public partial class UnlockTokensAndNftsFunction : UnlockTokensAndNftsFunctionBase { }

    [Function("unlockTokensAndNfts")]
    public class UnlockTokensAndNftsFunctionBase : FunctionMessage
    {
        [Parameter("address", "actualAccount", 1)]
        public virtual string ActualAccount { get; set; }
    }

    public partial class UpgradeCompleteFunction : UpgradeCompleteFunctionBase { }

    [Function("upgradeComplete")]
    public class UpgradeCompleteFunctionBase : FunctionMessage
    {

    }

    public partial class WithdrawFunction : WithdrawFunctionBase { }

    [Function("withdraw")]
    public class WithdrawFunctionBase : FunctionMessage
    {
        [Parameter("uint256", "nftId", 1)]
        public virtual BigInteger NftId { get; set; }
        [Parameter("uint96", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
        [Parameter("bool", "overrideNotClaimed", 3)]
        public virtual bool OverrideNotClaimed { get; set; }
    }

    public partial class ApprovalEventDTO : ApprovalEventDTOBase { }

    [Event("Approval")]
    public class ApprovalEventDTOBase : IEventDTO
    {
        [Parameter("address", "owner", 1, true )]
        public virtual string Owner { get; set; }
        [Parameter("address", "spender", 2, true )]
        public virtual string Spender { get; set; }
        [Parameter("uint256", "value", 3, false )]
        public virtual BigInteger Value { get; set; }
    }

    public partial class AutoBurnEventDTO : AutoBurnEventDTOBase { }

    [Event("AutoBurn")]
    public class AutoBurnEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "amount", 1, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class AutoBurnEnabledEventDTO : AutoBurnEnabledEventDTOBase { }

    [Event("AutoBurnEnabled")]
    public class AutoBurnEnabledEventDTOBase : IEventDTO
    {
        [Parameter("bool", "enabled", 1, false )]
        public virtual bool Enabled { get; set; }
    }

    public partial class BridgeVaultAddressUpdatedEventDTO : BridgeVaultAddressUpdatedEventDTOBase { }

    [Event("BridgeVaultAddressUpdated")]
    public class BridgeVaultAddressUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
    }

    public partial class BurnAddressUpdatedEventDTO : BurnAddressUpdatedEventDTOBase { }

    [Event("BurnAddressUpdated")]
    public class BurnAddressUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "deadAddress", 1, true )]
        public virtual string DeadAddress { get; set; }
    }



    public partial class BusinessDevelopmentAddressUpdatedEventDTO : BusinessDevelopmentAddressUpdatedEventDTOBase { }

    [Event("BusinessDevelopmentAddressUpdated")]
    public class BusinessDevelopmentAddressUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "newAddress", 1, true )]
        public virtual string NewAddress { get; set; }
    }

    public partial class BusinessDevelopmentDivisorUpdatedEventDTO : BusinessDevelopmentDivisorUpdatedEventDTOBase { }

    [Event("BusinessDevelopmentDivisorUpdated")]
    public class BusinessDevelopmentDivisorUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }



    public partial class BuyBackEnabledUpdatedEventDTO : BuyBackEnabledUpdatedEventDTOBase { }

    [Event("BuyBackEnabledUpdated")]
    public class BuyBackEnabledUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("bool", "enabled", 1, false )]
        public virtual bool Enabled { get; set; }
    }

    public partial class BuyBackTriggerTokenLimitUpdatedEventDTO : BuyBackTriggerTokenLimitUpdatedEventDTOBase { }

    [Event("BuyBackTriggerTokenLimitUpdated")]
    public class BuyBackTriggerTokenLimitUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }



    public partial class BuybackBlocksUpdatedEventDTO : BuybackBlocksUpdatedEventDTOBase { }

    [Event("BuybackBlocksUpdated")]
    public class BuybackBlocksUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class BuybackMinAvailabilityUpdatedEventDTO : BuybackMinAvailabilityUpdatedEventDTOBase { }

    [Event("BuybackMinAvailabilityUpdated")]
    public class BuybackMinAvailabilityUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class BuybackTokensWithETHEventDTO : BuybackTokensWithETHEventDTOBase { }

    [Event("BuybackTokensWithETH")]
    public class BuybackTokensWithETHEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "amountIn", 1, false )]
        public virtual BigInteger AmountIn { get; set; }
        [Parameter("uint256", "amountOut", 2, false )]
        public virtual BigInteger AmountOut { get; set; }
    }

    public partial class BuybackUpperLimitUpdatedEventDTO : BuybackUpperLimitUpdatedEventDTOBase { }

    [Event("BuybackUpperLimitUpdated")]
    public class BuybackUpperLimitUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class ControlAddedEventDTO : ControlAddedEventDTOBase { }

    [Event("ControlAdded")]
    public class ControlAddedEventDTOBase : IEventDTO
    {
        [Parameter("address", "controller", 1, true )]
        public virtual string Controller { get; set; }
        [Parameter("uint8", "role", 2, true )]
        public virtual byte Role { get; set; }
    }

    public partial class ControlRemovedEventDTO : ControlRemovedEventDTOBase { }

    [Event("ControlRemoved")]
    public class ControlRemovedEventDTOBase : IEventDTO
    {
        [Parameter("address", "controller", 1, true )]
        public virtual string Controller { get; set; }
        [Parameter("uint8", "role", 2, true )]
        public virtual byte Role { get; set; }
    }

    public partial class ConvertTokensForETHEventDTO : ConvertTokensForETHEventDTOBase { }

    [Event("ConvertTokensForETH")]
    public class ConvertTokensForETHEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "amountIn", 1, false )]
        public virtual BigInteger AmountIn { get; set; }
        [Parameter("uint256", "amountOut", 2, false )]
        public virtual BigInteger AmountOut { get; set; }
    }

    public partial class ExchangeHotWalletAddedEventDTO : ExchangeHotWalletAddedEventDTOBase { }

    [Event("ExchangeHotWalletAdded")]
    public class ExchangeHotWalletAddedEventDTOBase : IEventDTO
    {
        [Parameter("address", "exchangeHotWallet", 1, true )]
        public virtual string ExchangeHotWallet { get; set; }
    }

    public partial class ExchangeHotWalletRemovedEventDTO : ExchangeHotWalletRemovedEventDTOBase { }

    [Event("ExchangeHotWalletRemoved")]
    public class ExchangeHotWalletRemovedEventDTOBase : IEventDTO
    {
        [Parameter("address", "exchangeHotWallet", 1, true )]
        public virtual string ExchangeHotWallet { get; set; }
    }

    public partial class ExcludeFromFeeUpdatedEventDTO : ExcludeFromFeeUpdatedEventDTOBase { }

    [Event("ExcludeFromFeeUpdated")]
    public class ExcludeFromFeeUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, false )]
        public virtual string Account { get; set; }
    }

    public partial class IncludeInFeeUpdatedEventDTO : IncludeInFeeUpdatedEventDTOBase { }

    [Event("IncludeInFeeUpdated")]
    public class IncludeInFeeUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, false )]
        public virtual string Account { get; set; }
    }

    public partial class LiquidityFeeUpdatedEventDTO : LiquidityFeeUpdatedEventDTOBase { }

    [Event("LiquidityFeeUpdated")]
    public class LiquidityFeeUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class LiquidityLockedEventDTO : LiquidityLockedEventDTOBase { }

    [Event("LiquidityLocked")]
    public class LiquidityLockedEventDTOBase : IEventDTO
    {
        [Parameter("bool", "isLocked", 1, false )]
        public virtual bool IsLocked { get; set; }
    }

    public partial class LockWalletEventDTO : LockWalletEventDTOBase { }

    [Event("LockWallet")]
    public class LockWalletEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("address", "altAccount", 2, false )]
        public virtual string AltAccount { get; set; }
        [Parameter("uint256", "length", 3, false )]
        public virtual BigInteger Length { get; set; }
    }

    public partial class LockWalletExtendEventDTO : LockWalletExtendEventDTOBase { }

    [Event("LockWalletExtend")]
    public class LockWalletExtendEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("uint256", "length", 2, false )]
        public virtual BigInteger Length { get; set; }
    }

    public partial class MaxBuybackAmountUpdatedEventDTO : MaxBuybackAmountUpdatedEventDTOBase { }

    [Event("MaxBuybackAmountUpdated")]
    public class MaxBuybackAmountUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newvalue", 1, false )]
        public virtual BigInteger Newvalue { get; set; }
    }

    public partial class MinBuybackAmountUpdatedEventDTO : MinBuybackAmountUpdatedEventDTOBase { }

    [Event("MinBuybackAmountUpdated")]
    public class MinBuybackAmountUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newvalue", 1, false )]
        public virtual BigInteger Newvalue { get; set; }
    }

    public partial class MinStakeSizeUpdatedEventDTO : MinStakeSizeUpdatedEventDTOBase { }

    [Event("MinStakeSizeUpdated")]
    public class MinStakeSizeUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class MinTokensBeforeSwapUpdatedEventDTO : MinTokensBeforeSwapUpdatedEventDTOBase { }

    [Event("MinTokensBeforeSwapUpdated")]
    public class MinTokensBeforeSwapUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class NftBridgedInEventDTO : NftBridgedInEventDTOBase { }

    [Event("NftBridgedIn")]
    public class NftBridgedInEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
        [Parameter("address", "operator", 2, true )]
        public virtual string Operator { get; set; }
        [Parameter("address", "to", 3, true )]
        public virtual string To { get; set; }
        [Parameter("uint256", "id", 4, false )]
        public virtual BigInteger Id { get; set; }
        [Parameter("uint256", "value", 5, false )]
        public virtual BigInteger Value { get; set; }
    }

    public partial class NftBridgedOutEventDTO : NftBridgedOutEventDTOBase { }

    [Event("NftBridgedOut")]
    public class NftBridgedOutEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
        [Parameter("address", "operator", 2, true )]
        public virtual string Operator { get; set; }
        [Parameter("address", "from", 3, true )]
        public virtual string From { get; set; }
        [Parameter("uint256", "id", 4, false )]
        public virtual BigInteger Id { get; set; }
        [Parameter("uint256", "value", 5, false )]
        public virtual BigInteger Value { get; set; }
    }

    public partial class OffChainBalanceExcludedEventDTO : OffChainBalanceExcludedEventDTOBase { }

    [Event("OffChainBalanceExcluded")]
    public class OffChainBalanceExcludedEventDTOBase : IEventDTO
    {
        [Parameter("bool", "enable", 1, false )]
        public virtual bool Enable { get; set; }
    }

    public partial class OwnershipTransferredEventDTO : OwnershipTransferredEventDTOBase { }

    [Event("OwnershipTransferred")]
    public class OwnershipTransferredEventDTOBase : IEventDTO
    {
        [Parameter("address", "previousOwner", 1, true )]
        public virtual string PreviousOwner { get; set; }
        [Parameter("address", "newOwner", 2, true )]
        public virtual string NewOwner { get; set; }
    }

    public partial class RevokeAllApprovalsEventDTO : RevokeAllApprovalsEventDTOBase { }

    [Event("RevokeAllApprovals")]
    public class RevokeAllApprovalsEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("bool", "tokens", 2, false )]
        public virtual bool Tokens { get; set; }
        [Parameter("bool", "nfts", 3, false )]
        public virtual bool Nfts { get; set; }
    }

    public partial class RewardStakersEventDTO : RewardStakersEventDTOBase { }

    [Event("RewardStakers")]
    public class RewardStakersEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "amount", 1, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class RiseBridgedInEventDTO : RiseBridgedInEventDTOBase { }

    [Event("RiseBridgedIn")]
    public class RiseBridgedInEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
        [Parameter("address", "to", 2, true )]
        public virtual string To { get; set; }
        [Parameter("uint256", "amount", 3, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class RiseBridgedOutEventDTO : RiseBridgedOutEventDTOBase { }

    [Event("RiseBridgedOut")]
    public class RiseBridgedOutEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
        [Parameter("address", "from", 2, true )]
        public virtual string From { get; set; }
        [Parameter("uint256", "amount", 3, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class RouterAddressUpdatedEventDTO : RouterAddressUpdatedEventDTOBase { }

    [Event("RouterAddressUpdated")]
    public class RouterAddressUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "newAddress", 1, true )]
        public virtual string NewAddress { get; set; }
    }

    public partial class SetApprovalAutoTimeoutEventDTO : SetApprovalAutoTimeoutEventDTOBase { }

    [Event("SetApprovalAutoTimeout")]
    public class SetApprovalAutoTimeoutEventDTOBase : IEventDTO
    {
        [Parameter("address", "account", 1, true )]
        public virtual string Account { get; set; }
        [Parameter("uint16", "tokensHrs", 2, false )]
        public virtual ushort TokensHrs { get; set; }
        [Parameter("uint16", "nftsHrs", 3, false )]
        public virtual ushort NftsHrs { get; set; }
    }

    public partial class StakingAddressUpdatedEventDTO : StakingAddressUpdatedEventDTOBase { }

    [Event("StakingAddressUpdated")]
    public class StakingAddressUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("address", "contractAddress", 1, true )]
        public virtual string ContractAddress { get; set; }
    }

    public partial class StakingDecreasedEventDTO : StakingDecreasedEventDTOBase { }

    [Event("StakingDecreased")]
    public class StakingDecreasedEventDTOBase : IEventDTO
    {
        [Parameter("address", "from", 1, true )]
        public virtual string From { get; set; }
        [Parameter("uint256", "amount", 2, false )]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class StakingIncreasedEventDTO : StakingIncreasedEventDTOBase { }

    [Event("StakingIncreased")]
    public class StakingIncreasedEventDTOBase : IEventDTO
    {
        [Parameter("address", "from", 1, true )]
        public virtual string From { get; set; }
        [Parameter("uint256", "amount", 2, false )]
        public virtual BigInteger Amount { get; set; }
        [Parameter("uint8", "numberOfmonths", 3, false )]
        public virtual byte NumberOfmonths { get; set; }
    }

    public partial class SwapEnabledUpdatedEventDTO : SwapEnabledUpdatedEventDTOBase { }

    [Event("SwapEnabledUpdated")]
    public class SwapEnabledUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("bool", "enabled", 1, false )]
        public virtual bool Enabled { get; set; }
    }



    public partial class TransactionCapUpdatedEventDTO : TransactionCapUpdatedEventDTOBase { }

    [Event("TransactionCapUpdated")]
    public class TransactionCapUpdatedEventDTOBase : IEventDTO
    {
        [Parameter("uint256", "newValue", 1, false )]
        public virtual BigInteger NewValue { get; set; }
    }

    public partial class TransferEventDTO : TransferEventDTOBase { }

    [Event("Transfer")]
    public class TransferEventDTOBase : IEventDTO
    {
        [Parameter("address", "from", 1, true )]
        public virtual string From { get; set; }
        [Parameter("address", "to", 2, true )]
        public virtual string To { get; set; }
        [Parameter("uint256", "value", 3, false )]
        public virtual BigInteger Value { get; set; }
    }

    public partial class TransferExternalTokensEventDTO : TransferExternalTokensEventDTOBase { }

    [Event("TransferExternalTokens")]
    public class TransferExternalTokensEventDTOBase : IEventDTO
    {
        [Parameter("address", "tokenAddress", 1, true )]
        public virtual string TokenAddress { get; set; }
        [Parameter("address", "to", 2, true )]
        public virtual string To { get; set; }
        [Parameter("uint256", "count", 3, false )]
        public virtual BigInteger Count { get; set; }
    }

















































    public partial class DomainSeparatorOutputDTO : DomainSeparatorOutputDTOBase { }

    [FunctionOutput]
    public class DomainSeparatorOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class DomainTypehashOutputDTO : DomainTypehashOutputDTOBase { }

    [FunctionOutput]
    public class DomainTypehashOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class PermitTypehashOutputDTO : PermitTypehashOutputDTOBase { }

    [FunctionOutput]
    public class PermitTypehashOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }





    public partial class AllowanceOutputDTO : AllowanceOutputDTOBase { }

    [FunctionOutput]
    public class AllowanceOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class AllowancesOutputDTO : AllowancesOutputDTOBase { }

    [FunctionOutput]
    public class AllowancesOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint128", "tokenAmount", 1)]
        public virtual BigInteger TokenAmount { get; set; }
        [Parameter("uint32", "nftCheck", 2)]
        public virtual uint NftCheck { get; set; }
        [Parameter("uint32", "tokenCheck", 3)]
        public virtual uint TokenCheck { get; set; }
        [Parameter("uint48", "timestamp", 4)]
        public virtual ulong Timestamp { get; set; }
        [Parameter("uint8", "nftApproval", 5)]
        public virtual byte NftApproval { get; set; }
        [Parameter("uint8", "tokenApproval", 6)]
        public virtual byte TokenApproval { get; set; }
    }

    public partial class ApprovalsOutputDTO : ApprovalsOutputDTOBase { }

    [FunctionOutput]
    public class ApprovalsOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("tuple", "", 1)]
        public virtual ApprovalChecks ReturnValue1 { get; set; }
    }





    public partial class AutoBurnOutputDTO : AutoBurnOutputDTOBase { }

    [FunctionOutput]
    public class AutoBurnOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class BalanceOfOutputDTO : BalanceOfOutputDTOBase { }

    [FunctionOutput]
    public class BalanceOfOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }





    public partial class BridgeVaultLockedBalanceOutputDTO : BridgeVaultLockedBalanceOutputDTOBase { }

    [FunctionOutput]
    public class BridgeVaultLockedBalanceOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class BurnAddressOutputDTO : BurnAddressOutputDTOBase { }

    [FunctionOutput]
    public class BurnAddressOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class BusinessDevelopmentAddressOutputDTO : BusinessDevelopmentAddressOutputDTOBase { }

    [FunctionOutput]
    public class BusinessDevelopmentAddressOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class BusinessDevelopmentDivisorOutputDTO : BusinessDevelopmentDivisorOutputDTOBase { }

    [FunctionOutput]
    public class BusinessDevelopmentDivisorOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class BuyBackEnabledOutputDTO : BuyBackEnabledOutputDTOBase { }

    [FunctionOutput]
    public class BuyBackEnabledOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }



    public partial class DecimalsOutputDTO : DecimalsOutputDTOBase { }

    [FunctionOutput]
    public class DecimalsOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint8", "", 1)]
        public virtual byte ReturnValue1 { get; set; }
    }





    public partial class EverBridgeVaultOutputDTO : EverBridgeVaultOutputDTOBase { }

    [FunctionOutput]
    public class EverBridgeVaultOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }





    public partial class GetAmountLockedOutputDTO : GetAmountLockedOutputDTOBase { }

    [FunctionOutput]
    public class GetAmountLockedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class HasTokenStartedOutputDTO : HasTokenStartedOutputDTOBase { }

    [FunctionOutput]
    public class HasTokenStartedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class HoldersOutputDTO : HoldersOutputDTOBase { }

    [FunctionOutput]
    public class HoldersOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }





    public partial class IsApprovedForAllOutputDTO : IsApprovedForAllOutputDTOBase { }

    [FunctionOutput]
    public class IsApprovedForAllOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class IsExchangeHotWalletOutputDTO : IsExchangeHotWalletOutputDTOBase { }

    [FunctionOutput]
    public class IsExchangeHotWalletOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class IsExcludedFromFeeOutputDTO : IsExcludedFromFeeOutputDTOBase { }

    [FunctionOutput]
    public class IsExcludedFromFeeOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class IsWalletLockedOutputDTO : IsWalletLockedOutputDTOBase { }

    [FunctionOutput]
    public class IsWalletLockedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }



    public partial class LiquidityFeeOutputDTO : LiquidityFeeOutputDTOBase { }

    [FunctionOutput]
    public class LiquidityFeeOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint96", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class LiquidityLockedOutputDTO : LiquidityLockedOutputDTOBase { }

    [FunctionOutput]
    public class LiquidityLockedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }







    public partial class NameOutputDTO : NameOutputDTOBase { }

    [FunctionOutput]
    public class NameOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("string", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class NoncesOutputDTO : NoncesOutputDTOBase { }

    [FunctionOutput]
    public class NoncesOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class OffchainBalanceExcludedOutputDTO : OffchainBalanceExcludedOutputDTOBase { }

    [FunctionOutput]
    public class OffchainBalanceExcludedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class OwnerOutputDTO : OwnerOutputDTOBase { }

    [FunctionOutput]
    public class OwnerOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }









    public partial class RolesOutputDTO : RolesOutputDTOBase { }

    [FunctionOutput]
    public class RolesOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }















































    public partial class StakeTokenOutputDTO : StakeTokenOutputDTOBase { }

    [FunctionOutput]
    public class StakeTokenOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class SwapEnabledOutputDTO : SwapEnabledOutputDTOBase { }

    [FunctionOutput]
    public class SwapEnabledOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class SymbolOutputDTO : SymbolOutputDTOBase { }

    [FunctionOutput]
    public class SymbolOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("string", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class TotalBuyVolumeOutputDTO : TotalBuyVolumeOutputDTOBase { }

    [FunctionOutput]
    public class TotalBuyVolumeOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class TotalSellVolumeOutputDTO : TotalSellVolumeOutputDTOBase { }

    [FunctionOutput]
    public class TotalSellVolumeOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class TotalSupplyOutputDTO : TotalSupplyOutputDTOBase { }

    [FunctionOutput]
    public class TotalSupplyOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class TransactionCapOutputDTO : TransactionCapOutputDTOBase { }

    [FunctionOutput]
    public class TransactionCapOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }















    public partial class UniswapV2PairOutputDTO : UniswapV2PairOutputDTOBase { }

    [FunctionOutput]
    public class UniswapV2PairOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class UniswapV2RouterOutputDTO : UniswapV2RouterOutputDTOBase { }

    [FunctionOutput]
    public class UniswapV2RouterOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }






}
