0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b62001ba41760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6144fa806200015c6000396000f3fe6080604052600436106103225760003560e01c80636d2575da116101a55780639c1fd55e116100ec578063d2c088bb11610095578063ef8b5f9a1161006f578063ef8b5f9a146108e6578063f2fde38b146108f9578063f4f72c1e14610919578063fe9937331461093957600080fd5b8063d2c088bb14610860578063dd62ed3e14610880578063eb91bb2c146108c657600080fd5b8063a7c057b7116100c6578063a7c057b71461081a578063a9059cbb1461082d578063beccbea31461084d57600080fd5b80639c1fd55e146107c35780639f23c5b8146107e3578063a457c2d7146107fa57600080fd5b80638456cb591161014e57806391b249af1161012857806391b249af1461077657806395d89b411461078d57806399ad68a7146107a257600080fd5b80638456cb59146107215780638cb1b89c146107365780638da5cb5b1461075857600080fd5b80637f32d3ee1161017f5780637f32d3ee146106ca578063825ee670146106ea5780638406c0791461070057600080fd5b80636d2575da1461065e57806370a082311461067f578063715018a6146106b557600080fd5b80633ad41eb6116102695780634349400e116102125780636548e9bc116101ec5780636548e9bc1461060657806368233eef146106265780636950701b1461063d57600080fd5b80634349400e146105ab5780634e0cd799146105d95780635c975abb146105ee57600080fd5b80633f4ba83a116102435780633f4ba83a146105615780634004197b14610576578063421715c21461058957600080fd5b80633ad41eb6146104f65780633d7d552d1461050d5780633ea387731461052d57600080fd5b806323b872dd116102cb578063378dc3dc116102a5578063378dc3dc14610487578063395093511461049e57806339e730ab146104be57600080fd5b806323b872dd1461043457806324fca4c414610454578063313ce5671461046b57600080fd5b80630e46cf91116102fc5780630e46cf91146103ab5780630e704d501461040957806318160ddd1461041157600080fd5b8063056097ac1461032e57806306fdde0314610350578063095ea7b31461037b57600080fd5b3661032957005b600080fd5b34801561033a57600080fd5b5061034e610349366004613cbe565b610950565b005b34801561035c57600080fd5b50610365610a9d565b6040516103729190613d1b565b60405180910390f35b34801561038757600080fd5b5061039b610396366004613d4e565b610b2f565b6040519015158152602001610372565b3480156103b757600080fd5b5061010c5461010d5461010e5461010f5461011054610111546103dc95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610372565b61034e610b49565b34801561041d57600080fd5b50610426610b69565b604051908152602001610372565b34801561044057600080fd5b5061039b61044f366004613d7a565b610b85565b34801561046057600080fd5b506104266101095481565b34801561047757600080fd5b5060405160128152602001610372565b34801561049357600080fd5b506104266101005481565b3480156104aa57600080fd5b5061039b6104b9366004613d4e565b610ba9565b3480156104ca57600080fd5b5060c9546104de906001600160a01b031681565b6040516001600160a01b039091168152602001610372565b34801561050257600080fd5b506104266101065481565b34801561051957600080fd5b50610426610528366004613dbb565b610be8565b34801561053957600080fd5b506104267f010e13e50cb99b6b3c8270ec6e16acfccbe1164a629d74b43549567a77593aff81565b34801561056d57600080fd5b5061034e610c07565b61034e610584366004613df5565b610c17565b34801561059557600080fd5b5061010a5461039b90600160a01b900460ff1681565b3480156105b757600080fd5b506105cb6105c6366004613e19565b610d64565b604051610372929190613e73565b3480156105e557600080fd5b50610426600181565b3480156105fa57600080fd5b5060655460ff1661039b565b34801561061257600080fd5b5061034e610621366004613e91565b610de3565b34801561063257600080fd5b5061042661010b5481565b34801561064957600080fd5b50610103546104de906001600160a01b031681565b34801561066a57600080fd5b50610104546104de906001600160a01b031681565b34801561068b57600080fd5b5061042661069a366004613e91565b6001600160a01b0316600090815260ca602052604090205490565b3480156106c157600080fd5b5061034e610e40565b3480156106d657600080fd5b5061034e6106e5366004613d4e565b610e52565b3480156106f657600080fd5b5061042660ff5481565b34801561070c57600080fd5b5061010a546104de906001600160a01b031681565b34801561072d57600080fd5b5061034e610e81565b34801561074257600080fd5b5061074b610e91565b6040516103729190613eae565b34801561076457600080fd5b506033546001600160a01b03166104de565b34801561078257600080fd5b506104266101025481565b34801561079957600080fd5b50610365610f0f565b3480156107ae57600080fd5b50610105546104de906001600160a01b031681565b3480156107cf57600080fd5b5061034e6107de366004613ec8565b610f1e565b3480156107ef57600080fd5b506104266101075481565b34801561080657600080fd5b5061039b610815366004613d4e565b610f2c565b61034e610828366004613ee1565b610fdb565b34801561083957600080fd5b5061039b610848366004613d4e565b6111b4565b61034e61085b366004613ec8565b6111c2565b34801561086c57600080fd5b5061034e61087b366004613ec8565b6111f3565b34801561088c57600080fd5b5061042661089b366004613cbe565b6001600160a01b03918216600090815260cb6020908152604080832093909416825291909152205490565b3480156108d257600080fd5b5061034e6108e1366004613e91565b61128f565b61034e6108f4366004613faa565b6112b2565b34801561090557600080fd5b5061034e610914366004613e91565b6117b9565b34801561092557600080fd5b50610426610934366004613ec8565b611846565b34801561094557600080fd5b506104266101085481565b610958611bb3565b6001600160a01b0382166109a0576040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561099b573d6000803e3d6000fd5b505050565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a0823190602401602060405180830381865afa1580156109ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a129190614010565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b9190614029565b5050565b606060cd8054610aac90614046565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad890614046565b8015610b255780601f10610afa57610100808354040283529160200191610b25565b820191906000526020600020905b815481529060010190602001808311610b0857829003601f168201915b5050505050905090565b600033610b3d818585611c0d565b60019150505b92915050565b610b51611bb3565b61010554610b67906001600160a01b0316611d65565b565b60006001610b7660cc5490565b610b809190614096565b905090565b600033610b93858285612125565b610b9e8585856121b1565b506001949350505050565b33600081815260cb602090815260408083206001600160a01b0387168452909152812054909190610b3d9082908690610be39087906140a9565b611c0d565b600082610bf583866140bc565b610bff91906140d3565b949350505050565b610c0f611bb3565b610b676123a5565b6040805160c08101825261010c54815261010d54602082015261010e549181019190915261010f5460608201526101105460808201526101115460a0820152818015610c67575061010b54815114155b15610c9e576040517f60e8ea8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81610ce95761010b54610cb29060016140a9565b815114610cd257604051636344fe2360e11b815260040160405180910390fd5b61010b8054906000610ce3836140f5565b91905055505b610a99610102547f010e13e50cb99b6b3c8270ec6e16acfccbe1164a629d74b43549567a77593aff610d5e6040518060c0016040528086600001518152602001866020015181526020018660400151815260200186606001518152602001866080015181526020018660a001518152506123f7565b346125f4565b60008086610d7757506002905083610dd9565b6000610d8287611846565b905085811015610da15760029250610d9a8187614096565b9150610dd7565b85811115610dce576000610db6878787610be8565b600194509050610dc68189614096565b925050610dd7565b60009250600091505b505b9550959350505050565b610deb611bb3565b61010a80546001600160a01b0319166001600160a01b0383169081179091556040519081527fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc9060200160405180910390a150565b610e48611bb3565b610b67600061268d565b610e5a611bb3565b6101075561010480546001600160a01b0319166001600160a01b0392909216919091179055565b610e89611bb3565b610b676126df565b60fc546040516321e3780160e01b81523060048201526000916001600160a01b0316906321e3780190602401602060405180830381865afa158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe9190614010565b6004811115610b8057610b80613e5d565b606060ce8054610aac90614046565b610f26611bb3565b61010255565b33600081815260cb602090815260408083206001600160a01b038716845290915281205490919083811015610fce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610b9e8286868403611c0d565b600054610100900460ff1615808015610ffb5750600054600160ff909116105b806110155750303b158015611015575060005460ff166001145b6110875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610fc5565b6000805460ff1916600117905580156110aa576000805461ff0019166101001790555b6110b261271c565b6110ba61278f565b60c980546001600160a01b0319166001600160a01b038b161790556110e18c8c8c87612802565b61010a805461010380546001600160a01b038c81166001600160a01b0319928316179092556101068b905561010480548b8416908316179055610107899055610105805487841692169190911790557fffffffffffffffffffffff00000000000000000000000000000000000000000090911690851617600160a01b17905580156111a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b600033610b3d8185856121b1565b6111ca611bb3565b6000806111d56128c4565b61010554919350915061099b906001600160a01b03168383866129da565b6111fb611bb3565b61010554610104546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af115801561126b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190614029565b611297611bb3565b610105546112af9082906001600160a01b0316612cd6565b50565b6112ba612eac565b6112c2612f05565b61010b548435906112d49060016140a9565b146112f257604051636344fe2360e11b815260040160405180910390fd5b61010a546001600160a01b03163314611337576040517fc64891a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101025461135b8161135661135136899003890189614124565b612f58565b613083565b81156113735761137385602001358660400135613111565b600061137d610e91565b9050600181600481111561139357611393613e5d565b146113a9576113a2868661314d565b50506117a9565b61010a5460fc54604051632e46be5f60e21b81523060048201526000928392600160a01b90910460ff1691839182916001600160a01b039091169063b91af97c90602401608060405180830381865afa15801561140a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142e9190614180565b5050915091508161143d610b69565b1415801561144f575060008b60200135115b156114ca5782156114885761010a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055600092505b604080518c35815260208d81013590820181905295507f5da28e5ac24a3c9921690f0de36f9b201ff9efb3d47ecad1daf47761bf8587f8910160405180910390a15b6000806114e2858e602001358f604001358787610d64565b909250905060018260028111156114fb576114fb613e5d565b1480156115055750845b8015611515575060008d60200135115b15611550576000611526828d613252565b905061153660408f0135826140a9565b9750818e602001356115489190614096565b9650506115d6565b600282600281111561156457611564613e5d565b148015611575575060008d60400135115b156115c75760006115858261342e565b905085611593576000611599565b8d602001355b6115a390826140a9565b6115ad90886140a9565b9650818e604001356115bf9190614096565b9750506115d6565b8c6020013595508c6040013596505b86156115f557610104546115f5906001600160a01b03168a898f613595565b85156116285761162861010360009054906101000a90046001600160a01b03168a888f8a61162391906140a9565b613595565b60fc54604051632e46be5f60e21b81523060048201526001600160a01b039091169063b91af97c90602401608060405180830381865afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190614180565b909150905050809450506040518060c001604052808e600001358152602001888152602001610100546116c5610b69565b6116cf9190614096565b815260200161010054866116e39190614096565b815260208082018990526000604092830152825161010c5582015161010d5581015161010e55606081015161010f5560808101516101105560a0015161011155610100547f5dd47cb83ee01578375abce18ce70bf39b73b5069a8f0023ace58b54238be037908e35908990611756610b69565b6117609190614096565b6101005461176e9089614096565b60408051948552602085019390935291830152606082015260808101889052600060a082015260c00160405180910390a15050505050505050505b6117b36001609755565b50505050565b6117c1611bb3565b6001600160a01b03811661183d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610fc5565b6112af8161268d565b60fc54604080517f741bef1a00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316918391839163741bef1a9160048083019260209291908290030181865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d191906141b6565b6001600160a01b0316630fdb11cf6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119349190614010565b6040516321e3780160e01b81523060048201529091506001600160a01b038316906321e3780190602401602060405180830381865afa15801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199f9190614010565b600103611a50576040517fd293c710000000000000000000000000000000000000000000000000000000008152306004820152602481018290526000906001600160a01b0384169063d293c71090604401602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190614010565b905080611a3e83876140bc565b611a4891906140d3565b935050611a7f565b60ff54680ad78ebc5ac620000090611a6883876140bc565b611a7291906140d3565b611a7c9190614096565b92505b6040517f4e443d9e000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03831690634e443d9e90602401602060405180830381865afa158015611add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b019190614029565b611b9d576000826001600160a01b03166366ca4a216040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b699190614010565b9050611b7d81670de0b6b3a76400006140a9565b611b8f85670de0b6b3a76400006140bc565b611b9991906140d3565b9350505b5050919050565b6001600160a01b03163b151590565b6033546001600160a01b03163314610b675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fc5565b6001600160a01b038316611c885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b038216611d045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b03838116600081815260cb602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33600081815260ca6020526040902054611d7d610b69565b8114611db5576040517f73c6573600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dbf828261361d565b60fc546040516321e3780160e01b81523060048201526000916001600160a01b0316906321e3780190602401602060405180830381865afa158015611e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c9190614010565b6004811115611e3d57611e3d613e5d565b90506001816004811115611e5357611e53613e5d565b0361202f5760fc54604051632e46be5f60e21b81523060048201526000916001600160a01b03169063b91af97c90602401608060405180830381865afa158015611ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec59190614180565b5050509050846001600160a01b03166323b872dd8530680ad78ebc5ac620000085611ef09190614096565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f809190614029565b611fc1576040517f39f1c8d90000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602401610fc5565b60fe60009054906101000a90046001600160a01b03166001600160a01b0316630e704d506040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561201157600080fd5b505af1158015612025573d6000803e3d6000fd5b50505050506120e9565b600481600481111561204357612043613e5d565b14806120605750600381600481111561205e5761205e613e5d565b145b156120e9576101015460ff166120dd5760fe60009054906101000a90046001600160a01b03166001600160a01b0316636f0b0c1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156120c057600080fd5b505af11580156120d4573d6000803e3d6000fd5b505050506120e9565b610101805460ff191690555b6040516001600160a01b038416904780156108fc02916000818181858888f1935050505015801561211e573d6000803e3d6000fd5b5050505050565b6001600160a01b03838116600090815260cb602090815260408083209386168352929052205460001981146117b357818110156121a45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610fc5565b6117b38484848403611c0d565b6001600160a01b03831661222d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b0382166122a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b038316600090815260ca6020526040902054818110156123385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b03808516600081815260ca602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123989086815260200190565b60405180910390a36117b3565b6123ad613788565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b606060008061240984600001516137da565b9150915060008061241d86602001516137da565b9150915060008061243188608001516137da565b915091506000806124458a604001516137da565b915091506000806124598c606001516137da565b60408051600b80825261018082019092529294509092506020820161016080368337019050509a50898b600081518110612495576124956141d3565b602002602001018181525050888b6001815181106124b5576124b56141d3565b602002602001018181525050878b6002815181106124d5576124d56141d3565b602002602001018181525050868b6003815181106124f5576124f56141d3565b602002602001018181525050838b600481518110612515576125156141d3565b602002602001018181525050828b600581518110612535576125356141d3565b602002602001018181525050818b600681518110612555576125556141d3565b602002602001018181525050808b600781518110612575576125756141d3565b602002602001018181525050858b600881518110612595576125956141d3565b602002602001018181525050848b6009815181106125b5576125b56141d3565b6020026020010181815250508b60a001518b600a815181106125d9576125d96141d3565b60200260200101818152505050505050505050505050919050565b60c9546040517f3e3aa6c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633e3aa6c590839061264390889088908890600401614224565b604080518083038185885af1158015612660573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612685919061424c565b505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6126e7612f05565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123da3390565b600054610100900460ff166127875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b610b67613804565b600054610100900460ff166127fa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b610b6761387b565b6128686040518060400160405280600981526020017f54726f7665446562740000000000000000000000000000000000000000000000815250612844836138ef565b6040516020016128549190614270565b60405160208183030381529060405261398f565b60fc80546001600160a01b038087166001600160a01b03199283161790925560fd805486841690831617905560fe8054928516929091169190911790556128b681662386f26fc100006140bc565b60ff556117b3306001613a04565b60fd546040517fb72703ac00000000000000000000000000000000000000000000000000000000815230600482015260009182916001600160a01b0390911690819063b72703ac90602401602060405180830381865afa15801561292c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295091906141b6565b6040517f765e01590000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0383169063765e015990602401602060405180830381865afa1580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d191906141b6565b92509250509091565b60fc546001600160a01b03166129ee610b69565b15612a25576040517f5a99cfb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a3034611846565b604051632e46be5f60e21b81523060048201529091506000906001600160a01b0384169063b91af97c90602401608060405180830381865afa158015612a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9e9190614180565b505060fe546040517f860665b300000000000000000000000000000000000000000000000000000000815260048101889052602481018690526001600160a01b038a81166044830152898116606483015293945092169163860665b3915034906084016000604051808303818588803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051632e46be5f60e21b8152306004820152600093506001600160a01b038716925063b91af97c9150602401608060405180830381865afa158015612b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9e9190614180565b50506040516370a0823160e01b8152306004820152919250506001600160a01b0389169063a9059cbb90339060019084906370a0823190602401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614010565b612c239190614096565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa9190614029565b50612cb58282614096565b61010055612ccc33612cc78484614096565b613a04565b5050505050505050565b60fc54604051632e46be5f60e21b815230600482015260009182916001600160a01b039091169063b91af97c90602401608060405180830381865afa158015612d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d479190614180565b50506040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905291935091506001600160a01b038416906323b872dd906064016020604051808303816000875af1158015612dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dde9190614029565b50600080612dea6128c4565b60fe54604051630635367960e51b8152600060048201819052602482018890526044820189905260648201526001600160a01b03808516608483015280841660a4830152939550919350919091169063c6a6cf209060c401600060405180830381600087803b158015612e5c57600080fd5b505af1158015612e70573d6000803e3d6000fd5b50506040514792506001600160a01b038916915082156108fc029083906000818181858888f19350505050158015612ccc573d6000803e3d6000fd5b600260975403612efe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610fc5565b6002609755565b60655460ff1615610b675760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610fc5565b6060600080612f6a84600001516137da565b91509150600080612f7e86602001516137da565b91509150600080612f9288604001516137da565b60408051600680825260e082019092529294509092506020820160c0803683370190505096508587600081518110612fcc57612fcc6141d3565b6020026020010181815250508487600181518110612fec57612fec6141d3565b602002602001018181525050838760028151811061300c5761300c6141d3565b602002602001018181525050828760038151811061302c5761302c6141d3565b602002602001018181525050818760048151811061304c5761304c6141d3565b602002602001018181525050808760058151811061306c5761306c6141d3565b602002602001018181525050505050505050919050565b60c9546040517f2c9dd5c00000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632c9dd5c0906130ce90859085906004016142b5565b6020604051808303816000875af11580156130ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b9190614010565b811561312f576101035461312f906001600160a01b03163084613ac5565b8015610a995761010454610a99906001600160a01b03163083613ac5565b610102546040830135156131785761010454613178906001600160a01b031682604086013585613595565b6020830135156131a357610103546131a3906001600160a01b031682602086013561162386826140a9565b6040805160c0808201835285358083526000602080850182905284860182905260608086018390526080808701849052600160a097880181905261010c86905561010d85905561010e85905561010f8590556101108590556101118190558851958652928501849052968401839052830182905294820152918201929092527f5dd47cb83ee01578375abce18ce70bf39b73b5069a8f0023ace58b54238be037910160405180910390a1505050565b60fc546000906001600160a01b031661326a84611846565b604051632e46be5f60e21b81523060048201529092506000906001600160a01b0383169063b91af97c90602401608060405180830381865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d89190614180565b50505090506000806132e86128c4565b60fe54604051630635367960e51b815267ffffffffffffffff8a1660048201526000602482015260448101899052600160648201526001600160a01b03808516608483015280841660a4830152939550919350919091169063c6a6cf2090899060c4016000604051808303818588803b15801561336457600080fd5b505af1158015613378573d6000803e3d6000fd5b5050604051632e46be5f60e21b8152306004820152600093506001600160a01b038816925063b91af97c9150602401608060405180830381865afa1580156133c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e89190614180565b50505090506000846133f8610b69565b6134028785614096565b61340c91906140bc565b61341691906140d3565b90506134223082613a04565b50505050505092915050565b60fc54604051632e46be5f60e21b8152306004820152600091829182916001600160a01b03169063b91af97c90602401608060405180830381865afa15801561347b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349f9190614180565b50509150915060006134af610b69565b90506000836134be83886140bc565b6134c891906140d3565b905060006134d7878686610be8565b90506000806134e46128c4565b60fe54604051630635367960e51b815260006004820181905260248201889052604482018e905260648201526001600160a01b03808516608483015280841660a48301529395509193504792169063c6a6cf209060c401600060405180830381600087803b15801561355557600080fd5b505af1158015613569573d6000803e3d6000fd5b5047925061357b915083905082614096565b9950613587308761361d565b505050505050505050919050565b81156117b3576040517fe2bbb15800000000000000000000000000000000000000000000000000000000815260048101839052602481018490526001600160a01b0385169063e2bbb1589083906044016000604051808303818588803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b505050505050505050565b6001600160a01b0382166136995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b038216600090815260ca6020526040902054818110156137285760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610fc5565b6001600160a01b038316600081815260ca60209081526040808320868603905560cc80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60655460ff16610b675760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610fc5565b60008060016137eb608060026143b2565b6137f59190614096565b83169360809390931c92915050565b600054610100900460ff1661386f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b6065805460ff19169055565b600054610100900460ff166138e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b610b673361268d565b606060006138fc83613b43565b600101905060008167ffffffffffffffff81111561391c5761391c61410e565b6040519080825280601f01601f191660200182016040528015613946576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461395057509392505050565b600054610100900460ff166139fa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b610a998282613c25565b6001600160a01b038216613a5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610fc5565b8060cc6000828254613a6c91906140a9565b90915550506001600160a01b038216600081815260ca60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040517ef714ce000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03838116602483015284169062f714ce90604401600060405180830381600087803b158015613b2657600080fd5b505af1158015613b3a573d6000803e3d6000fd5b50505050505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613b8c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613bb8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613bd657662386f26fc10000830492506010015b6305f5e1008310613bee576305f5e100830492506008015b6127108310613c0257612710830492506004015b60648310613c14576064830492506002015b600a8310610b435760010192915050565b600054610100900460ff16613c905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610fc5565b60cd613c9c8382614404565b5060ce61099b8282614404565b6001600160a01b03811681146112af57600080fd5b60008060408385031215613cd157600080fd5b8235613cdc81613ca9565b91506020830135613cec81613ca9565b809150509250929050565b60005b83811015613d12578181015183820152602001613cfa565b50506000910152565b6020815260008251806020840152613d3a816040850160208701613cf7565b601f01601f19169190910160400192915050565b60008060408385031215613d6157600080fd5b8235613d6c81613ca9565b946020939093013593505050565b600080600060608486031215613d8f57600080fd5b8335613d9a81613ca9565b92506020840135613daa81613ca9565b929592945050506040919091013590565b600080600060608486031215613dd057600080fd5b505081359360208301359350604090920135919050565b80151581146112af57600080fd5b600060208284031215613e0757600080fd5b8135613e1281613de7565b9392505050565b600080600080600060a08688031215613e3157600080fd5b8535613e3c81613de7565b97602087013597506040870135966060810135965060800135945092505050565b634e487b7160e01b600052602160045260246000fd5b6040810160038410613e8757613e87613e5d565b9281526020015290565b600060208284031215613ea357600080fd5b8135613e1281613ca9565b6020810160058310613ec257613ec2613e5d565b91905290565b600060208284031215613eda57600080fd5b5035919050565b60008060008060008060008060008060006101608c8e031215613f0357600080fd5b8b35613f0e81613ca9565b9a5060208c0135613f1e81613ca9565b995060408c0135613f2e81613ca9565b985060608c0135613f3e81613ca9565b975060808c0135613f4e81613ca9565b965060a08c0135955060c08c0135613f6581613ca9565b945060e08c013593506101008c013592506101208c0135613f8581613ca9565b91506101408c0135613f9681613ca9565b809150509295989b509295989b9093969950565b60008060008084860360c0811215613fc157600080fd5b6060811215613fcf57600080fd5b5084935060608501359250608085013567ffffffffffffffff81168114613ff557600080fd5b915060a085013561400581613de7565b939692955090935050565b60006020828403121561402257600080fd5b5051919050565b60006020828403121561403b57600080fd5b8151613e1281613de7565b600181811c9082168061405a57607f821691505b60208210810361407a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4357610b43614080565b80820180821115610b4357610b43614080565b8082028115828204841417610b4357610b43614080565b6000826140f057634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161410757614107614080565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561413657600080fd5b6040516060810181811067ffffffffffffffff821117156141595761415961410e565b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000806000806080858703121561419657600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000602082840312156141c857600080fd5b8151613e1281613ca9565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614219578151875295820195908201906001016141fd565b509495945050505050565b83815282602082015260606040820152600061424360608301846141e9565b95945050505050565b6000806040838503121561425f57600080fd5b505080516020909101519092909150565b7f54442d00000000000000000000000000000000000000000000000000000000008152600082516142a8816003850160208701613cf7565b9190910160030192915050565b828152604060208201526000610bff60408301846141e9565b600181815b808511156143095781600019048211156142ef576142ef614080565b808516156142fc57918102915b93841c93908002906142d3565b509250929050565b60008261432057506001610b43565b8161432d57506000610b43565b8160018114614343576002811461434d57614369565b6001915050610b43565b60ff84111561435e5761435e614080565b50506001821b610b43565b5060208310610133831016604e8410600b841016171561438c575081810a610b43565b61439683836142ce565b80600019048211156143aa576143aa614080565b029392505050565b6000613e128383614311565b601f82111561099b57600081815260208120601f850160051c810160208610156143e55750805b601f850160051c820191505b81811015612685578281556001016143f1565b815167ffffffffffffffff81111561441e5761441e61410e565b6144328161442c8454614046565b846143be565b602080601f831160018114614467576000841561444f5750858301515b600019600386901b1c1916600185901b178555612685565b600085815260208120601f198616915b8281101561449657888601518255948401946001909101908401614477565b50858210156144b45787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212209ab898c9671f808f029df6e84f9adee6b9bab666cac845f54d3919cebead35fd64736f6c63430008110033