60e06040526000600455600060055534801561001a57600080fd5b5060405161263f38038061263f8339818101604052606081101561003d57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050818073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505060006100ab61019160201b60201c565b905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508060c08181525050505050610199565b600033905090565b60805160601c60a05160601c60c0516124516101ee600039806108bb5280610c615280610cd15280610d26525080610edb528061185452508061114852806112ab5280611ad75280611d4552506124516000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c80637b0a47ee116100de578063c8f33c9111610097578063e9fad8ee11610071578063e9fad8ee1461060c578063ebe2b12b14610616578063f2fde38b14610634578063f7c618c11461067857610172565b8063c8f33c91146105b2578063cd3daf9d146105d0578063df136d65146105ee57610172565b80637b0a47ee146103d757806380faa57d146103f55780638b876347146104135780638da5cb5b1461046b578063a4c0ed361461049f578063a694fc3a1461058457610172565b80632e1a7d4d116101305780632e1a7d4d146102db5780633c6b16ab146103095780633d18b9121461033757806370a0823114610341578063715018a61461039957806372f702f3146103a357610172565b80628cc262146101775780630700037d146101cf5780630d68b761146102275780630fb5a6b41461026b578063101114cf1461028957806318160ddd146102bd575b600080fd5b6101b96004803603602081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106ac565b6040518082815260200191505060405180910390f35b610211600480360360208110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610793565b6040518082815260200191505060405180910390f35b6102696004803603602081101561023d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107ab565b005b6102736108b9565b6040518082815260200191505060405180910390f35b6102916108dd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c5610903565b6040518082815260200191505060405180910390f35b610307600480360360208110156102f157600080fd5b810190808035906020019092919050505061090c565b005b6103356004803603602081101561031f57600080fd5b8101908080359060200190929190505050610ac1565b005b61033f610d95565b005b6103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f72565b6040518082815260200191505060405180910390f35b6103a1610fbb565b005b6103ab611146565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103df61116a565b6040518082815260200191505060405180910390f35b6103fd611170565b6040518082815260200191505060405180910390f35b6104556004803603602081101561042957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611183565b6040518082815260200191505060405180910390f35b61047361119b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610582600480360360608110156104b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104fc57600080fd5b82018360208201111561050e57600080fd5b8035906020019184600183028401116401000000008311171561053057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111c5565b005b6105b06004803603602081101561059a57600080fd5b81019080803590602001909291905050506113c8565b005b6105ba61157d565b6040518082815260200191505060405180910390f35b6105d8611583565b6040518082815260200191505060405180910390f35b6105f661161b565b6040518082815260200191505060405180910390f35b610614611621565b005b61061e61163c565b6040518082815260200191505060405180910390f35b6106766004803603602081101561064a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611642565b005b610680611852565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600061078c600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461077e670de0b6b3a7640000610770610759600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461074b611583565b61187690919063ffffffff16565b61076288610f72565b6118c090919063ffffffff16565b61194690919063ffffffff16565b61199090919063ffffffff16565b9050919050565b60096020528060005260406000206000915090505481565b6107b3611a18565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054905090565b33610915611583565b600781905550610923611170565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109f057610966816106ac565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211610a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b610a6f82611a20565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b02611a18565b73ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806123d16021913960400191505060405180910390fd5b6000610b78611583565b600781905550610b86611170565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c5357610bc9816106ac565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6004544210610c9a57610c8f7f00000000000000000000000000000000000000000000000000000000000000008361194690919063ffffffff16565b600581905550610d1a565b6000610cb14260045461187690919063ffffffff16565b90506000610cca600554836118c090919063ffffffff16565b9050610d117f0000000000000000000000000000000000000000000000000000000000000000610d03838761199090919063ffffffff16565b61194690919063ffffffff16565b60058190555050505b42600681905550610d547f00000000000000000000000000000000000000000000000000000000000000004261199090919063ffffffff16565b6004819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15050565b33610d9e611583565b600781905550610dac611170565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e7957610def816106ac565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000610e84336106ac565b90506000811115610f6e576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f1f33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611b1e9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc3611a18565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60055481565b600061117e42600454611bc0565b905090565b60086020528060005260406000206000915090505481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b826111ce611583565b6007819055506111dc611170565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112a95761121f816106ac565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f217374616b696e67546f6b656e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6113748484611bd9565b8373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a250505050565b336113d1611583565b6007819055506113df611170565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114ac57611422816106ac565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b61152b82611c8d565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60065481565b60008061158e610903565b141561159e576007549050611618565b6116156116046115ac610903565b6115f6670de0b6b3a76400006115e86005546115da6006546115cc611170565b61187690919063ffffffff16565b6118c090919063ffffffff16565b6118c090919063ffffffff16565b61194690919063ffffffff16565b60075461199090919063ffffffff16565b90505b90565b60075481565b61163261162d33610f72565b61090c565b61163a610d95565b565b60045481565b61164a611a18565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611792576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806123646026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006118b883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8d565b905092915050565b6000808314156118d35760009050611940565b60008284029050828482816118e457fe5b041461193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806123b06021913960400191505060405180910390fd5b809150505b92915050565b600061198883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e4d565b905092915050565b600080828401905083811015611a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b611a358160005461187690919063ffffffff16565b600081905550611a8d81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b1b33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611b1e9092919063ffffffff16565b50565b611bbb8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f13565b505050565b6000818310611bcf5781611bd1565b825b905092915050565b611bee8160005461199090919063ffffffff16565b600081905550611c4681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199090919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611ca28160005461199090919063ffffffff16565b600081905550611cfa81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461199090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8a3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612002909392919063ffffffff16565b50565b6000838311158290611e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dff578082015181840152602081019050611de4565b50505050905090810190601f168015611e2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611ef9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ebe578082015181840152602081019050611ea3565b50505050905090810190601f168015611eeb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0557fe5b049050809150509392505050565b6060611f75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120c39092919063ffffffff16565b9050600081511115611ffd57808060200190516020811015611f9657600080fd5b8101908080519060200190929190505050611ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806123f2602a913960400191505060405180910390fd5b5b505050565b6120bd846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f13565b50505050565b60606120d284846000856120db565b90509392505050565b606082471015612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061238a6026913960400191505060405180910390fd5b61213f85612284565b6121b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061220157805182526020820191506020810190506020830392506121de565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612263576040519150601f19603f3d011682016040523d82523d6000602084013e612268565b606091505b5091509150612278828286612297565b92505050949350505050565b600080823b905060008111915050919050565b606083156122a75782905061235c565b6000835111156122ba5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612321578082015181840152602081019050612306565b50505050905090810190601f16801561234e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a727dc1c76184231f41bd8a918df513f3f749ab9f38a9276cdea37864b11ac3464736f6c634300060c0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000aaca86b876ca011844b5798eca7a67591a9743c80000000000000000000000000000000000000000000000000000000000488280