0x60806040526001805460c060020a60ff02191690553480156200002157600080fd5b5060008054600160a060020a031916331790556001805460a060020a63ffffffff02191690556040805180820190915260058082527f4d504c475200000000000000000000000000000000000000000000000000000060209092019182526200008d91600491620000ed565b5060408051808201909152600e8082527f506c656467652046696e616e63650000000000000000000000000000000000006020909201918252620000d491600591620000ed565b506006805460ff19166012179055600060075562000192565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013057805160ff191683800117855562000160565b8280016001018555821562000160579182015b828111156200016057825182559160200191906001019062000143565b506200016e92915062000172565b5090565b6200018f91905b808211156200016e576000815560010162000179565b90565b611d9f80620001a26000396000f3006080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b314610245578063179e91f11461027d5780631801c408146102b657806318160ddd146102cb57806323b872dd146102e05780632e82aaf21461030a5780632f6c493c14610328578063313ce567146103495780633eaaf86b146103745780633f4ba83a1461038957806342966c68146103a05780634b0ee02a146103b85780634cb5465f146103d95780635294d0e8146104035780635c975abb146104275780635ca48d8c1461043c57806370a082311461046057806371d66f001461048157806379ba5097146104a557806381fc4d90146104ba5780638456cb59146104d557806384aa2602146104ea578063893d20e81461051857806395d89b41146105495780639b03bea61461055e578063a0712d681461057f578063a9059cbb14610597578063a9dab167146105bb578063ab4a2eb3146105d6578063cae9ca51146105f7578063d71be8db14610660578063dd62ed3e146106a4578063dff96f8a146106cb578063f2fde38b146106ec575b600080fd5b3480156101c757600080fd5b506101d061070d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025157600080fd5b50610269600160a060020a03600435166024356107a3565b604080519115158252519081900360200190f35b34801561028957600080fd5b506102a4600160a060020a036004351660243560443561083a565b60408051918252519081900360200190f35b3480156102c257600080fd5b50610269610895565b3480156102d757600080fd5b506102a46108d6565b3480156102ec57600080fd5b50610269600160a060020a03600435811690602435166044356108dc565b34801561031657600080fd5b50610269600435602435604435610961565b34801561033457600080fd5b506102a4600160a060020a0360043516610bb4565b34801561035557600080fd5b5061035e610dd2565b6040805160ff9092168252519081900360200190f35b34801561038057600080fd5b506102a4610ddb565b34801561039557600080fd5b5061039e610de1565b005b3480156103ac57600080fd5b50610269600435610e5d565b3480156103c457600080fd5b506102a4600160a060020a0360043516610f19565b3480156103e557600080fd5b50610269600160a060020a0360043516602435604435606435610fa8565b34801561040f57600080fd5b506102a4600160a060020a03600435166024356111db565b34801561043357600080fd5b50610269611266565b34801561044857600080fd5b506102a4600160a060020a0360043516602435611276565b34801561046c57600080fd5b506102a4600160a060020a03600435166112cf565b34801561048d57600080fd5b506102a4600160a060020a0360043516602435611302565b3480156104b157600080fd5b5061039e611332565b3480156104c657600080fd5b506102696004356024356113f8565b3480156104e157600080fd5b5061039e611529565b3480156104f657600080fd5b506104ff6115aa565b6040805163ffffffff9092168252519081900360200190f35b34801561052457600080fd5b5061052d6115e7565b60408051600160a060020a039092168252519081900360200190f35b34801561055557600080fd5b506101d06115f6565b34801561056a57600080fd5b506102a4600160a060020a0360043516611657565b34801561058b57600080fd5b5061026960043561168a565b3480156105a357600080fd5b50610269600160a060020a0360043516602435611765565b3480156105c757600080fd5b5061026960043560243561178a565b3480156105e257600080fd5b506102a4600160a060020a03600435166118b7565b34801561060357600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610269948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119149650505050505050565b34801561066c57600080fd5b50610684600160a060020a0360043516602435611a6b565b604080519384526020840192909252151582820152519081900360600190f35b3480156106b057600080fd5b506102a4600160a060020a0360043581169060243516611a9a565b3480156106d757600080fd5b506102a4600160a060020a0360043516611af2565b3480156106f857600080fd5b5061039e600160a060020a0360043516611b25565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107995780601f1061076e57610100808354040283529160200191610799565b820191906000526020600020905b81548152906001019060200180831161077c57829003601f168201915b5050505050905090565b60015460009060c060020a900460ff16156107bd57600080fd5b600160a060020a03831615156107d257600080fd5b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600160a060020a038316600090815260036020908152604080832085845290915281206001015482101561088e5750600160a060020a03831660009081526003602090815260408083208584529091529020545b9392505050565b60008054600160a060020a03163314806108b95750600154600160a060020a031633145b15156108c457600080fd5b50600154600160a060020a0316151590565b60075490565b60015460009060c060020a900460ff16156108f657600080fd5b600160a060020a038416600090815260096020908152604080832033845290915290205461092a908363ffffffff611b9b16565b600160a060020a0385166000908152600960209081526040808320338452909152902055610959848484611bb0565b949350505050565b600154600090819060c060020a900460ff161561097d57600080fd5b61098d428463ffffffff611d1e16565b90506109993386611276565b60408051808201909152601581527f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000060208201529015610a5a5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a1f578181015183820152602001610a07565b50505050905090810190601f168015610a4c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601381527f416d6f756e742063616e206e6f742062652030000000000000000000000000006020820152841515610ae15760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a1f578181015183820152602001610a07565b503360009081526003602090815260408083208884529091529020541515610b2657336000908152600260209081526040822080546001810182559083529120018590555b610b303085611765565b50604080516060810182528581526020808201848152600083850181815233808352600385528683208c8452855291869020945185559151600185015590516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611d54833981519152928290030190a3506001949350505050565b6001546000908190819060c060020a900460ff1615610bd257600080fd5b5060005b600160a060020a038416600090815260026020526040902054811015610d2d57600160a060020a03841660009081526002602052604090208054610c3091869184908110610c2057fe5b90600052602060002001546111db565b91506000821115610d2557610c4b838363ffffffff611d1e16565b600160a060020a038516600090815260036020908152604080832060029092528220805493965060019391929185908110610c8257fe5b600091825260208083209190910154835282810193909352604091820181206002908101805460ff191695151595909517909455600160a060020a0388168152929091529020805482908110610cd457fe5b90600052602060002001546000191684600160a060020a03167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b600101610bd6565b6000831115610dcb57604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386166004820152602481018590529051309163a9059cbb9160448083019260209291908290030181600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b50505b5050919050565b60065460ff1690565b60075481565b600054600160a060020a03163314610df857600080fd5b60015460c060020a900460ff161515610e1057600080fd5b6001805478ff000000000000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60015460009060c060020a900460ff1615610e7757600080fd5b33600090815260086020526040902054821115610e9357600080fd5b33600090815260086020526040902054610eb3908363ffffffff611b9b16565b33600090815260086020526040902055600754610ed6908363ffffffff611b9b16565b60075560408051838152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001919050565b600080610f25836112cf565b9150600090505b600160a060020a038316600090815260026020526040902054811015610fa257600160a060020a03831660009081526002602052604090208054610f9891610f8b9186919085908110610f7b57fe5b9060005260206000200154611276565b839063ffffffff611d1e16565b9150600101610f2c565b50919050565b600154600090819060c060020a900460ff1615610fc457600080fd5b610fd4428463ffffffff611d1e16565b9050610fe08686611276565b60408051808201909152601581527f546f6b656e7320616c7265616479206c6f636b65640000000000000000000000602082015290156110655760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a1f578181015183820152602001610a07565b5060408051808201909152601381527f416d6f756e742063616e206e6f7420626520300000000000000000000000000060208201528415156110ec5760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a1f578181015183820152602001610a07565b50600160a060020a0386166000908152600360209081526040808320888452909152902054151561114357600160a060020a0386166000908152600260209081526040822080546001810182559083529120018590555b61114d3085611765565b506040805160608101825285815260208082018481526000838501818152600160a060020a038c16808352600385528683208c8452855291869020945185559151600185015590516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611d54833981519152928290030190a350600195945050505050565b600160a060020a038216600090815260036020908152604080832084845290915281206001015442108015906112385750600160a060020a038316600090815260036020908152604080832085845290915290206002015460ff16155b156108345750600160a060020a03919091166000908152600360209081526040808320938352929052205490565b60015460c060020a900460ff1681565b600160a060020a038216600090815260036020908152604080832084845290915281206002015460ff1615156108345750600160a060020a03919091166000908152600360209081526040808320938352929052205490565b6000600160a060020a03821615156112e657600080fd5b50600160a060020a031660009081526008602052604090205490565b60026020528160005260406000208181548110151561131d57fe5b90600052602060002001600091509150505481565b600154600160a060020a0316331461134957600080fd5b6001805460008054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161780845577ffffffffffffffffffffffffffffffffffffffffffffffff198516740100000000000000000000000000000000000000009390951683900463ffffffff9081168701169092029390931793849055604051938316939216917f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9190a3565b60015460009060c060020a900460ff161561141257600080fd5b600061141e3385611276565b60408051808201909152601081527f4e6f20746f6b656e73206c6f636b656400000000000000000000000000000000602082015291106114a35760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a1f578181015183820152602001610a07565b506114ae3083611765565b503360009081526003602090815260408083208684529091529020546114da908363ffffffff611d1e16565b3360008181526003602090815260408083208884528252918290208481556001015482519485529084015280518693600080516020611d5483398151915292908290030190a350600192915050565b600054600160a060020a0316331461154057600080fd5b60015460c060020a900460ff161561155757600080fd5b6001805478ff000000000000000000000000000000000000000000000000191660c060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60008054600160a060020a031633146115c257600080fd5b5060015474010000000000000000000000000000000000000000900463ffffffff1690565b600054600160a060020a031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107995780601f1061076e57610100808354040283529160200191610799565b6000600160a060020a038216151561166e57600080fd5b50600160a060020a03166000908152600a602052604090205490565b600080548190600160a060020a031633146116a457600080fd5b50600754600654908301906116ca90633b9aca009060ff16600a0a63ffffffff611d2e16565b8111156116d657600080fd5b600781905560008054600160a060020a0316815260086020526040902054611704908463ffffffff611d1e16565b60008054600160a060020a039081168252600860209081526040808420949094558254845188815294519216937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350600192915050565b60015460009060c060020a900460ff161561177f57600080fd5b61088e338484611bb0565b60015460009060c060020a900460ff16156117a457600080fd5b60006117b03385611276565b60408051808201909152601081527f4e6f20746f6b656e73206c6f636b656400000000000000000000000000000000602082015291106118355760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a1f578181015183820152602001610a07565b50336000908152600360209081526040808320868452909152902060010154611864908363ffffffff611d1e16565b336000818152600360209081526040808320888452825291829020600181018590555482519081529081019390935280518693600080516020611d5483398151915292908290030190a350600192915050565b6000805b600160a060020a038316600090815260026020526040902054811015610fa257600160a060020a0383166000908152600260205260409020805461190a91610f8b9186919085908110610c2057fe5b91506001016118bb565b60015460009060c060020a900460ff161561192e57600080fd5b61193884846107a3565b15611a61576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b838110156119d05781810151838201526020016119b8565b50505050905090810190601f1680156119fd5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050506040513d6020811015611a4957600080fd5b50511515600114611a5957600080fd5b50600161088e565b5060009392505050565b600360209081526000928352604080842090915290825290208054600182015460029092015490919060ff1683565b6000600160a060020a0383161515611ab157600080fd5b600160a060020a0382161515611ac657600080fd5b50600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b6000600160a060020a0382161515611b0957600080fd5b50600160a060020a03166000908152600b602052604090205490565b600054600160a060020a03163314611b3c57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560405191169033907fca52a3681f06ce20104319163b088f8216f3395aa9408c1ad860d48363494e2490600090a350565b600082821115611baa57600080fd5b50900390565b6000600160a060020a0383161515611bc757600080fd5b600160a060020a038416600090815260086020526040902054821115611bec57600080fd5b600160a060020a038416600090815260086020526040902054611c15908363ffffffff611b9b16565b600160a060020a038086166000908152600860205260408082209390935590851681522054611c4a908363ffffffff611d1e16565b600160a060020a038416600090815260086020908152604080832093909355600a90522054611c7f908363ffffffff611d1e16565b600160a060020a038085166000908152600a60209081526040808320949094559187168152600b9091522054611cbb908363ffffffff611d1e16565b600160a060020a038086166000818152600b602090815260409182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b8181018281101561083457600080fd5b818102821580611d485750818382811515611d4557fe5b04145b151561083457600080fd00ea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdda165627a7a72305820d3713e672c4f4ff9c2cd03557d4709a4c2ecf7419a015698fce6b36da6446e600029