60806040523480156200001157600080fd5b50604051620046ef380380620046ef833981810160405281019062000037919062000281565b6040518060400160405280601081526020017f417065496e202b2050616e676f6c696e000000000000000000000000000000008152506040518060400160405280600681526020017f41504550414e00000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb92919062000148565b508060019080519060200190620000d492919062000148565b50505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c8190555082600b8190555080600f90805190602001906200013e92919062000148565b5050505062000445565b828054620001569062000397565b90600052602060002090601f0160209004810192826200017a5760008555620001c6565b82601f106200019557805160ff1916838001178555620001c6565b82800160010185558215620001c6579182015b82811115620001c5578251825591602001919060010190620001a8565b5b509050620001d59190620001d9565b5090565b5b80821115620001f4576000816000905550600101620001da565b5090565b60006200020f620002098462000324565b620002f0565b9050828152602081018484840111156200022857600080fd5b6200023584828562000361565b509392505050565b600082601f8301126200024f57600080fd5b815162000261848260208601620001f8565b91505092915050565b6000815190506200027b816200042b565b92915050565b6000806000606084860312156200029757600080fd5b6000620002a7868287016200026a565b9350506020620002ba868287016200026a565b925050604084015167ffffffffffffffff811115620002d857600080fd5b620002e6868287016200023d565b9150509250925092565b6000604051905081810181811067ffffffffffffffff821117156200031a5762000319620003fc565b5b8060405250919050565b600067ffffffffffffffff821115620003425762000341620003fc565b5b601f19601f8301169050602081019050919050565b6000819050919050565b60005b838110156200038157808201518184015260208101905062000364565b8381111562000391576000848401525b50505050565b60006002820490506001821680620003b057607f821691505b60208210811415620003c757620003c6620003cd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004368162000357565b81146200044257600080fd5b50565b61429a80620004556000396000f3fe6080604052600436106101805760003560e01c8063431f63c9116100d157806395652cfa1161008a578063b88d4fde11610064578063b88d4fde14610580578063c87b56dd146105a9578063e985e9c5146105e6578063ff186b2e1461062357610180565b806395652cfa1461050357806395d89b411461052c578063a22cb4651461055757610180565b8063431f63c9146103bd5780634f6ccce7146103e6578063582ed8e9146104235780636352211e1461044c57806370a082311461048957806384ba3f69146104c657610180565b8063095ea7b31161013e57806323b872dd1161011857806323b872dd146103055780632f745c591461032e5780633f5160181461036b57806342842e0e1461039457610180565b8063095ea7b3146102a75780630ad641f1146102d057806318160ddd146102da57610180565b80629f92621461018557806301ffc9a7146101ae57806302d05d3f146101eb57806306fdde0314610216578063081812fc14610241578063082c37831461027e575b600080fd5b34801561019157600080fd5b506101ac60048036038101906101a79190612fa5565b61064e565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190612f12565b6106e8565b6040516101e29190613a9e565b60405180910390f35b3480156101f757600080fd5b50610200610762565b60405161020d91906139d7565b60405180910390f35b34801561022257600080fd5b5061022b610788565b6040516102389190613ab9565b60405180910390f35b34801561024d57600080fd5b5061026860048036038101906102639190612fa5565b61081a565b60405161027591906139bc565b60405180910390f35b34801561028a57600080fd5b506102a560048036038101906102a09190612fa5565b61089f565b005b3480156102b357600080fd5b506102ce60048036038101906102c99190612ead565b610939565b005b6102d8610a51565b005b3480156102e657600080fd5b506102ef610bb6565b6040516102fc9190613dfb565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612da7565b610bc3565b005b34801561033a57600080fd5b5061035560048036038101906103509190612ead565b610c23565b6040516103629190613dfb565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612d42565b610cc8565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612da7565b610d9c565b005b3480156103c957600080fd5b506103e460048036038101906103df9190612ead565b610dbc565b005b3480156103f257600080fd5b5061040d60048036038101906104089190612fa5565b610e94565b60405161041a9190613dfb565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612d19565b610f2b565b005b34801561045857600080fd5b50610473600480360381019061046e9190612fa5565b6111be565b60405161048091906139bc565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190612d19565b611270565b6040516104bd9190613dfb565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190612d19565b611328565b6040516104fa9190613dfb565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190612f64565b611340565b005b34801561053857600080fd5b506105416113ea565b60405161054e9190613ab9565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190612e71565b61147c565b005b34801561058c57600080fd5b506105a760048036038101906105a29190612df6565b6115fd565b005b3480156105b557600080fd5b506105d060048036038101906105cb9190612fa5565b61165f565b6040516105dd9190613ab9565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190612d6b565b611706565b60405161061a9190613a9e565b60405180910390f35b34801561062f57600080fd5b5061063861179a565b6040516106459190613dfb565b60405180910390f35b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d590613cbb565b60405180910390fd5b80600c8190555050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075b575061075a826117a0565b5b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000805461079790614078565b80601f01602080910402602001604051908101604052809291908181526020018280546107c390614078565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b600061082582611882565b610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90613cfb565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092690613cbb565b60405180910390fd5b80600b8190555050565b6000610944826111be565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90613d5b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109d46118ee565b73ffffffffffffffffffffffffffffffffffffffff161480610a035750610a02816109fd6118ee565b611706565b5b610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990613c5b565b60405180910390fd5b610a4c83836118f6565b505050565b6000600c5411610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90613b5b565b60405180910390fd5b600c54341015610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290613c3b565b60405180910390fd5b610ae3610bb6565b600b5411610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613bfb565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600c549081150290604051600060405180830381858888f19350505050158015610b90573d6000803e3d6000fd5b50610b9b600a6119af565b6000610ba7600a6119c5565b9050610bb333826119d3565b50565b6000600880549050905090565b610bd4610bce6118ee565b82611ba1565b610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a90613d7b565b60405180910390fd5b610c1e838383611c7f565b505050565b6000610c2e83611270565b8210610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690613afb565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613cbb565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610db7838383604051806020016040528060008152506115fd565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613cbb565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000610e9e610bb6565b8210610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690613dbb565b60405180910390fd5b60088281548110610f19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613c1b565b60405180910390fd5b6000819050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161102d9291906139f2565b60206040518083038186803b15801561104557600080fd5b505afa158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190612fce565b10156110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590613adb565b60405180910390fd5b6110c6610bb6565b600b5411611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613bfb565b60405180910390fd5b61119733600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548473ffffffffffffffffffffffffffffffffffffffff16611edb909392919063ffffffff16565b6111a1600a6119af565b60006111ad600a6119c5565b90506111b933826119d3565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613c9b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890613c7b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d6020528060005260406000206000915090505481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790613cbb565b60405180910390fd5b80600f90805190602001906113e6929190612afe565b5050565b6060600180546113f990614078565b80601f016020809104026020016040519081016040528092919081815260200182805461142590614078565b80156114725780601f1061144757610100808354040283529160200191611472565b820191906000526020600020905b81548152906001019060200180831161145557829003601f168201915b5050505050905090565b6114846118ee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613b9b565b60405180910390fd5b80600560006114ff6118ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115ac6118ee565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115f19190613a9e565b60405180910390a35050565b61160e6116086118ee565b83611ba1565b61164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490613d7b565b60405180910390fd5b61165984848484611f64565b50505050565b606061166a82611882565b6116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090613d3b565b60405180910390fd5b60006116b3611fc0565b905060008151116116d357604051806020016040528060008152506116fe565b806116dd84612052565b6040516020016116ee929190613998565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c5481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061186b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061187b575061187a826121ff565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611969836111be565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a90613cdb565b60405180910390fd5b611a4c81611882565b15611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613b3b565b60405180910390fd5b611a9860008383612269565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ae89190613ef5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611bac82611882565b611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290613bdb565b60405180910390fd5b6000611bf6836111be565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c6557508373ffffffffffffffffffffffffffffffffffffffff16611c4d8461081a565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c765750611c758185611706565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c9f826111be565b73ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613d1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613b7b565b60405180910390fd5b611d70838383612269565b611d7b6000826118f6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dcb9190613f7c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e229190613ef5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611f5e846323b872dd60e01b858585604051602401611efc93929190613a1b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061237d565b50505050565b611f6f848484611c7f565b611f7b84848484612444565b611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190613b1b565b60405180910390fd5b50505050565b6060600f8054611fcf90614078565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb90614078565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b5050505050905090565b6060600082141561209a576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121fa565b600082905060005b600082146120cc5780806120b5906140aa565b915050600a826120c59190613f4b565b91506120a2565b60008167ffffffffffffffff81111561210e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121405781602001600182028036833780820191505090505b5090505b600085146121f3576001826121599190613f7c565b9150600a8561216891906140f3565b60306121749190613ef5565b60f81b8183815181106121b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121ec9190613f4b565b9450612144565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6122748383836125db565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b7576122b2816125e0565b6122f6565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122f5576122f48382612629565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123395761233481612796565b612378565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123775761237682826128d9565b5b5b505050565b60006123df826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129589092919063ffffffff16565b905060008151111561243f57808060200190518101906123ff9190612ee9565b61243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590613ddb565b60405180910390fd5b5b505050565b60006124658473ffffffffffffffffffffffffffffffffffffffff16612970565b156125ce578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261248e6118ee565b8786866040518563ffffffff1660e01b81526004016124b09493929190613a52565b602060405180830381600087803b1580156124ca57600080fd5b505af19250505080156124fb57506040513d601f19601f820116820180604052508101906124f89190612f3b565b60015b61257e573d806000811461252b576040519150601f19603f3d011682016040523d82523d6000602084013e612530565b606091505b50600081511415612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d90613b1b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125d3565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161263684611270565b6126409190613f7c565b9050600060076000848152602001908152602001600020549050818114612725576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127aa9190613f7c565b9050600060096000848152602001908152602001600020549050600060088381548110612800577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612848577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806128bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006128e483611270565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60606129678484600085612983565b90509392505050565b600080823b905060008111915050919050565b6060824710156129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90613bbb565b60405180910390fd5b6129d185612970565b612a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0790613d9b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a399190613981565b60006040518083038185875af1925050503d8060008114612a76576040519150601f19603f3d011682016040523d82523d6000602084013e612a7b565b606091505b5091509150612a8b828286612a97565b92505050949350505050565b60608315612aa757829050612af7565b600083511115612aba5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee9190613ab9565b60405180910390fd5b9392505050565b828054612b0a90614078565b90600052602060002090601f016020900481019282612b2c5760008555612b73565b82601f10612b4557805160ff1916838001178555612b73565b82800160010185558215612b73579182015b82811115612b72578251825591602001919060010190612b57565b5b509050612b809190612b84565b5090565b5b80821115612b9d576000816000905550600101612b85565b5090565b6000612bb4612baf84613e47565b613e16565b905082815260208101848484011115612bcc57600080fd5b612bd7848285614036565b509392505050565b6000612bf2612bed84613e77565b613e16565b905082815260208101848484011115612c0a57600080fd5b612c15848285614036565b509392505050565b600081359050612c2c816141f1565b92915050565b600081359050612c4181614208565b92915050565b600081359050612c568161421f565b92915050565b600081519050612c6b8161421f565b92915050565b600081359050612c8081614236565b92915050565b600081519050612c9581614236565b92915050565b600082601f830112612cac57600080fd5b8135612cbc848260208601612ba1565b91505092915050565b600082601f830112612cd657600080fd5b8135612ce6848260208601612bdf565b91505092915050565b600081359050612cfe8161424d565b92915050565b600081519050612d138161424d565b92915050565b600060208284031215612d2b57600080fd5b6000612d3984828501612c1d565b91505092915050565b600060208284031215612d5457600080fd5b6000612d6284828501612c32565b91505092915050565b60008060408385031215612d7e57600080fd5b6000612d8c85828601612c1d565b9250506020612d9d85828601612c1d565b9150509250929050565b600080600060608486031215612dbc57600080fd5b6000612dca86828701612c1d565b9350506020612ddb86828701612c1d565b9250506040612dec86828701612cef565b9150509250925092565b60008060008060808587031215612e0c57600080fd5b6000612e1a87828801612c1d565b9450506020612e2b87828801612c1d565b9350506040612e3c87828801612cef565b925050606085013567ffffffffffffffff811115612e5957600080fd5b612e6587828801612c9b565b91505092959194509250565b60008060408385031215612e8457600080fd5b6000612e9285828601612c1d565b9250506020612ea385828601612c47565b9150509250929050565b60008060408385031215612ec057600080fd5b6000612ece85828601612c1d565b9250506020612edf85828601612cef565b9150509250929050565b600060208284031215612efb57600080fd5b6000612f0984828501612c5c565b91505092915050565b600060208284031215612f2457600080fd5b6000612f3284828501612c71565b91505092915050565b600060208284031215612f4d57600080fd5b6000612f5b84828501612c86565b91505092915050565b600060208284031215612f7657600080fd5b600082013567ffffffffffffffff811115612f9057600080fd5b612f9c84828501612cc5565b91505092915050565b600060208284031215612fb757600080fd5b6000612fc584828501612cef565b91505092915050565b600060208284031215612fe057600080fd5b6000612fee84828501612d04565b91505092915050565b61300081613fc2565b82525050565b61300f81613fb0565b82525050565b61301e81613fd4565b82525050565b600061302f82613ea7565b6130398185613ebd565b9350613049818560208601614045565b613052816141e0565b840191505092915050565b600061306882613ea7565b6130728185613ece565b9350613082818560208601614045565b80840191505092915050565b600061309982613eb2565b6130a38185613ed9565b93506130b3818560208601614045565b6130bc816141e0565b840191505092915050565b60006130d282613eb2565b6130dc8185613eea565b93506130ec818560208601614045565b80840191505092915050565b6000613105601583613ed9565b91507f496e636f727265637420546f6b656e2056616c756500000000000000000000006000830152602082019050919050565b6000613145602b83613ed9565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b60006131ab603283613ed9565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000613211601c83613ed9565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000613251600f83613ed9565b91507f4554482049732044697361626c656400000000000000000000000000000000006000830152602082019050919050565b6000613291602483613ed9565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132f7601983613ed9565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613337602683613ed9565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061339d602c83613ed9565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613403601483613ed9565b91507f5370656369616c20536561736f6e20456e6465640000000000000000000000006000830152602082019050919050565b6000613443601183613ed9565b91507f546f6b656e204e6f7420416c6c6f7765640000000000000000000000000000006000830152602082019050919050565b6000613483601383613ed9565b91507f496e636f7272656374204554482056616c7565000000000000000000000000006000830152602082019050919050565b60006134c3603883613ed9565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613529602a83613ed9565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b600061358f602983613ed9565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006135f5601883613ed9565b91507f53656e646572206973206e6f7420612063726561746f722100000000000000006000830152602082019050919050565b6000613635602083613ed9565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000613675602c83613ed9565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006136db602983613ed9565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613741602f83613ed9565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b60006137a7602183613ed9565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061380d603183613ed9565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613873601d83613ed9565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006138b3602c83613ed9565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6000613919602a83613ed9565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b61397b8161402c565b82525050565b600061398d828461305d565b915081905092915050565b60006139a482856130c7565b91506139b082846130c7565b91508190509392505050565b60006020820190506139d16000830184613006565b92915050565b60006020820190506139ec6000830184612ff7565b92915050565b6000604082019050613a076000830185613006565b613a146020830184613006565b9392505050565b6000606082019050613a306000830186613006565b613a3d6020830185613006565b613a4a6040830184613972565b949350505050565b6000608082019050613a676000830187613006565b613a746020830186613006565b613a816040830185613972565b8181036060830152613a938184613024565b905095945050505050565b6000602082019050613ab36000830184613015565b92915050565b60006020820190508181036000830152613ad3818461308e565b905092915050565b60006020820190508181036000830152613af4816130f8565b9050919050565b60006020820190508181036000830152613b1481613138565b9050919050565b60006020820190508181036000830152613b348161319e565b9050919050565b60006020820190508181036000830152613b5481613204565b9050919050565b60006020820190508181036000830152613b7481613244565b9050919050565b60006020820190508181036000830152613b9481613284565b9050919050565b60006020820190508181036000830152613bb4816132ea565b9050919050565b60006020820190508181036000830152613bd48161332a565b9050919050565b60006020820190508181036000830152613bf481613390565b9050919050565b60006020820190508181036000830152613c14816133f6565b9050919050565b60006020820190508181036000830152613c3481613436565b9050919050565b60006020820190508181036000830152613c5481613476565b9050919050565b60006020820190508181036000830152613c74816134b6565b9050919050565b60006020820190508181036000830152613c948161351c565b9050919050565b60006020820190508181036000830152613cb481613582565b9050919050565b60006020820190508181036000830152613cd4816135e8565b9050919050565b60006020820190508181036000830152613cf481613628565b9050919050565b60006020820190508181036000830152613d1481613668565b9050919050565b60006020820190508181036000830152613d34816136ce565b9050919050565b60006020820190508181036000830152613d5481613734565b9050919050565b60006020820190508181036000830152613d748161379a565b9050919050565b60006020820190508181036000830152613d9481613800565b9050919050565b60006020820190508181036000830152613db481613866565b9050919050565b60006020820190508181036000830152613dd4816138a6565b9050919050565b60006020820190508181036000830152613df48161390c565b9050919050565b6000602082019050613e106000830184613972565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613e3d57613e3c6141b1565b5b8060405250919050565b600067ffffffffffffffff821115613e6257613e616141b1565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613e9257613e916141b1565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613f008261402c565b9150613f0b8361402c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f4057613f3f614124565b5b828201905092915050565b6000613f568261402c565b9150613f618361402c565b925082613f7157613f70614153565b5b828204905092915050565b6000613f878261402c565b9150613f928361402c565b925082821015613fa557613fa4614124565b5b828203905092915050565b6000613fbb8261400c565b9050919050565b6000613fcd8261400c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614063578082015181840152602081019050614048565b83811115614072576000848401525b50505050565b6000600282049050600182168061409057607f821691505b602082108114156140a4576140a3614182565b5b50919050565b60006140b58261402c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140e8576140e7614124565b5b600182019050919050565b60006140fe8261402c565b91506141098361402c565b92508261411957614118614153565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6141fa81613fb0565b811461420557600080fd5b50565b61421181613fc2565b811461421c57600080fd5b50565b61422881613fd4565b811461423357600080fd5b50565b61423f81613fe0565b811461424a57600080fd5b50565b6142568161402c565b811461426157600080fd5b5056fea2646970667358221220c688b96da608e159a11e9ffbe42ed5a2f162941d428eef30b07895a2a9304c9b64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002368747470733a2f2f70616e676f6c696e2e6170652e696e2f746f6b656e5f696e666f2f0000000000000000000000000000000000000000000000000000000000