//
0x6101406040523480156200001257600080fd5b50604051806040016040528060058152602001644b4e4f574960d81b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060058152602001644b4e4f574960d81b815250604051806040016040528060058152602001644b4e4f574960d81b8152508160039080519060200190620000a0929190620001bf565b508051620000b6906004906020840190620001bf565b505050620000d3620000cd6200016960201b60201c565b6200016d565b815160209283012081519183019190912060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818801819052818301969096526060810194909452608080850193909352308483018190528151808603909301835260c0948501909152815191909501209052919091526101205250620002a1565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001cd9062000265565b90600052602060002090601f016020900481019282620001f157600085556200023c565b82601f106200020c57805160ff19168380011785556200023c565b828001600101855582156200023c579182015b828111156200023c5782518255916020019190600101906200021f565b506200024a9291506200024e565b5090565b5b808211156200024a57600081556001016200024f565b600181811c908216806200027a57607f821691505b6020821081036200029b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051611eb6620002f16000396000611055015260006110a40152600061107f01526000610fd8015260006110020152600061102c0152611eb66000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e146103e2578063f1127ed8146103f5578063f2fde38b14610432578063fca3b5aa1461044557600080fd5b8063a9059cbb146103a9578063c3cda520146103bc578063d505accf146103cf57600080fd5b80638e539e8c116100d35780638e539e8c1461036857806395d89b411461037b5780639ab24eb014610383578063a457c2d71461039657600080fd5b8063715018a61461033c5780637ecebe00146103445780638da5cb5b1461035757600080fd5b80633a46b1a811610166578063587cde1e11610140578063587cde1e146102ac5780635c19a95c146102d85780636fcfff45146102eb57806370a082311461031357600080fd5b80633a46b1a81461025957806340c10f191461026c578063425d49801461028157600080fd5b806323b872dd116101a257806323b872dd1461021c578063313ce5671461022f5780633644e5151461023e578063395093511461024657600080fd5b806306fdde03146101c9578063095ea7b3146101e757806318160ddd1461020a575b600080fd5b6101d1610458565b6040516101de9190611b33565b60405180910390f35b6101fa6101f5366004611ba4565b6104ea565b60405190151581526020016101de565b6002545b6040519081526020016101de565b6101fa61022a366004611bce565b610502565b604051601281526020016101de565b61020e610526565b6101fa610254366004611ba4565b610535565b61020e610267366004611ba4565b610557565b61027f61027a366004611ba4565b6105d6565b005b600b54610294906001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b6102946102ba366004611c0a565b6001600160a01b039081166000908152600860205260409020541690565b61027f6102e6366004611c0a565b610628565b6102fe6102f9366004611c0a565b610635565b60405163ffffffff90911681526020016101de565b61020e610321366004611c0a565b6001600160a01b031660009081526020819052604090205490565b61027f61065d565b61020e610352366004611c0a565b610693565b6005546001600160a01b0316610294565b61020e610376366004611c25565b6106b1565b6101d161070d565b61020e610391366004611c0a565b61071c565b6101fa6103a4366004611ba4565b6107a3565b6101fa6103b7366004611ba4565b61081e565b61027f6103ca366004611c4f565b61082c565b61027f6103dd366004611ca7565b610962565b61020e6103f0366004611d11565b610ac6565b610408610403366004611d44565b610af1565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101de565b61027f610440366004611c0a565b610b75565b61027f610453366004611c0a565b610c0d565b60606003805461046790611d84565b80601f016020809104026020016040519081016040528092919081815260200182805461049390611d84565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f8818585610c59565b5060019392505050565b600033610510858285610d7d565b61051b858585610df7565b506001949350505050565b6000610530610fcb565b905090565b6000336104f88185856105488383610ac6565b6105529190611dce565b610c59565b60004382106105ad5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b03831660009081526009602052604090206105cf90836110f2565b9392505050565b600b546001600160a01b0316331461061a5760405162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b60448201526064016105a4565b61062482826111af565b5050565b61063233826111b9565b50565b6001600160a01b03811660009081526009602052604081205461065790611232565b92915050565b6005546001600160a01b031633146106875760405162461bcd60e51b81526004016105a490611de6565b610691600061129b565b565b6001600160a01b038116600090815260066020526040812054610657565b60004382106107025760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016105a4565b610657600a836110f2565b60606004805461046790611d84565b6001600160a01b0381166000908152600960205260408120548015610790576001600160a01b038316600090815260096020526040902061075e600183611e1b565b8154811061076e5761076e611e32565b60009182526020909120015464010000000090046001600160e01b0316610793565b60005b6001600160e01b03169392505050565b600033816107b18286610ac6565b9050838110156108115760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105a4565b61051b8286868403610c59565b6000336104f8818585610df7565b8342111561087c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105a4565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108f6906108ee9060a001604051602081830303815290604052805190602001206112ed565b85858561133b565b905061090181611363565b861461094f5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105a4565b61095981886111b9565b50505050505050565b834211156109b25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105a4565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109e18c611363565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a3c826112ed565b90506000610a4c8287878761133b565b9050896001600160a01b0316816001600160a01b031614610aaf5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105a4565b610aba8a8a8a610c59565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020805463ffffffff8416908110610b3557610b35611e32565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6005546001600160a01b03163314610b9f5760405162461bcd60e51b81526004016105a490611de6565b6001600160a01b038116610c045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a4565b6106328161129b565b6005546001600160a01b03163314610c375760405162461bcd60e51b81526004016105a490611de6565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cbb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a4565b6001600160a01b038216610d1c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610d898484610ac6565b90506000198114610df15781811015610de45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a4565b610df18484848403610c59565b50505050565b6001600160a01b038316610e5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a4565b6001600160a01b038216610ebd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a4565b6001600160a01b03831660009081526020819052604090205481811015610f355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105a4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610f6c908490611dce565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fb891815260200190565b60405180910390a3610df1848484611390565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561102457507f000000000000000000000000000000000000000000000000000000000000000046145b1561104e57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b8181101561115657600061110d828461139b565b90508486828154811061112257611122611e32565b60009182526020909120015463ffffffff16111561114257809250611150565b61114d816001611dce565b91505b506110f9565b811561119a5784611168600184611e1b565b8154811061117857611178611e32565b60009182526020909120015464010000000090046001600160e01b031661119d565b60005b6001600160e01b031695945050505050565b61062482826113b6565b6001600160a01b038281166000818152600860208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610df1828483611440565b600063ffffffff8211156112975760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105a4565b5090565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006106576112fa610fcb565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061134c8787878761157d565b915091506113598161166a565b5095945050505050565b6001600160a01b03811660009081526006602052604090208054600181018255905b50919050565b505050565b61138b838383611820565b60006113aa6002848418611e48565b6105cf90848416611dce565b6113c08282611852565b6002546001600160e01b0310156114325760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105a4565b610df1600a61193983611945565b816001600160a01b0316836001600160a01b0316141580156114625750600081115b1561138b576001600160a01b038316156114f0576001600160a01b0383166000908152600960205260408120819061149d90611abe85611945565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114e5929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561138b576001600160a01b038216600090815260096020526040812081906115269061193985611945565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161156e929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115b45750600090506003611661565b8460ff16601b141580156115cc57508460ff16601c14155b156115dd5750600090506004611661565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611631573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661165a57600060019250925050611661565b9150600090505b94509492505050565b600081600481111561167e5761167e611e6a565b036116865750565b600181600481111561169a5761169a611e6a565b036116e75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105a4565b60028160048111156116fb576116fb611e6a565b036117485760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105a4565b600381600481111561175c5761175c611e6a565b036117b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105a4565b60048160048111156117c8576117c8611e6a565b036106325760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105a4565b6001600160a01b0383811660009081526008602052604080822054858416835291205461138b92918216911683611440565b6001600160a01b0382166118a85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105a4565b80600260008282546118ba9190611dce565b90915550506001600160a01b038216600090815260208190526040812080548392906118e7908490611dce565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361062460008383611390565b60006105cf8284611dce565b825460009081908015611990578561195e600183611e1b565b8154811061196e5761196e611e32565b60009182526020909120015464010000000090046001600160e01b0316611993565b60005b6001600160e01b031692506119ac83858763ffffffff16565b91506000811180156119ea575043866119c6600184611e1b565b815481106119d6576119d6611e32565b60009182526020909120015463ffffffff16145b15611a4a576119f882611aca565b86611a04600184611e1b565b81548110611a1457611a14611e32565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611ab5565b856040518060400160405280611a5f43611232565b63ffffffff168152602001611a7385611aca565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b60006105cf8284611e1b565b60006001600160e01b038211156112975760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105a4565b600060208083528351808285015260005b81811015611b6057858101830151858201604001528201611b44565b81811115611b72576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611b9f57600080fd5b919050565b60008060408385031215611bb757600080fd5b611bc083611b88565b946020939093013593505050565b600080600060608486031215611be357600080fd5b611bec84611b88565b9250611bfa60208501611b88565b9150604084013590509250925092565b600060208284031215611c1c57600080fd5b6105cf82611b88565b600060208284031215611c3757600080fd5b5035919050565b803560ff81168114611b9f57600080fd5b60008060008060008060c08789031215611c6857600080fd5b611c7187611b88565b95506020870135945060408701359350611c8d60608801611c3e565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611cc257600080fd5b611ccb88611b88565b9650611cd960208901611b88565b95506040880135945060608801359350611cf560808901611c3e565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611d2457600080fd5b611d2d83611b88565b9150611d3b60208401611b88565b90509250929050565b60008060408385031215611d5757600080fd5b611d6083611b88565b9150602083013563ffffffff81168114611d7957600080fd5b809150509250929050565b600181811c90821680611d9857607f821691505b60208210810361138557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611de157611de1611db8565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082821015611e2d57611e2d611db8565b500390565b634e487b7160e01b600052603260045260246000fd5b600082611e6557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea26469706673582212202c87ffeb4dd7b0e8cba6bcf46d3dcd2427d0bcfb9b3fb034d98390ebab8693e864736f6c634300080e0033