0x60806040526418727cda006014553480156200001a57600080fd5b506040516020806200259d83398101604081815291518282018352600982527f47657420546f6b656e000000000000000000000000000000000000000000000060208084019182528451808601909552600385527f4745540000000000000000000000000000000000000000000000000000000000908501528251919391601291620000aa9160069190620001e4565b508151620000c0906007906020850190620001e4565b506008805460ff191660ff929092169190911761010060a860020a0319166101003381029190911791829055604051600160a060020a0391909204169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600160a060020a03811615156200013d57600080fd5b60108054600160a060020a031916600160a060020a03831617905561271060095562000193620001756401000000006200019d810204565b6009549060ff16600a0a64010000000062001d99620001a782021704565b6009555062000286565b60085460ff165b90565b600080831515620001bc5760009150620001dd565b50828202828482811515620001cd57fe5b0414620001d957600080fd5b8091505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022757805160ff191683800117855562000257565b8280016001018555821562000257579182015b82811115620002575782518255916020019190600101906200023a565b506200026592915062000269565b5090565b620001a491905b8082111562000265576000815560010162000270565b61230780620002966000396000f3006080604052600436106102195763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461026d578063095ea7b3146102f75780631244e1b61461032f57806318160ddd1461035a5780631a42ce6e1461038157806323b872dd1461039657806324954964146103c05780632e1a7d4d146103d5578063313ce567146103ef57806339509351146104045780633b6603fa1461042857806341d4a1ab1461043d5780634a3b68cc1461046e5780634c7a99011461048f57806352f1365c146104b05780635576c37a14610428578063585172e0146104c85780635fb1e75d146104dd5780635fe8e7cc146104f25780636c11bcd31461055757806370a082311461056f578063711953ef14610590578063715018a6146105b157806374a4f5ea146105c657806378a1cff6146105db57806383b4918b146105fc5780638da5cb5b146106145780638f32d59b1461062957806395d89b411461063e5780639677279514610653578063a035b1fe14610668578063a168d8731461067d578063a457c2d714610692578063a9059cbb146106b6578063aeddbfbf1461032f578063beb03eeb146106da578063d8806aa9146106fe578063dd62ed3e14610713578063ec8ac4d81461073a578063f2fde38b1461074e578063f979fcf61461076f578063fa7aaa6f14610790578063fc96b182146107a8578063fe784eaa146107bd575b600060143614156102615761025e6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506107d5945050505050565b90505b61026a816107dc565b50005b34801561027957600080fd5b506102826109dd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102bc5781810151838201526020016102a4565b50505050905090810190601f1680156102e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030357600080fd5b5061031b600160a060020a0360043516602435610a74565b604080519115158252519081900360200190f35b34801561033b57600080fd5b50610344610af2565b6040805160ff9092168252519081900360200190f35b34801561036657600080fd5b5061036f610af7565b60408051918252519081900360200190f35b34801561038d57600080fd5b5061036f610afd565b3480156103a257600080fd5b5061031b600160a060020a0360043581169060243516604435610b03565b3480156103cc57600080fd5b5061036f610bcc565b3480156103e157600080fd5b506103ed600435610bd5565b005b3480156103fb57600080fd5b50610344610c7d565b34801561041057600080fd5b5061031b600160a060020a0360043516602435610c86565b34801561043457600080fd5b50610344610d36565b34801561044957600080fd5b50610452610d3b565b60408051600160a060020a039092168252519081900360200190f35b34801561047a57600080fd5b50610452600160a060020a0360043516610d4a565b34801561049b57600080fd5b5061036f600160a060020a0360043516610d65565b3480156104bc57600080fd5b506103ed600435610d77565b3480156104d457600080fd5b5061036f610e18565b3480156104e957600080fd5b50610344610e25565b3480156104fe57600080fd5b50610507610e2a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561054357818101518382015260200161052b565b505050509050019250505060405180910390f35b34801561056357600080fd5b506103ed600435610e8b565b34801561057b57600080fd5b5061036f600160a060020a0360043516610f53565b34801561059c57600080fd5b506103ed600160a060020a0360043516610f6e565b3480156105bd57600080fd5b506103ed610fb0565b3480156105d257600080fd5b5061036f611020565b3480156105e757600080fd5b5061036f600160a060020a0360043516611026565b34801561060857600080fd5b506103ed600435611038565b34801561062057600080fd5b506104526110fa565b34801561063557600080fd5b5061031b61110e565b34801561064a57600080fd5b50610282611124565b34801561065f57600080fd5b5061036f611185565b34801561067457600080fd5b5061036f61118b565b34801561068957600080fd5b506104526111ab565b34801561069e57600080fd5b5061031b600160a060020a03600435166024356111ba565b3480156106c257600080fd5b5061031b600160a060020a0360043516602435611205565b3480156106e657600080fd5b5061031b600160a060020a036004351660243561121b565b34801561070a57600080fd5b506103446112be565b34801561071f57600080fd5b5061036f600160a060020a03600435811690602435166112c3565b6103ed600160a060020a03600435166107dc565b34801561075a57600080fd5b506103ed600160a060020a03600435166112ee565b34801561077b57600080fd5b5061036f600160a060020a036004351661130d565b34801561079c57600080fd5b506103ed60043561131f565b3480156107b457600080fd5b50610344611655565b3480156107c957600080fd5b506103ed60043561165a565b6014015190565b34336000806107eb8385611849565b9094509150610800348563ffffffff61187016565b905061080c838261188e565b600160a060020a03831660009081526005602052604090205460ff1615156108cd57600160a060020a03851615801590610858575082600160a060020a031685600160a060020a031614155b1561089957600160a060020a038381166000908152600d60205260409020805473ffffffffffffffffffffffffffffffffffffffff19169187169190911790555b6108a5838260016119d6565b600160a060020a0383166000908152600560205260409020805460ff191660011790556108d9565b6108d9838260006119d6565b600084111561091a57604051600160a060020a0384169085156108fc029086906000818181858888f19350505050158015610918573d6000803e3d6000fd5b505b6801158e460913d0000061092d84610f53565b1061098b57600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b604080518281526020810184905242818301529051600160a060020a038516917fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d919081900360600190a25050505050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b505050505090505b90565b6000600160a060020a0383161515610a8b57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600581565b60025490565b60095481565b600160a060020a0383166000908152600160209081526040808320338452909152812054610b37908363ffffffff61187016565b600160a060020a0385166000908152600160209081526040808320338452909152902055610b66848484611ba8565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6402540be40081565b60008111610be257600080fd5b336000908152600c6020526040902054610c02908263ffffffff61187016565b336000818152600c6020526040808220939093559151909183156108fc02918491818181858888f19350505050158015610c40573d6000803e3d6000fd5b5060408051828152426020820152815133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a250565b60085460ff1690565b6000600160a060020a0383161515610c9d57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610cd1908363ffffffff611d8016565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600a81565b601054600160a060020a031681565b600d60205260009081526040902054600160a060020a031681565b600c6020526000908152604090205481565b600354600160a060020a03163314610dff576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600b54610e12908263ffffffff611d8016565b600b5550565b6801158e460913d0000081565b600381565b60606004805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e64575050505050905090565b336000610eb582610eb0610e9d610c7d565b869060ff16600a0a63ffffffff611d9916565b611dc7565b610ebe83611e70565b9050610ec981611eff565b604051909150600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610f02573d6000803e3d6000fd5b50604080518281526020810185905242818301529051600160a060020a038416917f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0919081900360600190a2505050565b600160a060020a031660009081526020819052604090205490565b610f7661110e565b1515610f8157600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610fb861110e565b1515610fc357600080fd5b6008546040516000916101009004600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36008805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600a5481565b600f6020526000908152604090205481565b336000908152600c6020526040812054611058908363ffffffff61187016565b336000818152600c60205260409020919091556110759083611849565b909250905060008211156110b457336000908152600c60205260409020546110a3908363ffffffff611d8016565b336000908152600c60205260409020555b60408051838152602081018390524281830152905133917f5a1f3c64a894cbcee558ea14f59dd807692703df44b42f0c036588f149c8f7ba919081900360600190a25050565b6008546101009004600160a060020a031690565b6008546101009004600160a060020a0316331490565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b600b5481565b6014546000906111a69064012a05f20063ffffffff611d8016565b905090565b600354600160a060020a031681565b6000600160a060020a03831615156111d157600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610cd1908363ffffffff61187016565b6000611212338484611ba8565b50600192915050565b600354600090600160a060020a031633146112a6576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354611212908490600160a060020a031684611ba8565b600781565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6112f661110e565b151561130157600080fd5b61130a81611f33565b50565b600e6020526000908152604090205481565b60008060008061132d61110e565b151561133857600080fd5b601154151561134e57600a54601255600b546013555b6011546004548691611366919063ffffffff61187016565b1015611388576011546004546113819163ffffffff61187016565b935061138c565b8493505b600092505b8383101561163c576113c760046011548154811015156113ad57fe5b600091825260209091200154600160a060020a0316610f53565b91506801158e460913d00000821061161b576000905060006012541115611518576114136113f3610af7565b60125461140790859063ffffffff611d9916565b9063ffffffff611fbc16565b600a54909150611429908263ffffffff61187016565b600a5560115460048054909190811061143e57fe5b600091825260209182902001546040805184815242938101939093528051600160a060020a03909216927fef1e976166db53b30a787470328d9fa6af1e9f48d79ac68feffd5aee572907e5929081900390910190a26114dd81600c600060046011548154811015156114ac57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020549063ffffffff611d8016565b600c600060046011548154811015156114f257fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600060135411156116165761154261152e610af7565b60135461140790859063ffffffff611d9916565b600b54909150611558908263ffffffff61187016565b600b5560115460048054909190811061156d57fe5b600091825260209182902001546040805184815242938101939093528051600160a060020a03909216927f70a7d4f599a7990c82794b8874373b26a9261eb39f70a055cde8924e454d6948929081900390910190a26115db81600c600060046011548154811015156114ac57fe5b600c600060046011548154811015156115f057fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b611626565b611626601154611fdf565b6011805460019081019091559290920191611391565b600454601154141561164e5760006011555b5050505050565b600281565b600061166d82600a63ffffffff611fbc16565b600954909150611683908263ffffffff61187016565b81111561168f57600080fd5b601054604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b505050506040513d602081101561171e57600080fd5b50511015611776576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820626f6e757320746f6b656e732e0000000000000000604482015290519081900360640190fd5b601054604080517fa114398d000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a114398d9160448082019260009290919082900301818387803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b505060095461180e925090508263ffffffff61187016565b600955611838611829826402540be40063ffffffff611d9916565b6014549063ffffffff611d8016565b6014556118453382612098565b5050565b60008060008061185885612142565b915091506118668683612098565b9590945092505050565b6000808383111561188057600080fd5b5050808203805b5092915050565b600160a060020a0382166000908152600f602052604090205462015180429190910311156118d057600160a060020a0382166000908152600e60205260408120555b600160a060020a0382166000908152600e6020526040902054674563918244f4000090611903908363ffffffff611d8016565b111561197f576040805160e560020a62461bcd02815260206004820152602760248201527f496e766573746d656e74206c696d697420657863656564656420666f7220323460448201527f20686f7572732e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600e60205260409020546119a8908263ffffffff611d8016565b600160a060020a039092166000908152600e6020908152604080832094909455600f90529190912042905550565b600160a060020a038084166000908152600d60205260408120549091169080808315611b7d57611a12606461140788600363ffffffff611d9916565b604080518281524260208201528151929450600160a060020a038716927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0384166000908152600c6020526040902054611a83908363ffffffff611d8016565b600160a060020a0385166000908152600c60205260409020558415611b5f57611ab8606461140788600263ffffffff611d9916565b604080518281524260208201528151929350600160a060020a038a16927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0387166000908152600c6020526040902054611b29908263ffffffff611d8016565b600160a060020a0388166000908152600c6020526040902055611b58606461140788600563ffffffff611d9916565b9250611b78565b611b75606461140788600763ffffffff611d9916565b92505b611b96565b611b93606461140788600a63ffffffff611d9916565b92505b611b9f83612246565b50505050505050565b6000600160a060020a0383161515611bbf57600080fd5b600354600160a060020a03848116911614801590611beb5750600354600160a060020a03858116911614155b15611c2057611c0182606463ffffffff611fbc16565b9050611c0d8482611dc7565b611c1d828263ffffffff61187016565b91505b600354600160a060020a03848116911614801590611c545750600160a060020a038316600090815260208190526040902054155b8015611c6957506801158e460913d000008210155b15611cc757600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b600160a060020a038416600090815260208190526040902054611cf0908363ffffffff61187016565b600160a060020a038086166000908152602081905260408082209390935590851681522054611d25908363ffffffff611d8016565b600160a060020a038085166000818152602081815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600082820183811015611d9257600080fd5b9392505050565b600080831515611dac5760009150611887565b50828202828482811515611dbc57fe5b0414611d9257600080fd5b600160a060020a0382161515611ddc57600080fd5b600254611def908263ffffffff61187016565b600255600160a060020a038216600090815260208190526040902054611e1b908263ffffffff61187016565b600160a060020a038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600080808311611e7f57600080fd5b611ec9611eaa633b9aca00611e9e6002870a600563ffffffff611d9916565b9063ffffffff611d9916565b601454611ebd908663ffffffff611d9916565b9063ffffffff61187016565b9050611ef2611ee3846402540be40063ffffffff611d9916565b6014549063ffffffff61187016565b6014559050805b50919050565b600080611f18606461140785600563ffffffff611d9916565b9050611f2381612246565b611d92838263ffffffff61187016565b600160a060020a0381161515611f4857600080fd5b600854604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600080808311611fcb57600080fd5b8284811515611fd657fe5b04949350505050565b600480546000198101908110611ff157fe5b60009182526020909120015460048054600160a060020a03909216918390811061201757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560048054600019810190811061205f57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556004805490611845906000198301612294565b600160a060020a03821615156120ad57600080fd5b6002546120c0908263ffffffff611d8016565b600255600160a060020a0382166000908152602081905260409020546120ec908263ffffffff611d8016565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60145460009081908382808061217b61216b85611e9e64012a05f200600463ffffffff611d9916565b6002870a9063ffffffff611d8016565b92506121a361219664012a05f200600263ffffffff611d9916565b61140787611ebd8761225f565b9150600082116121b257600080fd5b6121fe6121f16121cd84601454611d9990919063ffffffff16565b6121e564012a05f2006002870a63ffffffff611d9916565b9063ffffffff611d8016565b899063ffffffff61187016565b9050612218611829836402540be40063ffffffff611d9916565b601455612239612226610c7d565b839060ff16600a0a63ffffffff611d9916565b9890975095505050505050565b600a54612259908263ffffffff611d8016565b600a5550565b80600260018201045b81811015611ef957809150600281828581151561228157fe5b040181151561228c57fe5b049050612268565b8154818355818111156122b8576000838152602090206122b89181019083016122bd565b505050565b610a7191905b808211156122d757600081556001016122c3565b50905600a165627a7a72305820c2b9c19d9133655288735d0c988a8be57679caa7eea06040600d6057f647928b002900000000000000000000000031c643c416368c988f2b8894684e419e260b174a