Loading
6080604052600e805460ff1916905561014060105566470de4df8200006011553480156200002c57600080fd5b5060405162002d3e38038062002d3e8339810160408190526200004f9162000276565b8351849084906200006890600090602085019062000125565b5080516200007e90600190602084019062000125565b505050620000ad6200009e620000cf640100000000026401000000009004565b640100000000620000d3810204565b600d829055620000c18162093a80620002ed565b600f5550620003b092505050565b3390565b600a8054600160a060020a03838116600160a060020a0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000133906200032b565b90600052602060002090601f016020900481019282620001575760008555620001a2565b82601f106200017257805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a257825182559160200191906001019062000185565b50620001b0929150620001b4565b5090565b5b80821115620001b05760008155600101620001b5565b600082601f830112620001dc578081fd5b81516001604060020a0380821115620001f957620001f962000381565b6040516020601f8401601f191682018101838111838210171562000221576200022162000381565b604052838252858401810187101562000238578485fd5b8492505b838310156200025b57858301810151828401820152918201916200023c565b838311156200026c57848185840101525b5095945050505050565b600080600080608085870312156200028c578384fd5b84516001604060020a0380821115620002a3578586fd5b620002b188838901620001cb565b95506020870151915080821115620002c7578485fd5b50620002d687828801620001cb565b604087015160609097015195989097509350505050565b6000821982111562000326577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b6002810460018216806200034057607f821691505b602082108114156200037b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61297e80620003c06000396000f3fe608060405260043610610221576000357c010000000000000000000000000000000000000000000000000000000090048063715018a611610135578063b88d4fde116100bd578063e36d64981161008c578063e36d649814610589578063e985e9c51461059e578063e9866550146105be578063eb8d2444146105d3578063f2fde38b146105e857610221565b8063b88d4fde14610514578063c87b56dd14610534578063cb774d4714610554578063d031370b1461056957610221565b806391b7f5ed1161010457806391b7f5ed1461049557806395d89b41146104b5578063977b055b146104ca57806398d5fdca146104df578063a22cb465146104f457610221565b8063715018a6146104435780637d17fcbe1461045857806384d31e7a1461046d5780638da5cb5b1461048057610221565b80632f745c59116101b85780634f6ccce7116101875780634f6ccce7146103ae57806355f804b3146103ce5780636352211e146103ee5780636dd9a49d1461040e57806370a082311461042357610221565b80632f745c591461034457806334918dfd146103645780633ccfd60b1461037957806342842e0e1461038e57610221565b8063095ea7b3116101f4578063095ea7b3146102cd57806318160ddd146102ed57806318e20a381461030f57806323b872dd1461032457610221565b8063018a2c371461022657806301ffc9a71461024857806306fdde031461027e578063081812fc146102a0575b600080fd5b34801561023257600080fd5b50610246610241366004611ede565b610608565b005b34801561025457600080fd5b50610268610263366004611e60565b610658565b6040516102759190611fa1565b60405180910390f35b34801561028a57600080fd5b5061029361066b565b6040516102759190611fac565b3480156102ac57600080fd5b506102c06102bb366004611ede565b6106fd565b6040516102759190611f51565b3480156102d957600080fd5b506102466102e8366004611e37565b610743565b3480156102f957600080fd5b506103026107e1565b604051610275919061279e565b34801561031b57600080fd5b506103026107e7565b34801561033057600080fd5b5061024661033f366004611d49565b6107ed565b34801561035057600080fd5b5061030261035f366004611e37565b610828565b34801561037057600080fd5b5061024661087d565b34801561038557600080fd5b506102466108d3565b34801561039a57600080fd5b506102466103a9366004611d49565b610949565b3480156103ba57600080fd5b506103026103c9366004611ede565b610964565b3480156103da57600080fd5b506102466103e9366004611e98565b6109c9565b3480156103fa57600080fd5b506102c0610409366004611ede565b610a1e565b34801561041a57600080fd5b50610302610a56565b34801561042f57600080fd5b5061030261043e366004611cfd565b610a5c565b34801561044f57600080fd5b50610246610aa3565b34801561046457600080fd5b50610246610af1565b61024661047b366004611ede565b610b5c565b34801561048c57600080fd5b506102c0610c82565b3480156104a157600080fd5b506102466104b0366004611ede565b610c91565b3480156104c157600080fd5b50610293610cd8565b3480156104d657600080fd5b50610302610ce7565b3480156104eb57600080fd5b50610302610cec565b34801561050057600080fd5b5061024661050f366004611dfd565b610cf2565b34801561052057600080fd5b5061024661052f366004611d84565b610dc3565b34801561054057600080fd5b5061029361054f366004611ede565b610e05565b34801561056057600080fd5b50610302610e8b565b34801561057557600080fd5b50610246610584366004611ede565b610e91565b34801561059557600080fd5b50610302610f50565b3480156105aa57600080fd5b506102686105b9366004611d17565b610f56565b3480156105ca57600080fd5b50610246610f84565b3480156105df57600080fd5b5061026861102b565b3480156105f457600080fd5b50610246610603366004611cfd565b611034565b6106106110a8565b600160a060020a0316610621610c82565b600160a060020a0316146106535760405160e560020a62461bcd02815260040161064a90612472565b60405180910390fd5b600f55565b6000610663826110ac565b90505b919050565b60606000805461067a90612835565b80601f01602080910402602001604051908101604052809291908181526020018280546106a690612835565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b6000610708826110ff565b6107275760405160e560020a62461bcd02815260040161064a90612415565b50600090815260046020526040902054600160a060020a031690565b600061074e82610a1e565b905080600160a060020a031683600160a060020a031614156107855760405160e560020a62461bcd02815260040161064a90612598565b80600160a060020a03166107976110a8565b600160a060020a031614806107b357506107b3816105b96110a8565b6107d25760405160e560020a62461bcd02815260040161064a906122c9565b6107dc838361111c565b505050565b60085490565b600f5481565b6107fe6107f86110a8565b82611197565b61081d5760405160e560020a62461bcd02815260040161064a9061262a565b6107dc83838361121f565b600061083383610a5c565b82106108545760405160e560020a62461bcd02815260040161064a90611fbf565b50600160a060020a03919091166000908152600660209081526040808320938352929052205490565b6108856110a8565b600160a060020a0316610896610c82565b600160a060020a0316146108bf5760405160e560020a62461bcd02815260040161064a90612472565b600e805460ff19811660ff90911615179055565b6108db6110a8565b600160a060020a03166108ec610c82565b600160a060020a0316146109155760405160e560020a62461bcd02815260040161064a90612472565b604051303190339082156108fc029083906000818181858888f19350505050158015610945573d6000803e3d6000fd5b5050565b6107dc83838360405180602001604052806000815250610dc3565b600061096e6107e1565b821061098f5760405160e560020a62461bcd02815260040161064a90612687565b600882815481106109b757600080516020612929833981519152600052603260045260246000fd5b90600052602060002001549050919050565b6109d16110a8565b600160a060020a03166109e2610c82565b600160a060020a031614610a0b5760405160e560020a62461bcd02815260040161064a90612472565b8051610945906012906020840190611bdd565b600081815260026020526040812054600160a060020a0316806106635760405160e560020a62461bcd02815260040161064a90612383565b600d5481565b6000600160a060020a038216610a875760405160e560020a62461bcd02815260040161064a90612326565b50600160a060020a031660009081526003602052604090205490565b610aab6110a8565b600160a060020a0316610abc610c82565b600160a060020a031614610ae55760405160e560020a62461bcd02815260040161064a90612472565b610aef600061135f565b565b610af96110a8565b600160a060020a0316610b0a610c82565b600160a060020a031614610b335760405160e560020a62461bcd02815260040161064a90612472565b600c5415610b565760405160e560020a62461bcd02815260040161064a90612292565b43600b55565b600e5460ff16610b815760405160e560020a62461bcd02815260040161064a90612235565b600a811115610ba55760405160e560020a62461bcd02815260040161064a90612741565b600d54610bba82610bb46107e1565b906113be565b1115610bdb5760405160e560020a62461bcd02815260040161064a906126e4565b6011543490610bea90836113ca565b1115610c0b5760405160e560020a62461bcd02815260040161064a906121a1565b60005b81811015610c50576000610c206107e1565b9050600d54610c2d6107e1565b1015610c3d57610c3d33826113d6565b5080610c4881612877565b915050610c0e565b50600b54158015610c755750600d54610c676107e1565b1480610c755750600f544210155b15610c7f5743600b555b50565b600a54600160a060020a031690565b610c996110a8565b600160a060020a0316610caa610c82565b600160a060020a031614610cd35760405160e560020a62461bcd02815260040161064a90612472565b601155565b60606001805461067a90612835565b600a81565b60115490565b610cfa6110a8565b600160a060020a031682600160a060020a03161415610d2e5760405160e560020a62461bcd02815260040161064a9061216a565b8060056000610d3b6110a8565b600160a060020a03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610d7f6110a8565b600160a060020a03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610db79190611fa1565b60405180910390a35050565b610dd4610dce6110a8565b83611197565b610df35760405160e560020a62461bcd02815260040161064a9061262a565b610dff848484846113f0565b50505050565b6060610e10826110ff565b610e2f5760405160e560020a62461bcd02815260040161064a9061253b565b6000610e39611426565b90506000815111610e595760405180602001604052806000815250610e84565b80610e6384611435565b604051602001610e74929190611f22565b6040516020818303038152906040525b9392505050565b600c5481565b610e996110a8565b600160a060020a0316610eaa610c82565b600160a060020a031614610ed35760405160e560020a62461bcd02815260040161064a90612472565b601054811115610ef85760405160e560020a62461bcd02815260040161064a90612504565b6000610f026107e1565b905060005b82811015610f3457610f2233610f1d83856127a7565b6113d6565b80610f2c81612877565b915050610f07565b508160106000828254610f4791906127f2565b90915550505050565b600b5481565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600c5415610fa75760405160e560020a62461bcd02815260040161064a90612292565b600b54610fc95760405160e560020a62461bcd02815260040161064a906125f5565b600d54600b54610fda919040612892565b600c55600b5460ff90610fee9043906115b1565b111561101157600d546110026001436127f2565b61100d919040612892565b600c555b600c54610aef57600c546110269060016113be565b600c55565b600e5460ff1681565b61103c6110a8565b600160a060020a031661104d610c82565b600160a060020a0316146110765760405160e560020a62461bcd02815260040161064a90612472565b600160a060020a03811661109f5760405160e560020a62461bcd02815260040161064a90612079565b610c7f8161135f565b3390565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1982167f780e9d630000000000000000000000000000000000000000000000000000000014806106635750610663826115bd565b600090815260026020526040902054600160a060020a0316151590565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416908117909155819061115e82610a1e565b600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111a2826110ff565b6111c15760405160e560020a62461bcd02815260040161064a906121d8565b60006111cc83610a1e565b905080600160a060020a031684600160a060020a03161480611207575083600160a060020a03166111fc846106fd565b600160a060020a0316145b8061121757506112178185610f56565b949350505050565b82600160a060020a031661123282610a1e565b600160a060020a03161461125b5760405160e560020a62461bcd02815260040161064a906124a7565b600160a060020a0382166112845760405160e560020a62461bcd02815260040161064a9061210d565b61128f838383611659565b61129a60008261111c565b600160a060020a03831660009081526003602052604081208054600192906112c39084906127f2565b9091555050600160a060020a03821660009081526003602052604081208054600192906112f19084906127a7565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a8054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610e8482846127a7565b6000610e8482846127d3565b610945828260405180602001604052806000815250611664565b6113fb84848461121f565b6114078484848461169a565b610dff5760405160e560020a62461bcd02815260040161064a9061201c565b60606012805461067a90612835565b606081611476575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610666565b8160005b81156114a0578061148a81612877565b91506114999050600a836127bf565b915061147a565b60008167ffffffffffffffff8111156114d057600080516020612929833981519152600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114fa576020820181803683370190505b5090505b84156112175761150f6001836127f2565b915061151c600a86612892565b6115279060306127a7565b7f01000000000000000000000000000000000000000000000000000000000000000281838151811061157057600080516020612929833981519152600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506115aa600a866127bf565b94506114fe565b6000610e8482846127f2565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061164a57507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610663575061066382611802565b6107dc838383611849565b61166e83836118d2565b61167b600084848461169a565b6107dc5760405160e560020a62461bcd02815260040161064a9061201c565b60006116ae84600160a060020a03166119c4565b156117f75783600160a060020a031663150b7a026116ca6110a8565b8786866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016117089493929190611f65565b602060405180830381600087803b15801561172257600080fd5b505af1925050508015611752575060408051601f3d908101601f1916820190925261174f91810190611e7c565b60015b6117af573d808015611780576040519150601f19603f3d011682016040523d82523d6000602084013e611785565b606091505b5080516117a75760405160e560020a62461bcd02815260040161064a9061201c565b805181602001fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f150b7a0200000000000000000000000000000000000000000000000000000000149050611217565b506001949350505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b6118548383836107dc565b600160a060020a0383166118705761186b816119ca565b611893565b81600160a060020a031683600160a060020a031614611893576118938382611a0e565b600160a060020a0382166118af576118aa81611aab565b6107dc565b82600160a060020a031682600160a060020a0316146107dc576107dc8282611b99565b600160a060020a0382166118fb5760405160e560020a62461bcd02815260040161064a906123e0565b611904816110ff565b156119245760405160e560020a62461bcd02815260040161064a906120d6565b61193060008383611659565b600160a060020a03821660009081526003602052604081208054600192906119599084906127a7565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b60006001611a1b84610a5c565b611a2591906127f2565b600083815260076020526040902054909150808214611a7857600160a060020a03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b506000918252600760209081526040808420849055600160a060020a039094168352600681528383209183525290812055565b600854600090611abd906001906127f2565b60008381526009602052604081205460088054939450909284908110611afa57600080516020612929833981519152600052603260045260246000fd5b906000526020600020015490508060088381548110611b3057600080516020612929833981519152600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611b7d57600080516020612929833981519152600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611ba483610a5c565b600160a060020a039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054611be990612835565b90600052602060002090601f016020900481019282611c0b5760008555611c51565b82601f10611c2457805160ff1916838001178555611c51565b82800160010185558215611c51579182015b82811115611c51578251825591602001919060010190611c36565b50611c5d929150611c61565b5090565b5b80821115611c5d5760008155600101611c62565b600067ffffffffffffffff80841115611c9157611c916128e0565b604051601f8501601f191681016020018281118282101715611cb557611cb56128e0565b604052848152915081838501861015611ccd57600080fd5b8484602083013760006020868301015250509392505050565b8035600160a060020a038116811461066657600080fd5b600060208284031215611d0e578081fd5b610e8482611ce6565b60008060408385031215611d29578081fd5b611d3283611ce6565b9150611d4060208401611ce6565b90509250929050565b600080600060608486031215611d5d578081fd5b611d6684611ce6565b9250611d7460208501611ce6565b9150604084013590509250925092565b60008060008060808587031215611d99578081fd5b611da285611ce6565b9350611db060208601611ce6565b925060408501359150606085013567ffffffffffffffff811115611dd2578182fd5b8501601f81018713611de2578182fd5b611df187823560208401611c76565b91505092959194509250565b60008060408385031215611e0f578182fd5b611e1883611ce6565b915060208301358015158114611e2c578182fd5b809150509250929050565b60008060408385031215611e49578182fd5b611e5283611ce6565b946020939093013593505050565b600060208284031215611e71578081fd5b8135610e84816128fd565b600060208284031215611e8d578081fd5b8151610e84816128fd565b600060208284031215611ea9578081fd5b813567ffffffffffffffff811115611ebf578182fd5b8201601f81018413611ecf578182fd5b61121784823560208401611c76565b600060208284031215611eef578081fd5b5035919050565b60008151808452611f0e816020860160208601612809565b601f01601f19169290920160200192915050565b60008351611f34818460208801612809565b835190830190611f48818360208801612809565b01949350505050565b600160a060020a0391909116815260200190565b6000600160a060020a03808716835280861660208401525083604083015260806060830152611f976080830184611ef6565b9695505050505050565b901515815260200190565b600060208252610e846020830184611ef6565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201527f74206f6620626f756e6473000000000000000000000000000000000000000000606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252601f908201527f45746865722076616c75652073656e74206973206e6f7420636f727265637400604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f53616c65206d7573742062652061637469766520746f206d696e742061204b6960408201527f7474792042757474000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f5374617274696e6720696e64657820697320616c726561647920736574000000604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f52657365727665206c696d697420726561636865640000000000000000000000604082015260600190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560408201527f7200000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f5374617274696e6720696e64657820626c6f636b206d75737420626520736574604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60408201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201527f7574206f6620626f756e64730000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f507572636861736520776f756c6420657863656564206d617820737570706c7960408201527f206f66204b697474792042757474730000000000000000000000000000000000606082015260800190565b60208082526021908201527f43616e206f6e6c79206d696e7420313020746f6b656e7320617420612074696d60408201527f6500000000000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b600082198211156127ba576127ba6128a6565b500190565b6000826127ce576127ce6128c3565b500490565b60008160001904831182151516156127ed576127ed6128a6565b500290565b600082821015612804576128046128a6565b500390565b60005b8381101561282457818101518382015260200161280c565b83811115610dff5750506000910152565b60028104600182168061284957607f821691505b6020821081141561287157600080516020612929833981519152600052602260045260246000fd5b50919050565b600060001982141561288b5761288b6128a6565b5060010190565b6000826128a1576128a16128c3565b500690565b600080516020612929833981519152600052601160045260246000fd5b600080516020612929833981519152600052601260045260246000fd5b600080516020612929833981519152600052604160045260246000fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1981168114610c7f57600080fdfe4e487b7100000000000000000000000000000000000000000000000000000000a26469706673582212204be792fc57aaee86ea3fa35a511b3cae9831a35a5dcb775f4f507f1f39b5e60464736f6c63430008000033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000061048470000000000000000000000000000000000000000000000000000000000000000e546865204b69747479427574747300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054255545453000000000000000000000000000000000000000000000000000000