diff --git a/orchestrator/builder/.env b/orchestrator/builder/.env index 0daefd5..ad506e7 100755 --- a/orchestrator/builder/.env +++ b/orchestrator/builder/.env @@ -1,5 +1,5 @@ BEE_VERSION="1.11.1" -BLOCKCHAIN_VERSION="2.0.1" +BLOCKCHAIN_VERSION="2.1.0" BEE_ENV_PREFIX="fdp-play" BEE_IMAGE_PREFIX="fairdatasociety" COMMIT_VERSION_TAG="false" diff --git a/orchestrator/contracts/Redistribution.bytecode b/orchestrator/contracts/Redistribution.bytecode index f1be9e0..6d1bc2b 100644 --- a/orchestrator/contracts/Redistribution.bytecode +++ b/orchestrator/contracts/Redistribution.bytecode @@ -1 +1 @@ -0x60a06040526008805461ffff60c01b191661020160c01b1790553480156200002657600080fd5b5060405162004a7338038062004a738339810160408190526200004991620001ad565b60018054600380546001600160a01b03199081166001600160a01b03898116919091179092556001600160a81b03199092166101008783160217909255600280549091169184169190911790557f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a608052620000c7600082620000e0565b608051620000d69033620000e0565b505050506200020a565b620000ec8282620000f0565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000ec576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200014c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b0381168114620001a857600080fd5b919050565b60008060008060808587031215620001c457600080fd5b620001cf8562000190565b9350620001df6020860162000190565b9250620001ef6040860162000190565b9150620001ff6060860162000190565b905092959194509250565b6080516148466200022d60003960008181610fe90152611e7f01526148466000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806382b39b1b11610145578063b78a52a7116100bd578063d1e8b63d1161008c578063dfbf53ae11610071578063dfbf53ae1461058a578063f7b188a5146105ba578063fb00f2f3146105c257600080fd5b8063d1e8b63d1461056f578063d547741f1461057757600080fd5b8063b78a52a71461051c578063c1d810d51461052f578063c46b402914610542578063ce9877451461055c57600080fd5b80638d8b64281161011457806391d14854116100f957806391d14854146104ca578063a217fddf14610501578063aeace9dc1461050957600080fd5b80638d8b6428146104af57806391276bec146104b757600080fd5b806382b39b1b1461044757806383220626146104975780638456cb591461049f5780638a19c8bc146104a757600080fd5b806362fd29ae116101d857806369da9114116101a757806372286cba1161018c57806372286cba146103cb57806377c75d10146104195780637fe019c61461042c57600080fd5b806369da91141461039d5780636f94aaf2146103b057600080fd5b806362fd29ae1461034d57806363f5cf7c1461035557806364c34a851461036857806369bfac011461037057600080fd5b80632f2ff15d1161022f57806336568abe1161021457806336568abe1461031c5780635c975abb1461032f5780635d4844ea1461033a57600080fd5b80632f2ff15d146102ff5780632f3906da1461031457600080fd5b806301ffc9a7146102615780631835009614610289578063248a9ca3146102b95780632a4e6249146102ea575b600080fd5b61027461026f366004613fc1565b6105d5565b60405190151581526020015b60405180910390f35b6001546102a19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610280565b6102dc6102c7366004613feb565b60009081526020819052604090206001015490565b604051908152602001610280565b6102f261063e565b6040516102809190614004565b61031261030d3660046140a8565b61074b565b005b610274610775565b61031261032a3660046140a8565b6107bf565b60015460ff16610274565b6003546102a1906001600160a01b031681565b6102dc610850565b6103126103633660046140f1565b61091c565b6102dc610be5565b6008546103849067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610280565b6002546102a1906001600160a01b031681565b60085461038490600160801b900467ffffffffffffffff1681565b6103de6103d9366004613feb565b610cc5565b604080519687526001600160a01b039095166020870152921515938501939093526060840152608083019190915260a082015260c001610280565b610274610427366004613feb565b610d1c565b60085461038490600160401b900467ffffffffffffffff1681565b61045a610455366004613feb565b610fcc565b604080519687526001600160a01b03909516602087015260ff909316938501939093526060840152608083019190915260a082015260c001610280565b6102dc610fdc565b610312610fe7565b61038461104a565b610274611057565b6103126104c5366004614196565b611081565b6102746104d83660046140a8565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102dc600081565b6103126105173660046141da565b611607565b61027461052a366004614208565b6116d8565b61031261053d36600461422d565b611867565b61054a611d3f565b60405160ff9091168152602001610280565b6102dc61056a36600461422d565b611dc4565b610274611e33565b6103126105853660046140a8565b611e58565b600954600a54600b54600c54600d5461045a94936001600160a01b03811693600160a01b90910460ff1692909186565b610312611e7d565b6102746105d036600461426a565b611ede565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061063857507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060610648611057565b61066557604051633788c6c160e11b815260040160405180910390fd5b600061066f61104a565b60085490915067ffffffffffffffff808316600160401b90920416146106a857604051636fbabc7760e01b815260040160405180910390fd5b6005805480602002602001604051908101604052809291908181526020016000905b828210156107415760008481526020908190206040805160c08101825260058602909201805483526001808201546001600160a01b03811685870152600160a01b900460ff169284019290925260028101546060840152600381015460808401526004015460a083015290835290920191016106ca565b5050505091505090565b60008281526020819052604090206001015461076681611f1a565b6107708383611f27565b505050565b6000806107836098436142b9565b9050610791600460986142e3565b81101580156107aa57506107a7600260986142e3565b81105b156107b757600191505090565b600091505090565b6001600160a01b03811633146108425760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b61084c8282611fc5565b5050565b60008061085b61104a565b6108669060016142f7565b6007546008549192509061088c90600160401b900467ffffffffffffffff1660016142f7565b67ffffffffffffffff168267ffffffffffffffff161115610638576008546000906001906108cb90600160401b900467ffffffffffffffff168561431f565b6108d5919061431f565b67ffffffffffffffff16905081816040516020016108fd929190918252602082015260400190565b6040516020818303038152906040528051906020012091505092915050565b610924612044565b61092c612097565b6040805160c0810182526009548152600a546001600160a01b0381166020830152600160a01b900460ff1691810191909152600b546060820152600c546080820152600d5460a0820152600654600754600091829161098c600f826142b9565b9350610999600e826142b9565b92508383106109b057826109ac81614340565b9350505b6109c38660200135838760400151611ede565b6109e357604051633b5f43a360e01b815260036004820152602401610839565b6109ee86601e61266c565b6109f78661297e565b610a0086612d7e565b610a138860200135838760400151611ede565b610a3357604051633b5f43a360e01b815260026004820152602401610839565b610a4788610a42866002614359565b61266c565b610a508861297e565b610a5988612d7e565b610a6c8760200135838760400151611ede565b610a8c57604051633b5f43a360e01b815260016004820152602401610839565b610a9b87610a42856002614359565b610aa48761297e565b610aad87612d7e565b610b238484610abc8b80614370565b6000818110610acd57610acd6143c1565b60200291909101359050610ae18b80614370565b6000818110610af257610af26143c1565b60200291909101359050610b068b80614370565b6000818110610b1757610b176143c1565b90506020020135613012565b7f788e77979e6e6a8a6a5d2c19c58b1ff9671298f54c85ac6f6aa30379aed5861a85604051610b5291906143d7565b60405180910390a160015460208601516040517f51cff8d90000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416906351cff8d990602401600060405180830381600087803b158015610bc357600080fd5b505af1158015610bd7573d6000803e3d6000fd5b505050505050505050505050565b6000610bef611e33565b80610c2d5750600854600160401b900467ffffffffffffffff16610c1161104a565b67ffffffffffffffff16118015610c2d5750610c2b611057565b155b15610c3f57610c3a610fdc565b905090565b610c47611057565b15610c5457610c3a610850565b610c5c610775565b8015610c8b5750600854600160401b900467ffffffffffffffff16610c7f61104a565b67ffffffffffffffff16145b15610cc2576040517f36b7884b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b60048181548110610cd557600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294506001600160a01b03821693600160a01b90920460ff169290919086565b6000610d26611057565b610d4357604051633788c6c160e11b815260040160405180910390fd5b6000610d4d61104a565b60085490915067ffffffffffffffff808316600160401b9092041614610d8657604051636fbabc7760e01b815260040160405180910390fd5b60085467ffffffffffffffff600160801b909104811690821611610dbd57604051630c8d9eab60e31b815260040160405180910390fd5b600080600080600080600080610dd16130a8565b90506000610ddd613162565b600454919650945060005b81811015610fb85760048181548110610e0357610e036143c1565b906000526020600020906005020160040154945060048181548110610e2a57610e2a6143c1565b906000526020600020906005020160010160149054906101000a900460ff168015610e78575060058581548110610e6357610e636143c1565b90600052602060002090600502016004015487145b8015610eb6575060058581548110610e9257610e926143c1565b600091825260209091206001600590920201015460ff878116600160a01b90920416145b15610fb05760058581548110610ece57610ece6143c1565b9060005260206000209060050201600301548b610eeb9190614426565b9a508383604051602001610f0092919061445d565b60408051601f19818403018152919052805160209091012098506fffffffffffffffffffffffffffffffff808a169850610f3b906001614426565b60058681548110610f4e57610f4e6143c1565b906000526020600020906005020160030154610f6a9190614359565b610f748c8a614359565b1015610fa25760058581548110610f8d57610f8d6143c1565b90600052602060002090600502016000015499505b82610fac81614340565b9350505b600101610de8565b505050959099149998505050505050505050565b60058181548110610cd557600080fd5b60008061086661104a565b7f000000000000000000000000000000000000000000000000000000000000000060009081526020818152604080832033845290915290205460ff1661104057604051631d77d47760e21b815260040160405180910390fd5b61104861331b565b565b6000610c3a6098436142e3565b6000611065600260986142e3565b6110706098436142b9565b1061107b5750600190565b50600090565b611089612044565b600061109361104a565b6003546040516348962b9360e01b8152600481018690529192506000916001600160a01b03909116906348962b9390602401602060405180830381865afa1580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611106919061447f565b9050611110611e33565b611146576040517fdc816a8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001611154600460986142e3565b61115e9190614498565b6111696098436142b9565b036111a0576040517f5baef6b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8267ffffffffffffffff168267ffffffffffffffff1611156111ee576040517f50ff7c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8267ffffffffffffffff168267ffffffffffffffff16101561123c576040517f7a0c0fd600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67016345785d8a000081101561126557604051638ecf3d0360e01b815260040160405180910390fd5b6003546040517fa0d22b210000000000000000000000000000000000000000000000000000000081526004810186905233916001600160a01b03169063a0d22b2190602401602060405180830381865afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906144ab565b6001600160a01b03161461132b576040517fb78fd5c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133760986002614359565b6113419043614498565b6003546040516376f2098160e11b8152600481018790526001600160a01b039091169063ede4130290602401602060405180830381865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae919061447f565b106113cc57604051630a0744c560e01b815260040160405180910390fd5b60085467ffffffffffffffff83811691161461140c576113ee60046000613f58565b6008805467ffffffffffffffff191667ffffffffffffffff84161790555b60045460005b8181101561147f57856004828154811061142e5761142e6143c1565b90600052602060002090600502016000015403611477576040517ffc507a3100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611412565b506040805160c081018252868152336020808301918252600083850181815260608501888152608086018d815260a0870184815260048054600181018255955296517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b60059095029485015594517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c8401805493516001600160a01b0390921674ffffffffffffffffffffffffffffffffffffffffff1990941693909317600160a01b9115159190910217909155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d82015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e83015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f90910155815167ffffffffffffffff871681529081018790527f68e0867601a98978930107aee7f425665e61edd70ca594c68ca5da9e81f84c29910160405180910390a1505050505050565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661166f576040517f7bfa4b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b60ff948516027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1617600160c81b9290931691909102919091179055565b60006116e2610775565b15611719576040517fe2586bcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61172560986002614359565b61172f9043614498565b6003546040516376f2098160e11b8152600481018690526001600160a01b039091169063ede4130290602401602060405180830381865afa158015611778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179c919061447f565b106117ba57604051630a0744c560e01b815260040160405180910390fd5b6003546040516348962b9360e01b81526004810185905267016345785d8a0000916001600160a01b0316906348962b9390602401602060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f919061447f565b101561184e57604051638ecf3d0360e01b815260040160405180910390fd5b6118608361185a610be5565b84611ede565b9392505050565b61186f612044565b600061187961104a565b9050611883611d3f565b60ff168460ff1610156118c2576040517f83d9b7bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118ca610775565b611900576040517fd1088db600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085467ffffffffffffffff828116911614611948576040517f842a9e0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085467ffffffffffffffff828116600160401b9092041614611a305761196d610be5565b60065561197c60056000613f58565b600880547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b67ffffffffffffffff8416908102919091179091556006546040805192835260208301919091527ff0ae472da9c8da86bda4991a549c03a3cb328b5f360ea11a5b8814f32bb85176910160405180910390a1611a30600754604080516020810192909252449082015260600160408051601f198184030181529190528051602090910120600755565b6000611a3e86868686611dc4565b90506000611a4c878361336f565b9050600060048281548110611a6357611a636143c1565b60009182526020918290206040805160c081018252600593909302909101805480845260018201546001600160a01b03811695850195909552600160a01b90940460ff1615159183019190915260028101546060830152600381015460808301526004015460a0820152600654909250611ade919089611ede565b611b1a576006546040517f14ebbbe400000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b806040015115611b56576040517fa89ac15100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160048381548110611b6b57611b6b6143c1565b906000526020600020906005020160010160146101000a81548160ff02191690831515021790555060058054905060048381548110611bac57611bac6143c1565b90600052602060002090600502016004018190555060056040518060c001604052808360000151815260200183602001516001600160a01b031681526020018960ff16815260200183606001518152602001896002611c0b91906145ac565b8460600151611c1a9190614359565b815260209081018990528254600181810185556000948552938290208351600590920201908155908201519281018054604084015160ff16600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199091166001600160a01b0390951694909417939093179092556060808201516002808501919091556080830151600385015560a0909201516004909301929092558251918301517f13fc17fd71632266fe82092de6dd91a06b4fa68d8dc950492e5421cbed55a6a5928792909190611ce8908c906145ac565b8560600151611cf79190614359565b6040805167ffffffffffffffff909516855260208501939093529183015260608201526080810188905260ff891660a082015260c00160405180910390a15050505050505050565b6008546000908190611d649067ffffffffffffffff600160801b82048116911661431f565b67ffffffffffffffff169050600060fe8211611d805781611d83565b60fe5b611d8e9060016145bb565b600a5490915060ff600160a01b9091048116908216811115611db957611db482826145d4565b611dbc565b60005b935050505090565b60408051602081018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b169181019190915260418101839052606181018290526000906081015b6040516020818303038152906040528051906020012090505b949350505050565b6000611e41600460986142e3565b611e4c6098436142b9565b101561107b5750600190565b600082815260208190526040902060010154611e7381611f1a565b6107708383611fc5565b7f000000000000000000000000000000000000000000000000000000000000000060009081526020818152604080832033845290915290205460ff16611ed657604051631d77d47760e21b815260040160405180910390fd5b61104861341a565b60008160ff16600003611ef357506001611860565b611f0260ff83166101006145ed565b611f0d906002614608565b8484181090509392505050565b611f248133613453565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661084c576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055611f813390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff161561084c576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60015460ff16156110485760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610839565b60006120a161104a565b90506120ab611057565b6120c857604051633788c6c160e11b815260040160405180910390fd5b60085467ffffffffffffffff828116600160401b90920416146120fe57604051636fbabc7760e01b815260040160405180910390fd5b60085467ffffffffffffffff600160801b90910481169082161161213557604051630c8d9eab60e31b815260040160405180910390fd5b600454604051818152600091829182918291829182917f6752c5e71c95fb93bc7137adeb115a33fa4e54e2683e33d3f90c2bb1c4b6c2a59060200160405180910390a16005546040519081527f4c03de6a759749c0c9387b7014634dc5c6af610e1366023d90751c783a998f8d9060200160405180910390a16121b6613162565b6040805183815260ff831660208201529295509093507f34e8eda4cd857cd2865becf58a47748f31415f4a382cbb2cc0c64b9a27c717be910160405180910390a160006122016130a8565b905060005b828110156125a657600060048281548110612223576122236143c1565b600091825260208083206040805160c08101825260059485029092018054835260018101546001600160a01b03811694840194909452600160a01b90930460ff16151590820152600282015460608201526003820154608082015260049091015460a082018190528254919450929190839081106122a3576122a36143c1565b60009182526020918290206040805160c0810182526005939093029091018054835260018101546001600160a01b03811694840194909452600160a01b90930460ff1682820152600283015460608301526003830154608083015260049092015460a082015290840151909150801561231f57508060a0015188145b80156123345750806040015160ff168760ff16145b15612429576080810151612348908d614426565b9b50848b60405160200161235d92919061445d565b60408051601f19818403018152919052805160209091012099506fffffffffffffffffffffffffffffffff808b169950612398906001614426565b81608001516123a79190614359565b6123b18d8b614359565b101561241b5780516009556020810151600a8054604084015160ff16600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199091166001600160a01b03909316929092179190911790556060810151600b556080810151600c5560a0810151600d555b8a61242581614340565b9b50505b8260400151801561245257508060a00151881415806124525750806040015160ff168760ff1614155b156124f35760035481516001600160a01b039091169063837fd16a906124798a60026145ac565b60085461249290609890600160c01b900460ff16614359565b61249c9190614359565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401600060405180830381600087803b1580156124da57600080fd5b505af11580156124ee573d6000803e3d6000fd5b505050505b82604001516125985760035483516001600160a01b039091169063837fd16a9061251e8a60026145ac565b60085461253790609890600160c81b900460ff16614359565b6125419190614359565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401600060405180830381600087803b15801561257f57600080fd5b505af1158015612593573d6000803e3d6000fd5b505050505b836001019350505050612206565b506002546040517fffb98fe300000000000000000000000000000000000000000000000000000000815261ffff891660048201526001600160a01b039091169063ffb98fe390602401600060405180830381600087803b15801561260957600080fd5b505af115801561261d573d6000803e3d6000fd5b50506008805467ffffffffffffffff909c16600160801b027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff909c169b909b17909a5550505050505050505050565b60075460009061267e906080906142b9565b905060006126e161269260a0860186614370565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050506060860135846126d960a0890160808a01614618565b6006546134c6565b60408051858152602081018390529192507f94e252069a85aa79db21f5bd8ca4e14dd3a3927aa492711017a2c8ddad95af00910160405180910390a161276961272a8580614370565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050505060208601358561040061363e565b600d54146127945760405163755f0a2560e01b81526001600482015260248101829052604401610839565b6127a160a0850185614370565b60008181106127b2576127b26143c1565b905060200201358480604001906127c99190614370565b60008181106127da576127da6143c1565b90506020020135146128095760405163755f0a2560e01b81526002600482015260248101829052604401610839565b60008061281960e0870187614370565b90501161282a57846020013561285f565b61283760e0860186614370565b6000818110612848576128486143c1565b905060200281019061285a9190614633565b606001355b90506128bd6128716040870187614370565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050506060870135856128b860a08a0160808b01614618565b61363e565b81146128e65760405163755f0a2560e01b81526003600482015260248101839052604401610839565b60006128f560e0870187614370565b9050111561292d5760408051602080880135908201529081018390526060016040516020818303038152906040528051906020012091505b816129388680614370565b6000818110612949576129496143c1565b90506020020135146129775760405163755f0a2560e01b815260048181015260248101839052604401610839565b5050505050565b6001546000908190819061010090046001600160a01b031663c81e25ab6129a860c0870187614633565b602001356040518263ffffffff1660e01b81526004016129ca91815260200190565b60c060405180830381865afa1580156129e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0b9190614653565b5050509250925092506000612a3a858060c00190612a299190614633565b610cc2906060810190604001614618565b90506000612a4884846137ac565b9050808263ffffffff1610612a9d57612a6460c0870187614633565b602001356040517f1362e4a000000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b60018054906101000a90046001600160a01b03166001600160a01b031663906978426040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b12919061447f565b60015461010090046001600160a01b031663d71ba7c4612b3560c08a018a614633565b602001356040518263ffffffff1660e01b8152600401612b5791815260200190565b602060405180830381865afa158015612b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b98919061447f565b1015612be457612bab60c0870187614633565b602001356040517f55a9e7ce00000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b6000612c13612bf660c0890189614633565b612c07906060810190604001614618565b60201c63ffffffff1690565b90506000612c258860200135866137c7565b63ffffffff16905067ffffffffffffffff82168114612c8457612c4b60c0890189614633565b602001356040517f6dd6a24f00000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b612d2a87612c9560c08b018b614633565b612c9f90806146cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b0135612ce560c08d018d614633565b60200135612cf660c08e018e614633565b612d07906060810190604001614618565b612d1460c08f018f614633565b612d25906080810190606001614618565b6137ee565b612d7457612d3b60c0890189614633565b602001356040517fdb12fb9d00000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b5050505050505050565b612d8b60e0820182614370565b9050600003612d975750565b612eb8612da760e0830183614370565b6000818110612db857612db86143c1565b9050602002810190612dca9190614633565b612dd8906020810190614712565b612de560e0840184614370565b6000818110612df657612df66143c1565b9050602002810190612e089190614633565b612e169060208101906146cb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e589250505060e0850185614370565b6000818110612e6957612e696143c1565b9050602002810190612e7b9190614633565b60400135612e8c60e0860186614370565b6000818110612e9d57612e9d6143c1565b9050602002810190612eaf9190614633565b60600135613885565b612f2557612ec960e0820182614370565b6000818110612eda57612eda6143c1565b9050602002810190612eec9190614633565b606001356040517fd740df6100000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b6020810135612fa4612f3a60e0840184614370565b6000818110612f4b57612f4b6143c1565b9050602002810190612f5d9190614633565b60400135612f6e60e0850185614370565b6000818110612f7f57612f7f6143c1565b9050602002810190612f919190614633565b612f9f906020810190614712565b613918565b14611f2457612fb660e0820182614370565b6000818110612fc757612fc76143c1565b9050602002810190612fd99190614633565b606001356040517f82f2469d00000000000000000000000000000000000000000000000000000000815260040161083991815260200190565b8385101561305f5781831061303a57604051633d386eb360e11b815260040160405180910390fd5b80821061305a57604051633588c6d360e11b815260040160405180910390fd5b61309f565b82821061307f57604051633d386eb360e11b815260040160405180910390fd5b80831061309f57604051633588c6d360e11b815260040160405180910390fd5b61297781613966565b60606130b2611057565b6130cf57604051633788c6c160e11b815260040160405180910390fd5b60006130d961104a565b60085490915067ffffffffffffffff808316600160401b909204161461311257604051636fbabc7760e01b815260040160405180910390fd5b60075460405160200161314d9181527f3100000000000000000000000000000000000000000000000000000000000000602082015260210190565b60405160208183030381529060405291505090565b60008060008060008060008060006131786139bd565b60045490915060005b8181101561330a576004818154811061319c5761319c6143c1565b906000526020600020906005020160010160149054906101000a900460ff161561330257600481815481106131d3576131d36143c1565b9060005260206000209060050201600401549350600584815481106131fa576131fa6143c1565b906000526020600020906005020160030154896132179190614426565b9850828160405160200161322c92919061445d565b60408051601f19818403018152919052805160209091012097506fffffffffffffffffffffffffffffffff8089169750613267906001614426565b6005858154811061327a5761327a6143c1565b9060005260206000209060050201600301546132969190614359565b6132a08a89614359565b101561330257600584815481106132b9576132b96143c1565b9060005260206000209060050201600401549550600584815481106132e0576132e06143c1565b906000526020600020906005020160010160149054906101000a900460ff1694505b600101613181565b509399929850919650505050505050565b613323612044565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b6000805b6004548110156133e7578360048281548110613391576133916143c1565b9060005260206000209060050201600001541480156133d35750600481815481106133be576133be6143c1565b90600052602060002090600502016003015483145b156133df579050610638565b600101613373565b506040517fd950091500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613422613a46565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613352565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661084c5761348481613a98565b61348f836020613aaa565b6040516020016134a092919061472f565b60408051601f198184030181529082905262461bcd60e51b8252610839916004016147b0565b6000806134d587878786613c6f565b9050826135da856000808267ffffffffffffffff1690506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905080915050919050565b8260405160200161361c9392919092835260c09190911b77ffffffffffffffffffffffffffffffffffffffffffffffff19166020830152602882015260480190565b6040516020818303038152906040528051906020012091505095945050505050565b60008061364c868686613ce5565b9050613750836000808267ffffffffffffffff1690506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905080915050919050565b8160405160200161378b92919060c09290921b77ffffffffffffffffffffffffffffffffffffffffffffffff19168252600882015260280190565b60405160208183030381529060405280519060200120915050949350505050565b60006137b882846145d4565b60ff166001901b905092915050565b600060e083901c6137d98360206145d4565b60ff168163ffffffff16901c91505092915050565b6000806137fd86868686613d4d565b90506000613858826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050886001600160a01b031661386e828a613d98565b6001600160a01b0316149998505050505050505050565b6000806138928484613e17565b905060006138ed826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050866001600160a01b03166139038288613d98565b6001600160a01b031614979650505050505050565b6000828260405160200161394892919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b7dba1914b54e0348a1028d1a103a95ed55c4004b9d332400000000000000008110611f24576040517f9fad870f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606139c7611057565b6139e457604051633788c6c160e11b815260040160405180910390fd5b60006139ee61104a565b60085490915067ffffffffffffffff808316600160401b9092041614613a2757604051636fbabc7760e01b815260040160405180910390fd5b60075460405160200161314d918152600360fc1b602082015260210190565b60015460ff166110485760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610839565b60606106386001600160a01b03831660145b60606000613ab9836002614359565b613ac4906002614426565b67ffffffffffffffff811115613adc57613adc6147e3565b6040519080825280601f01601f191660200182016040528015613b06576020820181803683370190505b509050600360fc1b81600081518110613b2157613b216143c1565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613b6c57613b6c6143c1565b60200101906001600160f81b031916908160001a9053506000613b90846002614359565b613b9b906001614426565b90505b6001811115613c20577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613bdc57613bdc6143c1565b1a60f81b828281518110613bf257613bf26143c1565b60200101906001600160f81b031916908160001a90535060049490941c93613c19816147f9565b9050613b9e565b5083156118605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610839565b8260005b8551811015613cdc576000613c896002866142b9565b15613c95576000613c98565b60015b9050613cbf83888481518110613cb057613cb06143c1565b60200260200101518387613e33565b9250600185901c9450508080613cd490614340565b915050613c73565b50949350505050565b8160005b8451811015613d45576000613cff6002856142b9565b6000149050613d2883878481518110613d1a57613d1a6143c1565b602002602001015183613e93565b9250600184901c9350508080613d3d90614340565b915050613ce9565b509392505050565b604080516020810186905290810184905277ffffffffffffffffffffffffffffffffffffffffffffffff1960c084811b8216606084015283901b166068820152600090607001611e12565b600080600080613da785613efa565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015613e02573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160208101849052908101829052600090606001613948565b60008215613e7357604080516020810184905290810186905260608101859052608001604051602081830303815290604052805190602001209050611e2b565b604080516020810184905290810185905260608101869052608001611e12565b60008115613ecc576040805160208101869052908101849052606001604051602081830303815290604052805190602001209050611860565b5050604080516020808201939093528082019390935280518084038201815260609093019052815191012090565b60008060008351604114613f3a576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060208101516040820151606090920151909260009190911a90565b5080546000825560050290600052602060002090810190611f2491905b80821115613fbd57600080825560018201805474ffffffffffffffffffffffffffffffffffffffffff1916905560028201819055600382018190556004820155600501613f75565b5090565b600060208284031215613fd357600080fd5b81356001600160e01b03198116811461186057600080fd5b600060208284031215613ffd57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561408757614074838551805182526001600160a01b03602082015116602083015260ff6040820151166040830152606081015160608301526080810151608083015260a081015160a08301525050565b9284019260c09290920191600101614020565b50909695505050505050565b6001600160a01b0381168114611f2457600080fd5b600080604083850312156140bb57600080fd5b8235915060208301356140cd81614093565b809150509250929050565b600061010082840312156140eb57600080fd5b50919050565b60008060006060848603121561410657600080fd5b833567ffffffffffffffff8082111561411e57600080fd5b61412a878388016140d8565b9450602086013591508082111561414057600080fd5b61414c878388016140d8565b9350604086013591508082111561416257600080fd5b5061416f868287016140d8565b9150509250925092565b803567ffffffffffffffff8116811461419157600080fd5b919050565b6000806000606084860312156141ab57600080fd5b83359250602084013591506141c260408501614179565b90509250925092565b60ff81168114611f2457600080fd5b600080604083850312156141ed57600080fd5b82356141f8816141cb565b915060208301356140cd816141cb565b6000806040838503121561421b57600080fd5b8235915060208301356140cd816141cb565b6000806000806080858703121561424357600080fd5b843593506020850135614255816141cb565b93969395505050506040820135916060013590565b60008060006060848603121561427f57600080fd5b83359250602084013591506040840135614298816141cb565b809150509250925092565b634e487b7160e01b600052601260045260246000fd5b6000826142c8576142c86142a3565b500690565b634e487b7160e01b600052601160045260246000fd5b6000826142f2576142f26142a3565b500490565b67ffffffffffffffff818116838216019080821115614318576143186142cd565b5092915050565b67ffffffffffffffff828116828216039080821115614318576143186142cd565b600060018201614352576143526142cd565b5060010190565b8082028115828204841417610638576106386142cd565b6000808335601e1984360301811261438757600080fd5b83018035915067ffffffffffffffff8211156143a257600080fd5b6020019150600581901b36038213156143ba57600080fd5b9250929050565b634e487b7160e01b600052603260045260246000fd5b60c081016106388284805182526001600160a01b03602082015116602083015260ff6040820151166040830152606081015160608301526080810151608083015260a081015160a08301525050565b80820180821115610638576106386142cd565b60005b8381101561445457818101518382015260200161443c565b50506000910152565b6000835161446f818460208801614439565b9190910191825250602001919050565b60006020828403121561449157600080fd5b5051919050565b81810381811115610638576106386142cd565b6000602082840312156144bd57600080fd5b815161186081614093565b600181815b808511156145035781600019048211156144e9576144e96142cd565b808516156144f657918102915b93841c93908002906144cd565b509250929050565b60008261451a57506001610638565b8161452757506000610638565b816001811461453d576002811461454757614563565b6001915050610638565b60ff841115614558576145586142cd565b50506001821b610638565b5060208310610133831016604e8410600b8410161715614586575081810a610638565b61459083836144c8565b80600019048211156145a4576145a46142cd565b029392505050565b600061186060ff84168361450b565b60ff8181168382160190811115610638576106386142cd565b60ff8281168282160390811115610638576106386142cd565b61ffff828116828216039080821115614318576143186142cd565b600061186061ffff84168361450b565b60006020828403121561462a57600080fd5b61186082614179565b60008235607e1983360301811261464957600080fd5b9190910192915050565b60008060008060008060c0878903121561466c57600080fd5b865161467781614093565b6020880151909650614688816141cb565b6040880151909550614699816141cb565b606088015190945080151581146146af57600080fd5b809350506080870151915060a087015190509295509295509295565b6000808335601e198436030181126146e257600080fd5b83018035915067ffffffffffffffff8211156146fd57600080fd5b6020019150368190038213156143ba57600080fd5b60006020828403121561472457600080fd5b813561186081614093565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614767816017850160208801614439565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516147a4816028840160208801614439565b01602801949350505050565b60208152600082518060208401526147cf816040850160208701614439565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600081614808576148086142cd565b50600019019056fea26469706673582212209b67077ddf5f72f51e492917930befb9611abee6ae71e96d2220eaf71124933a64736f6c63430008130033 \ No newline at end of file +0x60806040526008805462ffffff60c01b19166264020160c01b1790557dba1914b54e0348a1028d1a103a95ed55c4004b9d332400000000000000006009553480156200004a57600080fd5b5060405162004b0538038062004b058339810160408190526200006d916200019d565b60018054600380546001600160a01b03199081166001600160a01b03888116919091179092556001600160a81b0319909216610100868316021790925560028054909116918316919091179055620000c7600033620000d0565b505050620001e7565b620000dc8282620000e0565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000dc576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200013c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200019857600080fd5b919050565b600080600060608486031215620001b357600080fd5b620001be8462000180565b9250620001ce6020850162000180565b9150620001de6040850162000180565b90509250925092565b61490e80620001f76000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c806377c75d1011610160578063b6cd5822116100d8578063dfbf53ae1161008c578063f69ee1d111610071578063f69ee1d1146105d5578063f7b188a5146105e8578063fb00f2f3146105f057600080fd5b8063dfbf53ae14610592578063f4e6fcca146105c257600080fd5b8063ce987745116100bd578063ce98774514610564578063d1e8b63d14610577578063d547741f1461057f57600080fd5b8063b6cd582214610537578063c46b40291461054a57600080fd5b80638456cb591161012f5780638d8b6428116101145780638d8b6428146104f057806391d14854146104f8578063a217fddf1461052f57600080fd5b80638456cb59146104e05780638a19c8bc146104e857600080fd5b806377c75d101461045a5780637fe019c61461046d57806382b39b1b1461048857806383220626146104d857600080fd5b80635c975abb116101f357806364c34a85116101c257806369da9114116101a757806369da9114146103de5780636f94aaf2146103f157806372286cba1461040c57600080fd5b806364c34a85146103a957806369bfac01146103b157600080fd5b80635c975abb146103705780635d4844ea1461037b57806362fd29ae1461038e57806363f5cf7c1461039657600080fd5b80632a4e62491161024a5780632f3906da1161022f5780632f3906da1461034257806336568abe1461034a5780635838d6731461035d57600080fd5b80632a4e6249146103185780632f2ff15d1461032d57600080fd5b806301ffc9a71461027c5780631736d472146102a457806318350096146102b7578063248a9ca3146102e7575b600080fd5b61028f61028a36600461405f565b610603565b60405190151581526020015b60405180910390f35b61028f6102b23660046140ad565b61066c565b6001546102cf9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161029b565b61030a6102f53660046140e6565b60009081526020819052604090206001015490565b60405190815260200161029b565b6103206107fa565b60405161029b91906140ff565b61034061033b36600461418e565b610907565b005b61028f610931565b61034061035836600461418e565b61097b565b61034061036b3660046141d0565b610a0c565b60015460ff1661028f565b6003546102cf906001600160a01b031681565b61030a610f54565b6103406103a4366004614215565b611020565b61030a6113bb565b6008546103c59067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b6002546102cf906001600160a01b031681565b6008546103c590600160801b900467ffffffffffffffff1681565b61041f61041a3660046140e6565b61149b565b604080519687526001600160a01b039095166020870152921515938501939093526060840152608083019190915260a082015260c00161029b565b61028f6104683660046140e6565b6114f2565b6008546103c590600160401b900467ffffffffffffffff1681565b61049b6104963660046140e6565b6117a2565b604080519687526001600160a01b03909516602087015260ff909316938501939093526060840152608083019190915260a082015260c00161029b565b61030a6117b2565b6103406117bd565b6103c5611816565b61028f611823565b61028f61050636600461418e565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61030a600081565b61034061054536600461429d565b61184d565b610552611d8a565b60405160ff909116815260200161029b565b61030a6105723660046142d2565b611e0f565b61028f611e7d565b61034061058d36600461418e565b611ea2565b600a54600b54600c54600d54600e5461049b94936001600160a01b03811693600160a01b90910460ff1692909186565b6103406105d036600461430f565b611ec7565b6103406105e33660046140e6565b611fae565b610340612002565b61028f6105fe36600461435a565b612059565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061066657507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b60035460405163d1052d1f60e01b81526001600160a01b038481166004830152600092839291169063d1052d1f90602401602060405180830381865afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190614388565b90506106e8610931565b1561071f576040517fe2586bcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000361073f576040516273e5c360e31b815260040160405180910390fd5b61074b609860026143b7565b61075590436143ce565b811061077457604051630a0744c560e01b815260040160405180910390fd5b6003546040516397adedb560e01b81526001600160a01b0386811660048301526107f29216906397adedb590602401602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190614388565b6107ec6113bb565b85612059565b949350505050565b6060610804611823565b61082157604051633788c6c160e11b815260040160405180910390fd5b600061082b611816565b60085490915067ffffffffffffffff808316600160401b909204161461086457604051636fbabc7760e01b815260040160405180910390fd5b6005805480602002602001604051908101604052809291908181526020016000905b828210156108fd5760008481526020908190206040805160c08101825260058602909201805483526001808201546001600160a01b03811685870152600160a01b900460ff169284019290925260028101546060840152600381015460808401526004015460a08301529083529092019101610886565b5050505091505090565b60008281526020819052604090206001015461092281612096565b61092c83836120a3565b505050565b60008061093f6098436143f7565b905061094d6004609861440b565b811015801561096657506109636002609861440b565b81105b1561097357600191505090565b600091505090565b6001600160a01b03811633146109fe5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a088282612141565b5050565b610a146121c0565b6000610a1e611816565b6003546040516397adedb560e01b81523360048201529192506000916001600160a01b03909116906397adedb590602401602060405180830381865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a909190614388565b6003546040517f830a053e0000000000000000000000000000000000000000000000000000000081523360048201529192506000916001600160a01b039091169063830a053e90602401602060405180830381865afa158015610af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1b9190614388565b60035460405163d1052d1f60e01b81523360048201529192506000916001600160a01b039091169063d1052d1f90602401602060405180830381865afa158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190614388565b9050610b97611e7d565b610bcd576040517fdc816a8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001610bdb6004609861440b565b610be591906143ce565b610bf06098436143f7565b03610c27576040517f5baef6b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8467ffffffffffffffff168467ffffffffffffffff161115610c75576040517f50ff7c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8467ffffffffffffffff168467ffffffffffffffff161015610cc3576040517f7a0c0fd600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610ce3576040516273e5c360e31b815260040160405180910390fd5b610cef609860026143b7565b610cf990436143ce565b8110610d1857604051630a0744c560e01b815260040160405180910390fd5b60085467ffffffffffffffff858116911614610d5857610d3a60046000613ff6565b6008805467ffffffffffffffff191667ffffffffffffffff86161790555b60045460005b81811015610dcb578460048281548110610d7a57610d7a61441f565b90600052602060002090600502016000015403610dc3576040517fbfec555800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d5e565b506040805160c081018252858152336020808301918252600083850181815260608501898152608086018e815260a0870184815260048054600181018255955296517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b60059095029485015594517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c8401805493516001600160a01b0390921674ffffffffffffffffffffffffffffffffffffffffff1990941693909317600160a01b9115159190910217909155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d82015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e83015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f90910155815167ffffffffffffffff891681529081018690527f68e0867601a98978930107aee7f425665e61edd70ca594c68ca5da9e81f84c29910160405180910390a150505050505050565b600080610f5f611816565b610f6a906001614435565b60075460085491925090610f9090600160401b900467ffffffffffffffff166001614435565b67ffffffffffffffff168267ffffffffffffffff16111561066657600854600090600190610fcf90600160401b900467ffffffffffffffff168561445d565b610fd9919061445d565b67ffffffffffffffff1690508181604051602001611001929190918252602082015260400190565b6040516020818303038152906040528051906020012091505092915050565b6110286121c0565b611030612213565b6040805160c081018252600a548152600b546001600160a01b0381166020830152600160a01b900460ff1691810191909152600c546060820152600d546080820152600e5460a08201526006546007546000918291611090600f826143f7565b935061109d600e826143f7565b92508383106110b457826110b08161447e565b9350505b6110c78660200135838760400151612059565b6110e757604051633b5f43a360e01b8152600360048201526024016109f5565b6110f286601e61281f565b6110fb86612b31565b61110486612e3e565b6111178860200135838760400151612059565b61113757604051633b5f43a360e01b8152600260048201526024016109f5565b61114b886111468660026143b7565b61281f565b61115488612b31565b61115d88612e3e565b6111708760200135838760400151612059565b61119057604051633b5f43a360e01b8152600160048201526024016109f5565b61119f876111468560026143b7565b6111a887612b31565b6111b187612e3e565b61122784846111c08b80614497565b60008181106111d1576111d161441f565b602002919091013590506111e58b80614497565b60008181106111f6576111f661441f565b6020029190910135905061120a8b80614497565b600081811061121b5761121b61441f565b905060200201356130d2565b6112516112348780614497565b60008181106112455761124561441f565b9050602002013561315f565b60015460208601516040517f51cff8d90000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416906351cff8d990602401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505050507f788e77979e6e6a8a6a5d2c19c58b1ff9671298f54c85ac6f6aa30379aed5861a8560405161130191906144e8565b60405180910390a17fbee3fc8a3523c1a65fa9308ce1f2b8fd90c24975b141b754603194597846e4dd60018054906101000a90046001600160a01b03166001600160a01b0316638a5e8e326040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f9190614388565b6040519081526020015b60405180910390a15050505050505050565b60006113c5611e7d565b806114035750600854600160401b900467ffffffffffffffff166113e7611816565b67ffffffffffffffff161180156114035750611401611823565b155b15611415576114106117b2565b905090565b61141d611823565b1561142a57611410610f54565b611432610931565b80156114615750600854600160401b900467ffffffffffffffff16611455611816565b67ffffffffffffffff16145b15611498576040517f36b7884b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b600481815481106114ab57600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294506001600160a01b03821693600160a01b90920460ff169290919086565b60006114fc611823565b61151957604051633788c6c160e11b815260040160405180910390fd5b6000611523611816565b60085490915067ffffffffffffffff808316600160401b909204161461155c57604051636fbabc7760e01b815260040160405180910390fd5b60085467ffffffffffffffff600160801b90910481169082161161159357604051630c8d9eab60e31b815260040160405180910390fd5b6000806000806000806000806115a761319d565b905060006115b3613257565b600454919650945060005b8181101561178e57600481815481106115d9576115d961441f565b9060005260206000209060050201600401549450600481815481106116005761160061441f565b906000526020600020906005020160010160149054906101000a900460ff16801561164e5750600585815481106116395761163961441f565b90600052602060002090600502016004015487145b801561168c5750600585815481106116685761166861441f565b600091825260209091206001600590920201015460ff878116600160a01b90920416145b1561178657600585815481106116a4576116a461441f565b9060005260206000209060050201600301548b6116c19190614537565b9a5083836040516020016116d692919061456e565b60408051601f19818403018152919052805160209091012098506fffffffffffffffffffffffffffffffff808a169850611711906001614537565b600586815481106117245761172461441f565b90600052602060002090600502016003015461174091906143b7565b61174a8c8a6143b7565b101561177857600585815481106117635761176361441f565b90600052602060002090600502016000015499505b826117828161447e565b9350505b6001016115be565b505050959099149998505050505050505050565b600581815481106114ab57600080fd5b600080610f6a611816565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661180c57604051631d77d47760e21b815260040160405180910390fd5b611814613410565b565b600061141060984361440b565b60006118316002609861440b565b61183c6098436143f7565b106118475750600190565b50600090565b6118556121c0565b600061185f611816565b6003546040516397adedb560e01b81523360048201529192506000916001600160a01b03909116906397adedb590602401602060405180830381865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190614388565b90506118db611d8a565b60ff168560ff16101561191a576040517f83d9b7bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611922610931565b611958576040517fd1088db600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085467ffffffffffffffff8381169116146119a0576040517f842a9e0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085467ffffffffffffffff838116600160401b9092041614611a88576119c56113bb565b6006556119d460056000613ff6565b600880547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b67ffffffffffffffff8516908102919091179091556006546040805192835260208301919091527ff0ae472da9c8da86bda4991a549c03a3cb328b5f360ea11a5b8814f32bb85176910160405180910390a1611a88600754604080516020810192909252449082015260600160408051601f198184030181529190528051602090910120600755565b6000611a9682878787611e0f565b90506000611aa48383613464565b9050600060048281548110611abb57611abb61441f565b60009182526020918290206040805160c081018252600593909302909101805480845260018201546001600160a01b03811695850195909552600160a01b90940460ff1615159183019190915260028101546060830152600381015460808301526004015460a0820152600654909250611b3691908a612059565b611b72576006546040517f14ebbbe40000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b806040015115611bae576040517fa89ac15100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160048381548110611bc357611bc361441f565b906000526020600020906005020160010160146101000a81548160ff02191690831515021790555060058054905060048381548110611c0457611c0461441f565b90600052602060002090600502016004018190555060056040518060c001604052808360000151815260200183602001516001600160a01b031681526020018a60ff168152602001836060015181526020018a6002611c639190614674565b8460600151611c7291906143b7565b815260209081018a90528254600181810185556000948552938290208351600590920201908155908201519281018054604084015160ff16600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199091166001600160a01b0390951694909417939093179092556060808201516002808501919091556080830151600385015560a0909201516004909301929092558251918301517f13fc17fd71632266fe82092de6dd91a06b4fa68d8dc950492e5421cbed55a6a5928892909190611d40908d90614674565b8560600151611d4f91906143b7565b6040805167ffffffffffffffff909516855260208501939093529183015260608201526080810189905260ff8a1660a082015260c0016113a9565b6008546000908190611daf9067ffffffffffffffff600160801b82048116911661445d565b67ffffffffffffffff169050600060fe8211611dcb5781611dce565b60fe5b611dd9906001614683565b600b5490915060ff600160a01b9091048116908216811115611e0457611dff828261469c565b611e07565b60005b935050505090565b60408051602081018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b169181019190915260418101839052606181018290526000906081015b604051602081830303815290604052805190602001209050949350505050565b6000611e8b6004609861440b565b611e966098436143f7565b10156118475750600190565b600082815260208190526040902060010154611ebd81612096565b61092c8383612141565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16611f1657604051637bfa4b9f60e01b815260040160405180910390fd5b600880547fffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b60ff958616027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1617600160c81b93851693909302929092177fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d01b9190931602919091179055565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16611ffd57604051637bfa4b9f60e01b815260040160405180910390fd5b600955565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661205157604051631d77d47760e21b815260040160405180910390fd5b61181461350f565b60008160ff1660000361206e5750600161208f565b61207d60ff83166101006146b5565b6120889060026146d0565b8484181090505b9392505050565b6120a08133613548565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610a08576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556120fd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610a08576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60015460ff16156118145760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109f5565b600061221d611816565b9050612227611823565b61224457604051633788c6c160e11b815260040160405180910390fd5b60085467ffffffffffffffff828116600160401b909204161461227a57604051636fbabc7760e01b815260040160405180910390fd5b60085467ffffffffffffffff600160801b9091048116908216116122b157604051630c8d9eab60e31b815260040160405180910390fd5b600454604051818152600091829182918291829182917f6752c5e71c95fb93bc7137adeb115a33fa4e54e2683e33d3f90c2bb1c4b6c2a59060200160405180910390a16005546040519081527f4c03de6a759749c0c9387b7014634dc5c6af610e1366023d90751c783a998f8d9060200160405180910390a1612332613257565b6040805183815260ff831660208201529295509093507f34e8eda4cd857cd2865becf58a47748f31415f4a382cbb2cc0c64b9a27c717be910160405180910390a1600061237d61319d565b905060005b828110156127595760006004828154811061239f5761239f61441f565b600091825260208083206040805160c08101825260059485029092018054835260018101546001600160a01b03811694840194909452600160a01b90930460ff16151590820152600282015460608201526003820154608082015260049091015460a0820181905282549194509291908390811061241f5761241f61441f565b60009182526020918290206040805160c0810182526005939093029091018054835260018101546001600160a01b03811694840194909452600160a01b90930460ff1682820152600283015460608301526003830154608083015260049092015460a082015290840151909150801561249b57508060a0015188145b80156124b05750806040015160ff168760ff16145b156125a55760808101516124c4908d614537565b9b50848b6040516020016124d992919061456e565b60408051601f19818403018152919052805160209091012099506fffffffffffffffffffffffffffffffff808b169950612514906001614537565b816080015161252391906143b7565b61252d8d8b6143b7565b1015612597578051600a556020810151600b8054604084015160ff16600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199091166001600160a01b03909316929092179190911790556060810151600c556080810151600d5560a0810151600e555b8a6125a18161447e565b9b50505b826040015180156125ce57508060a00151881415806125ce5750806040015160ff168760ff1614155b80156125ef5750600854600160d01b900460ff166125ed6064446143f7565b105b1561269b5760035460208201516001600160a01b039091169063d009b2d6906126198a6002614674565b60085461263290609890600160c01b900460ff166143b7565b61263c91906143b7565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561268257600080fd5b505af1158015612696573d6000803e3d6000fd5b505050505b826040015161274b5760035460208401516001600160a01b039091169063d009b2d6906126c98a6002614674565b6008546126e290609890600160c81b900460ff166143b7565b6126ec91906143b7565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561273257600080fd5b505af1158015612746573d6000803e3d6000fd5b505050505b836001019350505050612382565b506002546040517fffb98fe300000000000000000000000000000000000000000000000000000000815261ffff891660048201526001600160a01b039091169063ffb98fe390602401600060405180830381600087803b1580156127bc57600080fd5b505af11580156127d0573d6000803e3d6000fd5b50506008805467ffffffffffffffff909c16600160801b027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff909c169b909b17909a5550505050505050505050565b600754600090612831906080906143f7565b9050600061289461284560a0860186614497565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050505060608601358461288c60a0890160808a016146e0565b6006546135bb565b60408051858152602081018390529192507f94e252069a85aa79db21f5bd8ca4e14dd3a3927aa492711017a2c8ddad95af00910160405180910390a161291c6128dd8580614497565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505050602086013585610400613733565b600e54146129475760405163755f0a2560e01b815260016004820152602481018290526044016109f5565b61295460a0850185614497565b60008181106129655761296561441f565b9050602002013584806040019061297c9190614497565b600081811061298d5761298d61441f565b90506020020135146129bc5760405163755f0a2560e01b815260026004820152602481018290526044016109f5565b6000806129cc60e0870187614497565b9050116129dd578460200135612a12565b6129ea60e0860186614497565b60008181106129fb576129fb61441f565b9050602002810190612a0d91906146fb565b606001355b9050612a70612a246040870187614497565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505050606087013585612a6b60a08a0160808b016146e0565b613733565b8114612a995760405163755f0a2560e01b815260036004820152602481018390526044016109f5565b6000612aa860e0870187614497565b90501115612ae05760408051602080880135908201529081018390526060016040516020818303038152906040528051906020012091505b81612aeb8680614497565b6000818110612afc57612afc61441f565b9050602002013514612b2a5760405163755f0a2560e01b8152600481810152602481018390526044016109f5565b5050505050565b6001546000908190819061010090046001600160a01b031663c81e25ab612b5b60c08701876146fb565b602001356040518263ffffffff1660e01b8152600401612b7d91815260200190565b60c060405180830381865afa158015612b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbe919061471b565b509396509194509250506001600160a01b0384169050612c1e57612be560c08501856146fb565b602001356040517f2396d34e0000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b6000612c41612c3060c08701876146fb565b6114989060608101906040016146e0565b90506000612c4f84846138a1565b9050808263ffffffff1610612ca457612c6b60c08701876146fb565b602001356040517f1362e4a00000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b6000612cd3612cb660c08901896146fb565b612cc79060608101906040016146e0565b60201c63ffffffff1690565b90506000612ce58860200135866138bc565b63ffffffff16905067ffffffffffffffff82168114612d4457612d0b60c08901896146fb565b602001356040517f6dd6a24f0000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b612dea87612d5560c08b018b6146fb565b612d5f9080614793565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b0135612da560c08d018d6146fb565b60200135612db660c08e018e6146fb565b612dc79060608101906040016146e0565b612dd460c08f018f6146fb565b612de59060808101906060016146e0565b6138e3565b612e3457612dfb60c08901896146fb565b602001356040517fdb12fb9d0000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b5050505050505050565b612e4b60e0820182614497565b9050600003612e575750565b612f78612e6760e0830183614497565b6000818110612e7857612e7861441f565b9050602002810190612e8a91906146fb565b612e989060208101906147da565b612ea560e0840184614497565b6000818110612eb657612eb661441f565b9050602002810190612ec891906146fb565b612ed6906020810190614793565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f189250505060e0850185614497565b6000818110612f2957612f2961441f565b9050602002810190612f3b91906146fb565b60400135612f4c60e0860186614497565b6000818110612f5d57612f5d61441f565b9050602002810190612f6f91906146fb565b6060013561397a565b612fe557612f8960e0820182614497565b6000818110612f9a57612f9a61441f565b9050602002810190612fac91906146fb565b606001356040517fd740df610000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b6020810135613064612ffa60e0840184614497565b600081811061300b5761300b61441f565b905060200281019061301d91906146fb565b6040013561302e60e0850185614497565b600081811061303f5761303f61441f565b905060200281019061305191906146fb565b61305f9060208101906147da565b613a0d565b146120a05761307660e0820182614497565b60008181106130875761308761441f565b905060200281019061309991906146fb565b606001356040517f82f2469d0000000000000000000000000000000000000000000000000000000081526004016109f591815260200190565b8385101561311f578183106130fa57604051633d386eb360e11b815260040160405180910390fd5b80821061311a57604051633588c6d360e11b815260040160405180910390fd5b612b2a565b82821061313f57604051633d386eb360e11b815260040160405180910390fd5b808310612b2a57604051633588c6d360e11b815260040160405180910390fd5b60095481106120a0576040517fb6052cdf000000000000000000000000000000000000000000000000000000008152600481018290526024016109f5565b60606131a7611823565b6131c457604051633788c6c160e11b815260040160405180910390fd5b60006131ce611816565b60085490915067ffffffffffffffff808316600160401b909204161461320757604051636fbabc7760e01b815260040160405180910390fd5b6007546040516020016132429181527f3100000000000000000000000000000000000000000000000000000000000000602082015260210190565b60405160208183030381529060405291505090565b600080600080600080600080600061326d613a5b565b60045490915060005b818110156133ff57600481815481106132915761329161441f565b906000526020600020906005020160010160149054906101000a900460ff16156133f757600481815481106132c8576132c861441f565b9060005260206000209060050201600401549350600584815481106132ef576132ef61441f565b9060005260206000209060050201600301548961330c9190614537565b9850828160405160200161332192919061456e565b60408051601f19818403018152919052805160209091012097506fffffffffffffffffffffffffffffffff808916975061335c906001614537565b6005858154811061336f5761336f61441f565b90600052602060002090600502016003015461338b91906143b7565b6133958a896143b7565b10156133f757600584815481106133ae576133ae61441f565b9060005260206000209060050201600401549550600584815481106133d5576133d561441f565b906000526020600020906005020160010160149054906101000a900460ff1694505b600101613276565b509399929850919650505050505050565b6134186121c0565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b6000805b6004548110156134dc5783600482815481106134865761348661441f565b9060005260206000209060050201600001541480156134c85750600481815481106134b3576134b361441f565b90600052602060002090600502016003015483145b156134d4579050610666565b600101613468565b506040517fd950091500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613517613ae4565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613447565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610a085761357981613b36565b613584836020613b48565b6040516020016135959291906147f7565b60408051601f198184030181529082905262461bcd60e51b82526109f591600401614878565b6000806135ca87878786613d0d565b9050826136cf856000808267ffffffffffffffff1690506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905080915050919050565b826040516020016137119392919092835260c09190911b77ffffffffffffffffffffffffffffffffffffffffffffffff19166020830152602882015260480190565b6040516020818303038152906040528051906020012091505095945050505050565b600080613741868686613d83565b9050613845836000808267ffffffffffffffff1690506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905080915050919050565b8160405160200161388092919060c09290921b77ffffffffffffffffffffffffffffffffffffffffffffffff19168252600882015260280190565b60405160208183030381529060405280519060200120915050949350505050565b60006138ad828461469c565b60ff166001901b905092915050565b600060e083901c6138ce83602061469c565b60ff168163ffffffff16901c91505092915050565b6000806138f286868686613deb565b9050600061394d826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050886001600160a01b0316613963828a613e36565b6001600160a01b0316149998505050505050505050565b6000806139878484613eb5565b905060006139e2826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050866001600160a01b03166139f88288613e36565b6001600160a01b031614979650505050505050565b60008282604051602001613a3d92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6060613a65611823565b613a8257604051633788c6c160e11b815260040160405180910390fd5b6000613a8c611816565b60085490915067ffffffffffffffff808316600160401b9092041614613ac557604051636fbabc7760e01b815260040160405180910390fd5b600754604051602001613242918152600360fc1b602082015260210190565b60015460ff166118145760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016109f5565b60606106666001600160a01b03831660145b60606000613b578360026143b7565b613b62906002614537565b67ffffffffffffffff811115613b7a57613b7a6148ab565b6040519080825280601f01601f191660200182016040528015613ba4576020820181803683370190505b509050600360fc1b81600081518110613bbf57613bbf61441f565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613c0a57613c0a61441f565b60200101906001600160f81b031916908160001a9053506000613c2e8460026143b7565b613c39906001614537565b90505b6001811115613cbe577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613c7a57613c7a61441f565b1a60f81b828281518110613c9057613c9061441f565b60200101906001600160f81b031916908160001a90535060049490941c93613cb7816148c1565b9050613c3c565b50831561208f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109f5565b8260005b8551811015613d7a576000613d276002866143f7565b15613d33576000613d36565b60015b9050613d5d83888481518110613d4e57613d4e61441f565b60200260200101518387613ed1565b9250600185901c9450508080613d729061447e565b915050613d11565b50949350505050565b8160005b8451811015613de3576000613d9d6002856143f7565b6000149050613dc683878481518110613db857613db861441f565b602002602001015183613f31565b9250600184901c9350508080613ddb9061447e565b915050613d87565b509392505050565b604080516020810186905290810184905277ffffffffffffffffffffffffffffffffffffffffffffffff1960c084811b8216606084015283901b166068820152600090607001611e5d565b600080600080613e4585613f98565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015613ea0573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160208101849052908101829052600090606001613a3d565b60008215613f11576040805160208101849052908101869052606081018590526080016040516020818303038152906040528051906020012090506107f2565b604080516020810184905290810185905260608101869052608001611e5d565b60008115613f6a57604080516020810186905290810184905260600160405160208183030381529060405280519060200120905061208f565b5050604080516020808201939093528082019390935280518084038201815260609093019052815191012090565b60008060008351604114613fd8576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060208101516040820151606090920151909260009190911a90565b50805460008255600502906000526020600020908101906120a091905b8082111561405b57600080825560018201805474ffffffffffffffffffffffffffffffffffffffffff1916905560028201819055600382018190556004820155600501614013565b5090565b60006020828403121561407157600080fd5b81356001600160e01b03198116811461208f57600080fd5b6001600160a01b03811681146120a057600080fd5b60ff811681146120a057600080fd5b600080604083850312156140c057600080fd5b82356140cb81614089565b915060208301356140db8161409e565b809150509250929050565b6000602082840312156140f857600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156141825761416f838551805182526001600160a01b03602082015116602083015260ff6040820151166040830152606081015160608301526080810151608083015260a081015160a08301525050565b9284019260c0929092019160010161411b565b50909695505050505050565b600080604083850312156141a157600080fd5b8235915060208301356140db81614089565b803567ffffffffffffffff811681146141cb57600080fd5b919050565b600080604083850312156141e357600080fd5b823591506141f3602084016141b3565b90509250929050565b6000610100828403121561420f57600080fd5b50919050565b60008060006060848603121561422a57600080fd5b833567ffffffffffffffff8082111561424257600080fd5b61424e878388016141fc565b9450602086013591508082111561426457600080fd5b614270878388016141fc565b9350604086013591508082111561428657600080fd5b50614293868287016141fc565b9150509250925092565b6000806000606084860312156142b257600080fd5b83356142bd8161409e565b95602085013595506040909401359392505050565b600080600080608085870312156142e857600080fd5b8435935060208501356142fa8161409e565b93969395505050506040820135916060013590565b60008060006060848603121561432457600080fd5b833561432f8161409e565b9250602084013561433f8161409e565b9150604084013561434f8161409e565b809150509250925092565b60008060006060848603121561436f57600080fd5b8335925060208401359150604084013561434f8161409e565b60006020828403121561439a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610666576106666143a1565b81810381811115610666576106666143a1565b634e487b7160e01b600052601260045260246000fd5b600082614406576144066143e1565b500690565b60008261441a5761441a6143e1565b500490565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff818116838216019080821115614456576144566143a1565b5092915050565b67ffffffffffffffff828116828216039080821115614456576144566143a1565b600060018201614490576144906143a1565b5060010190565b6000808335601e198436030181126144ae57600080fd5b83018035915067ffffffffffffffff8211156144c957600080fd5b6020019150600581901b36038213156144e157600080fd5b9250929050565b60c081016106668284805182526001600160a01b03602082015116602083015260ff6040820151166040830152606081015160608301526080810151608083015260a081015160a08301525050565b80820180821115610666576106666143a1565b60005b8381101561456557818101518382015260200161454d565b50506000910152565b6000835161458081846020880161454a565b9190910191825250602001919050565b600181815b808511156145cb5781600019048211156145b1576145b16143a1565b808516156145be57918102915b93841c9390800290614595565b509250929050565b6000826145e257506001610666565b816145ef57506000610666565b8160018114614605576002811461460f5761462b565b6001915050610666565b60ff841115614620576146206143a1565b50506001821b610666565b5060208310610133831016604e8410600b841016171561464e575081810a610666565b6146588383614590565b806000190482111561466c5761466c6143a1565b029392505050565b600061208f60ff8416836145d3565b60ff8181168382160190811115610666576106666143a1565b60ff8281168282160390811115610666576106666143a1565b61ffff828116828216039080821115614456576144566143a1565b600061208f61ffff8416836145d3565b6000602082840312156146f257600080fd5b61208f826141b3565b60008235607e1983360301811261471157600080fd5b9190910192915050565b60008060008060008060c0878903121561473457600080fd5b865161473f81614089565b60208801519096506147508161409e565b60408801519095506147618161409e565b6060880151909450801515811461477757600080fd5b809350506080870151915060a087015190509295509295509295565b6000808335601e198436030181126147aa57600080fd5b83018035915067ffffffffffffffff8211156147c557600080fd5b6020019150368190038213156144e157600080fd5b6000602082840312156147ec57600080fd5b813561208f81614089565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161482f81601785016020880161454a565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161486c81602884016020880161454a565b01602801949350505050565b602081526000825180602084015261489781604085016020870161454a565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b6000816148d0576148d06143a1565b50600019019056fea26469706673582212200f9f0a55ccd6f0cb7269fe52233ea174faebf4c052751953813f1866c96736b964736f6c63430008130033 \ No newline at end of file diff --git a/orchestrator/contracts/StakeRegistry.bytecode b/orchestrator/contracts/StakeRegistry.bytecode index ae4a0f4..1f19bb3 100644 --- a/orchestrator/contracts/StakeRegistry.bytecode +++ b/orchestrator/contracts/StakeRegistry.bytecode @@ -1 +1 @@ -0x60806040523480156200001157600080fd5b506040516200191d3803806200191d833981016040819052620000349162000180565b6001805460ff19169055600380546001600160a01b03851668010000000000000000026001600160e01b03199091166001600160401b038516171790556200007e600082620000b3565b620000aa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000b3565b505050620001d8565b620000bf8282620000c3565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000bf576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200011f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200017b57600080fd5b919050565b6000806000606084860312156200019657600080fd5b620001a18462000163565b60208501519093506001600160401b0381168114620001bf57600080fd5b9150620001cf6040850162000163565b90509250925092565b61173580620001e86000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063abe385431161008c578063e63ab1e911610066578063e63ab1e9146103fc578063ede4130214610423578063f7b188a51461044657600080fd5b8063abe38543146103c3578063d547741f146103d6578063e34c4527146103e957600080fd5b8063a217fddf116100bd578063a217fddf14610381578063a6471a1d14610389578063a6ce31d4146103b057600080fd5b806391d148541461031d578063a0d22b211461035457600080fd5b8063420fc4db1161013a578063837fd16a11610114578063837fd16a146102805780638456cb59146102935780638fee64071461029b57600080fd5b8063420fc4db1461021b57806348962b93146102525780635c975abb1461027557600080fd5b8063248a9ca31161016b578063248a9ca3146101c45780632f2ff15d146101f557806336568abe1461020857600080fd5b806301ffc9a7146101875780631ed2cd40146101af575b600080fd5b61019a610195366004611477565b61044e565b60405190151581526020015b60405180910390f35b6101c26101bd3660046114d5565b6104e7565b005b6101e76101d2366004611508565b60009081526020819052604090206001015490565b6040519081526020016101a6565b6101c2610203366004611521565b61088b565b6101c2610216366004611521565b6108b5565b60035461023a906801000000000000000090046001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b6101e7610260366004611508565b60009081526002602052604090206001015490565b60015460ff1661019a565b6101c261028e36600461154d565b610941565b6101c2610a58565b6102e56102a9366004611508565b6002602081905260009182526040909120805460018201549282015460038301546004909301549193926001600160a01b039091169160ff1685565b6040805195865260208601949094526001600160a01b039092169284019290925260608301919091521515608082015260a0016101a6565b61019a61032b366004611521565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61023a610362366004611508565b600090815260026020819052604090912001546001600160a01b031690565b6101e7600081565b6101e77f3e35b14a9f4fef84b59f9bdcd3044fc28783144b7e42bfb2cd075e6a02cb082881565b6101c26103be36600461154d565b610ae0565b6101e76103d1366004611508565b610c7c565b6101c26103e4366004611521565b610cb1565b6101c26103f736600461154d565b610cd6565b6101e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101e7610431366004611508565b60009081526002602052604090206003015490565b6101c2610f28565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806104e157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104ef610fae565b6001600160a01b038316331461054c5760405162461bcd60e51b815260206004820152601b60248201527f6f6e6c79206f776e65722063616e20757064617465207374616b65000000000060448201526064015b60405180910390fd5b600354600090849065ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760405160609290921b6bffffffffffffffffffffffff1916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166034820152603c8101849052605c0160408051601f19818403018152918152815160209283012060008181526002909352912060040154909150829060ff16156106b957600082815260026020526040902060030154431161069a5760405162461bcd60e51b815260206004820152601860248201527f6f7665726c61792063757272656e746c792066726f7a656e00000000000000006044820152606401610543565b6000828152600260205260409020600101546106b69084611585565b90505b6003546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101859052680100000000000000009091046001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190611598565b6107a45760405162461bcd60e51b815260206004820152600f60248201527f6661696c6564207472616e7366657200000000000000000000000000000000006044820152606401610543565b604080518281526001600160a01b03871660208201524381830152905183917f61e979698346a2aa868a3a9f08d30c846174841dc9b074bbf2a82d20554bc682919081900360600190a26040805160a08101825283815260208082019384526001600160a01b039788168284019081524360608401908152600160808501818152600098895260029485905295909720935184559451958301959095559351938101805473ffffffffffffffffffffffffffffffffffffffff1916949097169390931790955551600382015592516004909301805460ff1916931515939093179092555050565b6000828152602081905260409020600101546108a681611001565b6108b0838361100e565b505050565b6001600160a01b03811633146109335760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610543565b61093d82826110ac565b5050565b3360009081527f10fa80d2e578284bf61a483a3da84fbdd683a7e7256a9895dc4461ac543f4a16602052604090205460ff166109e55760405162461bcd60e51b815260206004820152602360248201527f6f6e6c792072656469737472696275746f722063616e20667265657a6520737460448201527f616b6500000000000000000000000000000000000000000000000000000000006064820152608401610543565b60008281526002602052604090206004015460ff161561093d5760408051838152602081018390527f340439a63c1ee2404f5b7010cab559b4dcbfc28b8baab9acade354fd688ae2b9910160405180910390a1610a428143611585565b6000838152600260205260409020600301555050565b3360009081527ff7c9542c591017a21c74b6f3fab6263c7952fc0aaf9db4c22a2a04ddc7f8674f602052604090205460ff16610ad65760405162461bcd60e51b815260206004820152601560248201527f6f6e6c79207061757365722063616e20706175736500000000000000000000006044820152606401610543565b610ade61112b565b565b3360009081527f10fa80d2e578284bf61a483a3da84fbdd683a7e7256a9895dc4461ac543f4a16602052604090205460ff16610b845760405162461bcd60e51b815260206004820152602260248201527f6f6e6c792072656469737472696275746f722063616e20736c6173682073746160448201527f6b650000000000000000000000000000000000000000000000000000000000006064820152608401610543565b60408051838152602081018390527f0956b50d4d586f6b9c90800d4e713bd2b866e044decd047e6d70ea20314ab308910160405180910390a160008281526002602052604090206004015460ff161561093d57600082815260026020526040902060010154811015610c2e5760008281526002602052604081206001018054839290610c119084906115ba565b909155505050600090815260026020526040902043600390910155565b506000908152600260208190526040822082815560018101839055908101805473ffffffffffffffffffffffffffffffffffffffff191690556003810191909155600401805460ff19169055565b6000818152600260205260408120600301544311610c9b5760006104e1565b5060009081526002602052604090206001015490565b600082815260208190526040902060010154610ccc81611001565b6108b083836110ac565b610cde61117f565b600082815260026020819052604090912001546001600160a01b03163314610d485760405162461bcd60e51b815260206004820152601d60248201527f6f6e6c79206f776e65722063616e207769746864726177207374616b650000006044820152606401610543565b6000828152600260205260409020600101548190811115610d7757506000828152600260205260409020600101545b600083815260026020526040902060010154811015610e975760008381526002602052604081206001018054839290610db19084906115ba565b9091555050600083815260026020526040908190204360039182015554905163a9059cbb60e01b815233600482015260248101839052680100000000000000009091046001600160a01b03169063a9059cbb906044015b6020604051808303816000875af1158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b9190611598565b6108b05760405162461bcd60e51b815260206004820152601160248201527f6661696c6564207769746864726177616c0000000000000000000000000000006044820152606401610543565b600083815260026020819052604080832083815560018101849055918201805473ffffffffffffffffffffffffffffffffffffffff191690556003808301939093556004918201805460ff191690559154915163a9059cbb60e01b8152339181019190915260248101839052680100000000000000009091046001600160a01b03169063a9059cbb90604401610e08565b3360009081527ff7c9542c591017a21c74b6f3fab6263c7952fc0aaf9db4c22a2a04ddc7f8674f602052604090205460ff16610fa65760405162461bcd60e51b815260206004820152601760248201527f6f6e6c79207061757365722063616e20756e70617573650000000000000000006044820152606401610543565b610ade6111d1565b60015460ff1615610ade5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610543565b61100b813361120a565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661093d576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556110683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff161561093d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611133610fae565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b60015460ff16610ade5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610543565b6111d961117f565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611162565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661093d5761123b8161127d565b61124683602061128f565b6040516020016112579291906115f1565b60408051601f198184030181529082905262461bcd60e51b825261054391600401611672565b60606104e16001600160a01b03831660145b6060600061129e8360026116a5565b6112a9906002611585565b67ffffffffffffffff8111156112c1576112c16116bc565b6040519080825280601f01601f1916602001820160405280156112eb576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611322576113226116d2565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061136d5761136d6116d2565b60200101906001600160f81b031916908160001a90535060006113918460026116a5565b61139c906001611585565b90505b6001811115611421577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106113dd576113dd6116d2565b1a60f81b8282815181106113f3576113f36116d2565b60200101906001600160f81b031916908160001a90535060049490941c9361141a816116e8565b905061139f565b5083156114705760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610543565b9392505050565b60006020828403121561148957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461147057600080fd5b80356001600160a01b03811681146114d057600080fd5b919050565b6000806000606084860312156114ea57600080fd5b6114f3846114b9565b95602085013595506040909401359392505050565b60006020828403121561151a57600080fd5b5035919050565b6000806040838503121561153457600080fd5b82359150611544602084016114b9565b90509250929050565b6000806040838503121561156057600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808201808211156104e1576104e161156f565b6000602082840312156115aa57600080fd5b8151801515811461147057600080fd5b818103818111156104e1576104e161156f565b60005b838110156115e85781810151838201526020016115d0565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516116298160178501602088016115cd565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516116668160288401602088016115cd565b01602801949350505050565b60208152600082518060208401526116918160408501602087016115cd565b601f01601f19169190910160400192915050565b80820281158282048414176104e1576104e161156f565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816116f7576116f761156f565b50600019019056fea2646970667358221220f0b4144c19d5cae2a8320d2f02e01f15781028feac7155ffd9a95e43b9048f4564736f6c63430008130033 \ No newline at end of file +0x60a06040523480156200001157600080fd5b5060405162001ab438038062001ab483398101604081905262000034916200015a565b6001805460ff19169055600380546001600160a01b03808616608052831668010000000000000000026001600160e01b03199091166001600160401b03851617179055620000846000336200008d565b505050620001b2565b6200009982826200009d565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000099576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000f93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200015557600080fd5b919050565b6000806000606084860312156200017057600080fd5b6200017b846200013d565b60208501519093506001600160401b03811681146200019957600080fd5b9150620001a9604085016200013d565b90509250925092565b6080516118d1620001e36000396000818161029d0152818161051c015281816108c40152610a6801526118d16000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063830a053e116100e3578063d009b2d61161008c578063d547741f11610066578063d547741f14610405578063e8e8d87e14610418578063f7b188a51461042b57600080fd5b8063d009b2d6146103b3578063d1052d1f146103c6578063d48bfaeb146103f257600080fd5b806397adedb5116100bd57806397adedb51461035b578063a217fddf14610384578063a6471a1d1461038c57600080fd5b8063830a053e146103095780638456cb591461031c57806391d148541461032457600080fd5b80632f2ff15d116101455780635c975abb1161011f5780635c975abb146102d757806369da9114146102e25780636f1c5de71461030157600080fd5b80632f2ff15d1461027257806336568abe14610285578063420fc4db1461029857600080fd5b806312236a771161017657806312236a77146101e257806316934fc4146101ea578063248a9ca31461024157600080fd5b806301ffc9a71461019d5780630aed7b0d146101c557806310ae2147146101cf575b600080fd5b6101b06101ab36600461158f565b610433565b60405190151581526020015b60405180910390f35b6101cd6104cc565b005b6101cd6101dd3660046115d1565b6105d6565b6101cd6109eb565b6102216101f836600461160f565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b6040805194855260208501939093529183015260608201526080016101bc565b61026461024f36600461162a565b60009081526020819052604090206001015490565b6040519081526020016101bc565b6101cd610280366004611643565b610b39565b6101cd610293366004611643565b610b63565b6102bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bc565b60015460ff166101b0565b6003546102bf906801000000000000000090046001600160a01b031681565b610264610bf0565b61026461031736600461160f565b610c25565b6101cd610c7b565b6101b0610332366004611643565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61026461036936600461160f565b6001600160a01b031660009081526002602052604090205490565b610264600081565b6102647f3e35b14a9f4fef84b59f9bdcd3044fc28783144b7e42bfb2cd075e6a02cb082881565b6101cd6103c136600461166f565b610cd2565b6102646103d436600461160f565b6001600160a01b031660009081526002602052604090206003015490565b6101cd610400366004611699565b610dae565b6101cd610413366004611643565b610e3a565b6101cd61042636600461166f565b610e5f565b6101cd610fcb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806104c657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104d4611022565b33600090815260026020526040902060030154156105d457336000818152600260208190526040918290200154905163a9059cbb60e01b8152600481019290925260248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561056d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059191906116c3565b6105ae576040516312171d8360e31b815260040160405180910390fd5b336000908152600260208190526040822082815560018101839055908101829055600301555b565b6105de611074565b336000818152600260209081526040822080546003918201549154909491939265ff000000ff00600883811b91821664ff000000ff9490911c93841617601090811b67ff000000ff0000009290921666ff000000ff0000949094169390931790921c9190911780821b6bffffffffffffffff0000000016911c63ffffffff161760405160609290921b6bffffffffffffffffffffffff1916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166034820152603c8101869052605c016040516020818303038152906040528051906020012090506000600360089054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906116e5565b6107509063ffffffff1686611721565b905067016345785d8a000085108015610767575082155b1561079e576040517f8ecf3d0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906107bf5750336000908152600260205260409020600301544311155b156107f6576040517fa8cab3d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020526040812060010154610814908390611743565b3360009081526002602081905260408220015491925090610836908890611743565b604080516080810182528681526020808201868152828401858152436060850190815233600090815260029485905295909520935184559051600184015551908201559051600390910155905086156109a0576040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610915573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093991906116c3565b610956576040516312171d8360e31b815260040160405180910390fd5b604080518381526020810183905290810185905243606082015233907ff3fb57c8e9287d05c0b3c8612031896c43149edcf7ca6f1b287ac836b4b5d5699060800160405180910390a25b8386146109e15760408051338152602081018690527fe188baf4bcb1c4413d19ba0eaef908614d30e8df9570d6fc4d584b75f4a37a3a910160405180910390a15b5050505050505050565b336000908152600260208190526040822090810154600190910154909190610a1390836110c7565b610a1d9083611756565b90508015610b35573360009081526002602081905260408220018054839290610a47908490611756565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add91906116c3565b610afa576040516312171d8360e31b815260040160405180910390fd5b60408051338152602081018390527f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc91015b60405180910390a15b5050565b600082815260208190526040902060010154610b548161116b565b610b5e8383611178565b505050565b6001600160a01b0381163314610be65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610b358282611216565b336000908152600260208190526040822090810154600190910154610c1590826110c7565b610c1f9082611756565b91505090565b6001600160a01b0381166000908152600260205260408120600301544311610c4e5760006104c6565b6001600160a01b038216600090815260026020819052604090912060018101549101546104c691906110c7565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16610cca57604051631d77d47760e21b815260040160405180910390fd5b6105d4611295565b3360009081527f10fa80d2e578284bf61a483a3da84fbdd683a7e7256a9895dc4461ac543f4a16602052604090205460ff16610d2157604051630490edbf60e31b815260040160405180910390fd5b6001600160a01b03821660009081526002602052604090206003015415610b3557610d4c8143611743565b6001600160a01b038316600081815260026020908152604091829020600381019490945592548151928352928201929092529081018290527fd7863535575e7de6678ea9d340a4bfe0b84d77323bfa2ef602c3c1df82aea78090606001610b2c565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16610e16576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003805467ffffffffffffffff191667ffffffffffffffff92909216919091179055565b600082815260208190526040902060010154610e558161116b565b610b5e8383611216565b3360009081527f10fa80d2e578284bf61a483a3da84fbdd683a7e7256a9895dc4461ac543f4a16602052604090205460ff16610eae57604051630490edbf60e31b815260040160405180910390fd5b6001600160a01b03821660009081526002602052604090206003015415610f76576001600160a01b03821660009081526002602081905260409091200154811015610f47576001600160a01b03821660009081526002602081905260408220018054839290610f1e908490611756565b90915550506001600160a01b038216600090815260026020526040902043600390910155610f76565b6001600160a01b0382166000908152600260208190526040822082815560018101839055908101829055600301555b6001600160a01b0382166000818152600260209081526040918290205482519384529083015281018290527f5f52ce031e6eba64e8a81288196b93a3e422096e80aea812f1f5a77866359b3a90606001610b2c565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661101a57604051631d77d47760e21b815260040160405180910390fd5b6105d46112e9565b60015460ff166105d45760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bdd565b60015460ff16156105d45760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bdd565b600080600360089054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114191906116e5565b6111519063ffffffff1685611769565b9050828110156111625790506104c6565b829150506104c6565b6111758133611322565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610b35576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111d23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610b35576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61129d611074565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b6112f1611022565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336112cc565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610b355761135381611395565b61135e8360206113a7565b60405160200161136f9291906117a4565b60408051601f198184030181529082905262461bcd60e51b8252610bdd91600401611825565b60606104c66001600160a01b03831660145b606060006113b6836002611769565b6113c1906002611743565b67ffffffffffffffff8111156113d9576113d9611858565b6040519080825280601f01601f191660200182016040528015611403576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061143a5761143a61186e565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106114855761148561186e565b60200101906001600160f81b031916908160001a90535060006114a9846002611769565b6114b4906001611743565b90505b6001811115611539577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106114f5576114f561186e565b1a60f81b82828151811061150b5761150b61186e565b60200101906001600160f81b031916908160001a90535060049490941c9361153281611884565b90506114b7565b5083156115885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bdd565b9392505050565b6000602082840312156115a157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461158857600080fd5b600080604083850312156115e457600080fd5b50508035926020909101359150565b80356001600160a01b038116811461160a57600080fd5b919050565b60006020828403121561162157600080fd5b611588826115f3565b60006020828403121561163c57600080fd5b5035919050565b6000806040838503121561165657600080fd5b82359150611666602084016115f3565b90509250929050565b6000806040838503121561168257600080fd5b61168b836115f3565b946020939093013593505050565b6000602082840312156116ab57600080fd5b813567ffffffffffffffff8116811461158857600080fd5b6000602082840312156116d557600080fd5b8151801515811461158857600080fd5b6000602082840312156116f757600080fd5b815163ffffffff8116811461158857600080fd5b634e487b7160e01b600052601160045260246000fd5b60008261173e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104c6576104c661170b565b818103818111156104c6576104c661170b565b80820281158282048414176104c6576104c661170b565b60005b8381101561179b578181015183820152602001611783565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516117dc816017850160208801611780565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611819816028840160208801611780565b01602801949350505050565b6020815260008251806020840152611844816040850160208701611780565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816118935761189361170b565b50600019019056fea26469706673582212208bfe4c61da67ab0201caa241720a421db808c61d5820cfde14e7a06f558c7b1164736f6c63430008130033 \ No newline at end of file